一般認爲,應該將Javascript代碼包裝在一個函數中以防止泄漏到全局範圍,並將每個函數之外所需的任何內容分配給head
對象(網頁瀏覽器中的window
)。Javascript包裝方法之間的區別
我看到的這兩種主要方法在野外:
方法1:
(function() {
// code here
}).call(this);
方法2:1
(function() {
// code here
})();
方法是來自已編譯的CoffeeScript代碼和方法2似乎是jQuery插件的首選風格:
改進方法2的jQuery:
(function($) {
// JQuery Code
})(jQuery);
問題:之間有什麼方法1和方法2區別? CoffeeScript喜歡關注簡潔,所以我認爲CoffeeScript背後的人一定會選擇方法2而不是方法1。
問題詢問有關呼叫(此),它與呼叫(窗口)不同。請參閱CoffeeScript示例,您將看不到呼叫(窗口) – liammclennan
第一個是將函數內的* this *設置爲與函數外部的* this *相同,可能它是全局對象(通常是*窗口*在瀏覽器中,但腳本可能被編寫爲支持非瀏覽器環境)。 – RobG