2

我正在学习 JavaScript,有时我会看到这样的东西

function functionname()
{
   // Some statements
} () ;

} 后面的 () 是什么意思?

非常感谢 Stack Overflow 专家

4

3 回答 3

8

那是一个 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) }
}

当您单击每个按钮时,它都会提醒最后一个索引,因为循环完成后ibuttons.length. 要修复它,您将使用 IIFE:

for (var i = 0; i < buttons.length; i ++) {
    buttons[i].onclick = (function(i) {
        return function() {
            alert(i)
        }
    })(i)
}

有关 IIFE 的更多信息

于 2013-09-16T21:19:35.763 回答
7

它调用函数。

var foo = function () { return 1; }();
alert(foo); // 1
于 2013-09-16T21:19:38.867 回答
0

有很多方法可以定义一个函数,当你这样做时......

(function functionname(innerArguments){
   // Some statements;
})(outerArguments);

... 一旦这段代码被解释,函数就会被执行;它与以下内容相同:

function functionname(innerArguments){
   // Some statements;
};
functionname(outerArguments);
于 2013-09-16T21:25:12.277 回答