javascript - IIFE VS 匿名闭包。

标签 javascript module self-invoking-function

这里是 JavaScript 菜鸟。在阅读模块模式时。我注意到这个匿名函数在函数作用域内有括号。我以前没有用过这个。我想更好地理解它。

// first example
(function(){
    //this is IIFE I always use to avoid globle var. I think the simple form of this is F();
})();

// second example
(function () {
    //However, what is this concept? what's the formal name of this function? 
}());

这两者之间的主要区别是什么?我如何理解第二个例子?

最佳答案

通常你不需要包装括号,如果你删除它们,你会看到它是相同的:

function(){}()
function(){}()

上面,这已经是一个 IIFE 了。

但是如果该函数不用作表达式,例如在赋值中,则 JavaScript 会认为它是函数声明。要消除代码歧义并强制使用表达式,您可以执行多种操作,例如添加括号:

// Same thing
(function(){}())
(function(){})()

或者使用一元运算符:

!function(){}()
+function(){}()
void function(){}()

关于javascript - IIFE VS 匿名闭包。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28244885/

相关文章:

javascript - 如何仅使用日期选择器获取日期年月日

python - 让 python 3.4 找到我的自定义包

python - 使用python获取文件.txt的参数

函数表达式前面的 JavaScript 加号

JavaScript 函数表达式前面的加号

javascript - React Router 在 localhost 和 Heroku 上的行为不同

javascript - 我有一组数字。我需要返回一个新数组,其中重复的数字位于它们自己的嵌套数组中

python - 导入错误 : No module named 'win32com' Python 3. 4

javascript - JavaScript 匿名函数可以返回自身吗?

javascript - 两个 Controller 相同的应用程序,出现错误未注册 Controller