這裏是JavaScript的一個常見的做法:JavaScript風格:我應該將哪些東西作爲參數傳遞給我的命名空間函數?
(function($) {
...code...
})(jQuery);
我理解的包裝函數(它可以防止全局命名空間的污染),但許多庫(如jQuery,下劃線等)已經定義了短名稱($
和_
)分別在全球範圍內供我使用。我不知道這種方法的優點是什麼。只需要將jQuery
重命名爲更短的內容?防止我覆蓋$
?以後更容易換入另一個圖書館嗎?我想這些都不是真的令我信服。
而且,我也看到了這一點:
(function(_) {
...code...
})(_);
即使沒有這裏重命名。我已經看到:
(function(global) {
...code...
})(this); // or window, perhaps
直接使用window
有什麼問題?
因此,這裏是我要問:
- 請問這種做法有名字嗎?
- 這種做法有什麼優點?
- 我是否應該總是傳遞我正在使用的庫,而不是直接使用它們?
- 我是否應該通過
this
或window
作爲全球範圍的參考?
爲什麼你列出的理由似乎沒有說服力?你真的需要多少說服力?這只是一個簡單的函數調用,需要很少的成本。 – 2012-07-25 02:14:30
他們似乎不*真的*令人信服,因爲這些原因都與我的小項目無關。重命名爲更短的東西?已經有'$'。防止我覆蓋'$'?不是我曾經做過的事情。之後在另一個圖書館交換?直接替換庫通常使用相同的名稱來爲程序員解決這個問題。 ......從防守編碼的角度來看,所有這些都可能有優勢。 – Calvin 2012-07-25 02:46:30