如何在JavaScript中正确编写自执行函数?

时间:2013-08-04 14:13:47

标签: javascript

我对JavaScript比较陌生,我正在研究它,我开始使用这种具有自动执行功能的代码。

这是第一个:

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

这是第二个:

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

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

先生/女士,你的答案会有很大的帮助。谢谢++

1 个答案:

答案 0 :(得分:1)

两者都有效,但两者之间存在轻微的语义差异,我在the IIFE's tag wiki中解释如下:

  

除了两者之间存在轻微的语义差异(第一个评估为(IIFE的返回值),而第二个评估为(定义函数)< =(call))它们都是同等有效的,尽管着名JavaScript专家Douglas Crockford认为第二种符号是“错误的”和“不合逻辑的”。

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