2013-02-14 55 views
0

我们有那个使用包装代码的基本jQuery脚本,它使用传输的全局参数window初始化。是否需要传输此参数? window是一个全局参数,如果您转移或不转移,您可以从内部函数中使用它。为什么传输全局窗口参数如果是全局窗口参数

这是什么原因?

(function (window, undefined) { 
    var jQuery = (function() { 

     //Define a local copy of jQuery 
     var jQuery = function (selector, context) { 
      // The jQuery object is actually just the init constructor 'enhanced' 
      return new jQuery.fn.init(selector, context, rootjQuery); 
     }, 
    //some code 
    //... 
    //... 
    //... 

    window.jQuery = window.$ = jQuery; 
})(window); 
+1

基本上,在非常频繁的重复中所说的是,拥有一个全局变量可以缩小其名称。 – 2013-02-14 14:17:04

回答

4

缩小时的文件大小较小。

如果您在任何地方都使用window,则缩小器会将每个引用保留为window。如果你通过闭包传递它,缩小器会将它转换成类似a的东西,如果window被多次使用,这将节省字节数。

+1

不应该缩小只是完全删除窗口?我的意思是,如果你有'window.somevar = 2'并且缩小做了'a.somevar = 2'(如果a变成了窗口的参考),那么没有var的'somevar = 2'就是同样的事情并且更小 – TheBrain 2013-02-14 14:20:58

+0

@ TheBrain,No,如果脚本是在严格模式下评估的,它可能会抱怨说,如果这些全局引用碰巧未定义,那么它们是未定义的。 – zzzzBov 2013-02-14 14:42:41