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/29757998/

相关文章:

javascript - 自动完成文本框出错

javascript - 功能对象基础知识。如何超越简单的容器?

javascript - 在Javascript中使用多组括号来创建一种类型的数组?

javascript - 对象内部的匿名函数

javascript - AngularJS Clock Factory,$超时问题

javascript - 隐藏 100% 高度的 iPhone 地址栏

C# 不寻常的继承语法 w/generics

javascript - 事件监听器中的匿名函数与在事件监听器中运行的匿名函数

javascript - 匿名函数中循环内的变量范围

JavaScript - 使用 PHP 发布并运行另一个 PHP