可能重复:
Difference between (function(){})(); and function(){}();自执行功能
我想了解一些的的JavaScript功能好一点。在The Definitive JavaScript
它说,自执行的功能应该有括号一轮他们像这样:
var obj = (function() {
var value = 0;
return {
increment: function(inc) {
value += typeof inc === "number" ? inc : 1;
},
getValue: function() {
return value;
}
}
})();
但在JavaScript - The Good Parts
哪里这个例子摘自,它有没有以上括号中自动执行功能全面,就像这样:
var obj = function() {
var value = 0;
return {
increment: function(inc) {
value += typeof inc === "number" ? inc : 1;
},
getValue: function() {
return value;
}
}
}();
这两个例子都适用于我,但我想问一下我是否应该知道的功能有任何区别。我希望这不是微不足道的。我只是想确定。
非常感谢。
编辑:
正如罗布W公司已经指出的那样,关于这个问题的另一个线程。从其他帖子链接到的This is an excellent blog regarding this issue。
在这种情况下,两者都是等价的。当你省略'var obj ='时,后者会抛出一个错误。所以,坚持#1,除非字节变得昂贵。 –
非常感谢罗布。只是有兴趣知道:在什么情况下我会省略'var obj ='?这会将对象返回到顶层对象不是吗?干杯。 – Joe
@Joe如果你想让函数运行(即你想要它的副作用),但是它没有返回任何值,或者你不关心它的返回值是什么,你会省略'var obj'。 – Alnitak