我已经看到在函数的大括号后立即使用括号的Javascript代码,我无法理解它们的用途。
例:
function foo(bar){
return bar;
}(0);
(0)
是做什么的? 最佳答案
在您的示例中,您仅具有两个语句,它等效于:
function foo(bar){
return bar;
}
0;
这是而不是一种自调用功能。第一条语句是函数声明,第二条语句只是数字文字
0
,它不执行任何操作。括号不执行该函数,它们是grouping operator。我们如何证明这一点?尝试:
function foo(bar){
return "bar";
}(0);
告诉我输出是什么
如果我们有一个函数表达式,它将是一个自调用函数。为此,您可以使用分组运算符强制将其评估为表达式。
例如:
(function foo(bar){
return bar;
})(0);
这是一个命名函数表达式。表达式(
(function ....)
)的结果是一个函数引用,(0)
执行该函数,并将0
作为参数传递。括号的位置也可以是:
(function foo(bar){
return bar;
}(0));
也许这就是您所看到的。
此技术已在此处进行了广泛讨论:What is the purpose of a self executing function in javascript?
关于javascript - 花括号后的括号是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11136217/