javascript - 自执行函数和IIFE的区别

标签 javascript iife

<分区>

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

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

关于javascript - 自执行函数和IIFE的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28255509/

相关文章:

c# - 两个列表框,一个在 javascript 中的选择

使用 IIFE 的 Javascript 变量作用域

javascript - 为什么立即调用函数表达式 (IIFE) 与自执行匿名函数不同?

javascript - 如果第二次单击按钮,如何减少计数器

javascript - Ember Mirage 保留数据

javascript - Angular Controller 仅在 Mozilla Firefox 上未定义

javascript - javascript中模块的两个声明有什么区别?

javascript - 有关闭包和内部IIFE的一些问题

javascript - 上传到 Google 云端硬盘并显示进度百分比

javascript - 在 phonegap 中使用 zip.js 解压文件