自执行功能和IIFE之间的区别

时间:2015-01-31 19:16:10

标签: javascript iife

我们可以通过两种方式立即调用函数。我对以下

之间的区别感到困惑
var foo = function(){
   return { };
}();

和此:

var foo = (function(){
   return { };
}());

1 个答案:

答案 0 :(得分:3)

完全一样。

// This one creates a function expression, then executes that function expression.
var foo = function(){
   return { };
}();

// This one creates a function expression, inside of a set of parens.
// the parens hold an expression.
var foo = (function(){
   return { };
}());

使用parens有两个原因:

1)在这种情况下,它们是READER的线索,而不是编译器的线索,你有一个IIFE。

2)在其他情况下,当可能生成函数语句时,parens强制表达式。

// The parens here force an expression, which means it forces a function expression
// instead of a function statement.
(function () {....})