我最近正在比较 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/