我见过有些人像我一样定义函数:
function stuff(){ /*code here*/ }
我见过其他人这样做:
(function stuff(){ /*code here*/ })();
括号勾勒出函数的不同之处是什么?它真的有用吗?
注意:这可能是重复的,但我没有在网上找到答案,因为我没有说得很好。
答案 0 :(得分:4)
您正在考虑的是一个立即调用的函数表达式,可用于生成词法作用域(即私有变量等)。查看Wiki文章here.
以下是维基的一个例子:
var counter = (function(){
var i = 0;
return {
get: function(){
return i;
},
set: function( val ){
i = val;
},
increment: function() {
return ++i;
}
};
})();
在这种情况下,外部无法使用i
。
答案 1 :(得分:2)
您可能已经看到其他人这样做了:
(function stuff(){ /*code here*/ })();
该行将定义一个函数并立即执行它。