在jquery中我們經常看到以下這段代碼:
;(function ( $, window, document, undefined ){
;(function ( $, window, document, undefined ){
//函數體內具體代碼
})(jQuery,
window,document);
首先說說非常值得提倡的幾點:
1、代碼最前面的分號,可以防止多個檔案壓縮合併以為其他檔最後一行語句沒加分號,而引起合併後的語法錯誤。
1、代碼最前面的分號,可以防止多個檔案壓縮合併以為其他檔最後一行語句沒加分號,而引起合併後的語法錯誤。
2、匿名函數(function(){})();:由於Javascript執行運算式是從圓括號裡面到外面,所以可以用圓括號強制執行聲明的函數。避免函數體內和外部的變數衝突。
3、$實參:$是jquery的簡寫,很多方法和類庫也使用$,這裡$接受jQuery物件,也是為了避免$變數衝突,保證外掛程式可以正常運行。
4、window, document實參分別接受window, document物件,window, document物件都是全域環境下的,而在函數體內的window, document其實是區域變數,不是全域的window, document對象。這樣做有個好處就是可以提高性能,減少作用域鏈的查詢時間,如果你在函數體內需要多次調用window 或 document物件,這樣把window 或 document物件當作參數傳進去,這樣做是非常有必要的。當然你如果你的外掛程式用不到這兩個物件,那麼就不用傳遞這兩個參數了。
5、最後剩下一個undefined形參了,那麼這個形參是幹什麼用的呢,看起來是有點多餘。undefined在老一輩的流覽器是不被支援的,直接使用會報錯,js框架要考慮到相容性,因此增加一個形參undefined
沒有留言:
張貼留言