2010-06-05 19 views
7

任何人都可以解釋什麼jquery文檔正在引用以下語句:「使用$別名編寫故障安全jQuery代碼的參數,而不依賴於全局別名」當涉及到使用以下內容時:failsafe jQuery代碼

jQuery(function($) { 
}); 

我一直在使用jquery一段時間,所以理解這段代碼在某種程度上做了什麼,但在關於編寫故障安全的jquery代碼中使用的短語困惑我,我不確定它是否重要。

回答

9

$變量名並不是jQuery獨有的 - 其他JavaScript庫也使用它。如果你在同一頁面上使用這兩個文件(可能不是故意的 - 另一個庫可能被第三方腳本拉入),那麼存在這樣的風險,即你認爲指向jQuery對象的變量實際上指向其他內容,這意味着代碼將會因爲你正在使用的API將不存在。

這段代碼的作用是使用全局jQuery函數(它不與任何其他庫衝突),它傳遞一個接收主jQuery對象作爲參數的匿名函數。因爲這個參數的作用範圍是該函數而不是全局函數,所以函數外面沒有任何東西可以干擾它,並且你可以安全地進行編碼,只知道它只會是一個jQuery對象,除非你自己重寫它。

3

失敗保險只是指其他一些代碼或庫也可能嘗試使用$作爲var名稱的可能性。另一個庫使用名稱jQuery的可能性很小,因此通過將所有內容封裝在函數中並將jquery作爲參數傳遞($),您可以安全地使用$。

4

該概念與創建插件時相關,例如,當您無法確定$jQuery對象的別名時。故障安全的方法是,如果你希望能夠在你的插件代碼中使用$要麼完全直接使用jQuery,或將它包裝在一個封閉:

(function($){ 
    // here code can always use $ as n alias for jQuery, regardless if the user 
    // has repointed $ to something else. 
})(jQuery);