是否有任何理由将匿名JavaScript函数包装在大括号中?

时间:2010-01-26 06:32:19

标签: javascript

var a = function () {
    return 'test';
}();

console.log(a);

第一种情况的答案:测试

var a = (function () {
    return 'test';
})();

console.log(a);

第二种情况的答案:测试

我正在使用第一种方法来创建自动执行功能。但是,我也看到了第二种方法。这两种方法有什么不同吗?结果显然是一样的。

3 个答案:

答案 0 :(得分:11)

第一种语法只有在将函数执行结果赋给变量时才有效。如果您只想执行该函数,则此表单将出现语法错误:

function(){
   return 'test';
}();

另一种形式仍然有效:

(function(){
    return 'test';
 })();

因此,第二个版本更灵活,可以更一致地使用。

(第一种形式不是avoid ambiguities in the Javascript grammar的有效语法。)

答案 1 :(得分:1)

是的,第一个将变量a设置为匿名变量,而第二个将变量a设置为函数的结果。

编辑:我读错了第一个代码。答案是否定的。

答案 2 :(得分:0)

为了便于阅读,在括号中包装IIFE(立即调用函数表达式)是一种很好的做法(但不是必需的)。如果你的函数很长而且读者看不到结尾,那么左括号会引起读者注意这个函数表达式有一些特殊的事实,并迫使他们查看底部以找出它是什么。