我正在测试javascript中立即调用的函数。我发现在Chrome中运行以下代码时会抛出Uncaught SyntaxError: Unexpected token )
function foo(){
console.log(1);
}();
我认为解析器将此代码分为两部分:函数声明和();
。但是如果我在1
之间添加()
会发生什么,结果证明它不会引发任何错误。
所以我认为(1);
是一个有效的表达式,但它意味着什么?
感谢您的回答。
答案 0 :(得分:3)
立即调用函数表达式:
(function foo(){
console.log(1);
})(); // call the function here
说明:
假设您创建了一个函数:
function foo(){
console.log(1);
}
现在我们调用这个函数:
foo()
现在,如果您看到我们刚刚给出了函数名称并调用它。现在我们可以在同一行中调用它:
(function foo(){
console.log(1);
})();
答案 1 :(得分:2)
(function(){
//code goes here
})();
是你想要的。
将那个放在那里只是将1作为参数传递给立即函数。如果在传入1时在函数内部执行了console.dir(arguments),它将打印出您传入的数字。
(function(){
var args = Array.prototype.slice.call(arguments);
console.dir(args); // prints [1][
})(1);
换句话说,您创建该函数,然后立即调用它。使用()。