0

我对 JavaScript 比较陌生,我目前正在研究它,我遇到了这种具有自执行功能的代码。

这是第一个:

(function(message){
    var myMessage = message;
    alert(myMessage);
})("hello");

这是第二个:

(function(message){
    var myMessage = message;
    alert(myMessage);
}("hello"));

它们都可以正常工作,但我只是想知道两者之间有什么区别以及何时应该使用其中一个。

先生/女士,您的回答会很有帮助。谢谢++

4

1 回答 1

1

两者都是有效的,尽管两者之间存在细微的语义差异,我在IIFE 的标签 wiki中解释如下:

除了两者之间存在细微的语义差异(第一个计算结果为(IIFE 的返回值),而第二个计算结果为(定义函数)<=(调用))之外,它们都同样有效,尽管著名的 JavaScript 专家 Douglas Crockford认为第二种表示法是“错误的”和“不合逻辑的”。

换句话说,两者都是正确的,但是因为两者都将函数定义呈现为表达式,而不是语句,尽管第一个版本将函数的定义分组,然后调用该函数,而第二个版本定义了函数,调用它,然后将其返回值分组...

于 2013-08-04T14:16:54.760 回答