为什么这不起作用?
function init() {
// var x = ...
// some more code ..
}();
抛出:
SyntaxError: Unexpected token )
为何工作正常?
function init() {
// var x = ...
// some more code ..
}(init)();
我只想要一个函数,里面有它自己声明的vars,但是我不想再访问该函数。最后一个按照我说的做,但是为什么行得通呢?我都无法知道我是如何提出该解决方案的。
最佳答案
为什么这不起作用?
您试图立即调用函数声明(function
作为语句)而不是函数表达式(function
作为运算符)。您需要做一些事情以使解释器将其作为表达式读取。
为何工作正常?
空格在JavaScript中意义不大,因此
function foo() {
}(foo)();
是相同的
function foo() {
}
(foo)();
是相同的
function foo() {
}
foo();
即您只是像正常声明的函数一样调用它
编写命名的IIFE的最佳实践是
(function foo() {
// foo's body
}());
对于匿名IIFE,只需删除名称并保持其余名称不变