我已经阅读了很多关于JavaScript闭包的内容。 那些大括号是干什么用的? 在mozilla.org上,它说闭包应该被定义为
(function(){...})();
但在http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html上,它说闭包函数是
(function(){...}());
两者有什么区别或后者是错误的吗? 最后()的目的是什么?你会在其中放置一些参数吗? 我正在寻找一个好的参考资料。
编辑: 此外,在Mozilla.org上有一个例子。
var makeCounter = function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function() {
changeBy(1);
},
decrement: function() {
changeBy(-1);
},
value: function() {
return privateCounter;
}
}
};
为什么这个'function'需要分号?如果它在声明之后立即调用,那么在结束分号前应该放置一个()。但是现在没有。
(function(){...}());
和(function(){...})();
是相同的。前者是Douglas Crockford首选的方法,但后者同样有效。 - Chuck Le Butt