2013-02-14 62 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