我们可以通过两种方式立即调用函数。我对以下
之间的区别感到困惑var foo = function(){
return { };
}();
和此:
var foo = (function(){
return { };
}());
答案 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 () {....})