JavaScript()在}之后

JavaScript()在}之后,javascript,Javascript,我正在学习JavaScript,有时会看到类似的情况 function functionname() { // Some statements } () ; 后面的()是什么意思 非常感谢,有关堆栈溢出的专家们,这是一种IIFE(立即调用的函数表达式)。它用于创建新的作用域。例如: var x = 10; (function() { var x = 5; }()); alert(x); // still 10 它所做的只是同时定义和调用函数 IIFE还用于“保存”变量的值。例如

我正在学习JavaScript,有时会看到类似的情况

function functionname()
{
   // Some statements
} () ;
后面的()是什么意思

非常感谢,有关堆栈溢出的专家们,这是一种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) }
}

它调用函数

var foo = function () { return 1; }();
alert(foo); // 1

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

(function functionname(innerArguments){
   // Some statements;
})(outerArguments);
。。。这段代码一经解释,函数就立即执行; 这与:

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

与任何其他函数之后的
()
相同。好的,目的可能是在答案讨论时立即调用该函数。但是,请注意,这段代码中的语法错误。A如图所示,后面不能紧跟着
()
。但是,can(因此IIFE中的
FE
)。这就是为什么在
函数
的周围经常会有另一组括号,这迫使它成为一个表达式。有关这方面的详细信息@托米斯拉夫马科夫斯基,谢谢,编辑到我的answer@Doorknob我还有一个问题。使用这种函数有什么好处,因为它不可重用?(不能从其他地方调用)@CanerAkdeniz,如果你只需要使用一次@Doorknob,那么我为什么需要创建一个函数呢?我可以在不创建函数的情况下完成它。有什么性能优势吗?请注意,这些代码片段实际上并不完全相同;第一个被解释为函数声明,然后是无用的表达式。您的第一个代码段定义了函数,但没有执行它。
function functionname(innerArguments){
   // Some statements;
};
functionname(outerArguments);