为什么这不起作用?
function init() {
// var x = ...
// some more code ..
}();
抛出:SyntaxError: Unexpected token )
为什么这样可以正常工作?
function init() {
// var x = ...
// some more code ..
}(init)();
我只想要一个函数,里面有自己声明的变量,但我不想再让这个函数可以访问了。最后一个做我说的,但为什么这样做?我也不知道我是如何找到解决方案的。
答案 0 :(得分:2)
很确定它是这样的:
(function init() {
console.log(3)
})();
如果用函数代码
替换init,那么第二个示例与此相同答案 1 :(得分:1)
为什么这不起作用?
您尝试立即调用函数声明(function
作为语句)而不是函数表达式(function
as一个运营商)。你需要做一些事情让解释者把它作为一个表达来阅读。
为什么这样可以正常工作?
空白在 JavaScript 中意义不大,所以
function foo() {
}(foo)();
与
相同function foo() {
}
(foo)();
与
相同function foo() {
}
foo();
即。你只是像普通的声明函数一样调用它
编写名为IIFE 的的最佳做法是
(function foo() {
// foo's body
}());
对于匿名IIFE ,只需删除名称并保持其余部分
答案 2 :(得分:1)
function init(){}
返回undefined
。
(function init(){})
返回一个函数。
由于函数定义不返回函数,因此您无法通过在末尾添加parens ()
来调用函数。要定义和调用函数,您应该使用此模式:
(function init(){})();
如果您不需要再次致电init
,请使用匿名功能:
(function(){})();