我对JavaScript比较陌生,我正在研究它,我开始使用这种具有自动执行功能的代码。
这是第一个:
(function(message){
var myMessage = message;
alert(myMessage);
})("hello");
这是第二个:
(function(message){
var myMessage = message;
alert(myMessage);
}("hello"));
它们都正常工作,但我只是想知道两者之间的区别是什么,何时我应该使用另一个。
先生/女士,你的答案会有很大的帮助。谢谢++答案 0 :(得分:1)
两者都有效,但两者之间存在轻微的语义差异,我在the IIFE's tag wiki中解释如下:
除了两者之间存在轻微的语义差异(第一个评估为(IIFE的返回值),而第二个评估为(定义函数)< =(call))它们都是同等有效的,尽管着名JavaScript专家Douglas Crockford认为第二种符号是“错误的”和“不合逻辑的”。
换句话说,两者都是正确的,但是因为它们都将函数定义呈现为表达式而不是语句,尽管第一个版本对函数的定义进行了分组,然后调用该函数,而第二个版本定义了function,调用它,然后将其返回值分组......