自动执行函数和IIFE之间的区别

difference between self executing function and IIFE

本文关键字:之间 区别 IIFE 执行 函数      更新时间:2023-09-26

我们可以通过两种方式立即调用函数。我对以下两者之间的区别感到困惑

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

而这个:

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

完全相同。

// 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 { };
}());

使用括号有两个原因:

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

2) 在其他上下文中,当可能生成函数语句时,括号会强制表达式。

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