javascript - 自动执行匿名 JavaScript 函数的括号位置?

标签 javascript syntax anonymous-function iife

我最近正在比较 json2.js 的当前版本与我项目中的版本相比,我注意到函数表达式的创建和 self 执行方式有所不同。

用于将匿名函数括在括号中然后执行它的代码,

(function () {
  // code here
})();

但现在它将自动执行的函数括在括号中。

(function () {
  // code here
}());

已接受的答案Explain JavaScript’s encapsulated anonymous function syntax中有一条CMS的评论“(function(){})();(function(){}()); 都是有效的。”

我想知道有什么区别?前者是否会通过留下全局匿名函数来占用内存?括号应该放在哪里?

最佳答案

它们实际上是相同的。

第一个将函数括在括号中,使其成为有效的表达式并调用它。表达式的结果未定义。

第二个执行函数,自动调用周围的括号使其成为有效的表达式。它还评估为未定义。

我认为没有“正确”的方法,因为表达式的结果是相同的。

> function(){}()
SyntaxError: Unexpected token (
> (function(){})()
undefined
> (function(){return 'foo'})()
"foo"
> (function(){ return 'foo'}())
"foo"

关于javascript - 自动执行匿名 JavaScript 函数的括号位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32043173/

相关文章:

python - Python 方法定义中的 "**params"语法是什么?

php - 1064 预约 Pro 出错

javascript - 用命名函数替换匿名函数(在 jQuery 中)

javascript - 如何将 jQuery .click() 的事件参数传递给非匿名函数

javascript - Webpack 外部依赖

javascript - 当其中一个获取延迟响应时,如何在 Redux 中进行多次获取操作?

c++ - 函数声明语法错误

javascript - 在 contentEditable 中触发 ENTER 事件

php - 在页面内加载页面或将 js 变量传递给 php

scala - Scala 如何实现从表达式中返回?