var a = function () {
return 'test';
}();
console.log(a);
第一种情况的答案:测试
var a = (function () {
return 'test';
})();
console.log(a);
第二种情况的答案:测试
我正在使用第一种方法来创建自动执行功能。但是,我也看到了第二种方法。这两种方法有什么不同吗?结果显然是一样的。
答案 0 :(得分:11)
第一种语法只有在将函数执行结果赋给变量时才有效。如果您只想执行该函数,则此表单将出现语法错误:
function(){
return 'test';
}();
另一种形式仍然有效:
(function(){
return 'test';
})();
因此,第二个版本更灵活,可以更一致地使用。
(第一种形式不是avoid ambiguities in the Javascript grammar的有效语法。)
答案 1 :(得分:1)
是的,第一个将变量a设置为匿名变量,而第二个将变量a设置为函数的结果。
编辑:我读错了第一个代码。答案是否定的。
答案 2 :(得分:0)
为了便于阅读,在括号中包装IIFE(立即调用函数表达式)是一种很好的做法(但不是必需的)。如果你的函数很长而且读者看不到结尾,那么左括号会引起读者注意这个函数表达式有一些特殊的事实,并迫使他们查看底部以找出它是什么。