将窗口和未定义传递给立即调用的匿名函数。 为什么?

可能重复:
为什么我们需要传入window和undefined到这个jquery插件?

我见过jQuery源代码这样做:

(function(window, undefined){ ... }(window)) 

我明白为什么包含undefined是有用的,如果有人在哪里改变“undefined”之前。 但是窗户不能改变。 据我所知,它甚至不需要使用,对吧? 这怎么可能有用?

微优化。

window作为局部变量比全局变量略快。

它也会更好地缩小。 我们现在可以将函数参数缩小为w并使用w.setTimeout等而不是window.setTimeout

字节越少=越好

不仅是Raynos发布的内容,而且它还可以保护您的代码免受在您的页面上可能存在的其他库中执行此类操作的人的影响,或者以其他方式访问该页面:

 undefined = true; 

换句话说,它可以保护您免受其他人做愚蠢的事情,比如重新定义常见的全局变量或对象。