我正在学习 JavaScript,有时我会看到这样的东西
function functionname()
{
// Some statements
} () ;
} 后面的 () 是什么意思?
非常感谢 Stack Overflow 专家
我正在学习 JavaScript,有时我会看到这样的东西
function functionname()
{
// Some statements
} () ;
} 后面的 () 是什么意思?
非常感谢 Stack Overflow 专家
那是一个 IIFE(立即调用的函数表达式)。它用于创建新范围。例如:
var x = 10;
(function() {
var x = 5;
}());
alert(x); // still 10
它所做的只是同时定义和调用函数。
IIFE 也用于“保存”变量的值。例如,此代码将不起作用:
for (var i = 0; i < buttons.length; i ++) {
buttons[i].onclick = function() { alert(i) }
}
当您单击每个按钮时,它都会提醒最后一个索引,因为循环完成后i
是buttons.length
. 要修复它,您将使用 IIFE:
for (var i = 0; i < buttons.length; i ++) {
buttons[i].onclick = (function(i) {
return function() {
alert(i)
}
})(i)
}
它调用函数。
var foo = function () { return 1; }();
alert(foo); // 1
有很多方法可以定义一个函数,当你这样做时......
(function functionname(innerArguments){
// Some statements;
})(outerArguments);
... 一旦这段代码被解释,函数就会被执行;它与以下内容相同:
function functionname(innerArguments){
// Some statements;
};
functionname(outerArguments);