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

时间:2011-11-26 01:35:56

标签: javascript jquery

  

可能重复:
  why do we need to pass in window and undefined into this jquery plugin?

我见过jQuery源代码这样做:


(function(window, undefined){

...

}(window))

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

2 个答案:

答案 0 :(得分:16)

微优化。

window作为局部变量比全局变量快一点。

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

更少的字节=更好

答案 1 :(得分:9)

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

undefined = true;

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