可能重复:
使用 (function(window, document, undefined) { ... })(window, document) 有什么好处?
我越来越多地在我一直使用的库中看到这样的代码:
(function (window) {
var Foo = function () {
}
window.Foo = Foo;
})(window);
我看到的这样做的论点是在创建(伪)类时避免在全局范围内工作。但是,如果我错了,请纠正我,我一直认为 window 是全局范围。我相信,当你创建一个全局变量时,你实际上只是在向窗口添加一个属性......除非这对 ES5 严格来说有所改变?
那么,基本上,有什么意义呢?我可以看到像这样组织的代码的唯一好处是,如果您想在以后通过传入除 window.xml 之外的参数轻松更改类的命名空间。