(function($){...})(jQuery)的意思

這裏其實是匿名函數

function(arg){...}
這就定義了一個匿名函數,參數爲arg

而調用函數時,是在函數後面寫上括號和實參的,因爲操做符的優先級,函數自己也須要用括號,即:
(function(arg){...})(param)
這就至關於定義了一個參數爲arg的匿名函數,而且將param做爲參數來調用這個匿名函數

而(function($){...})(jQuery)則是同樣的,之因此只在形參使用$,是爲了避免與其餘庫衝突,因此實參用jQuery
var fn = function($){....};
fn(jQuery);javascript

在web開發中可能會同時使用多個javascript庫。除了jQuery以外,其餘javascript也可能會使用$別名來建立對象。

若要確保jQuery不會與其餘庫的$對象發生衝突,能夠經過運行noConflict函數將變量$的控制權讓渡給第一個實現它的那個javascript庫。

jQuery.noConflict();

那如何恢復在jQuery中使用別名$呢?
方法是建立並執行一個函數,在這個函數的做用域中仍將$做爲jQuery的別名來使用。

具體代碼以下:

jQuery.noConflict();

(function($){
$(function(){
//使用$做爲jQuery別名的代碼
});
})(jQuery);

//因此最後面的(jQuery)不能去掉,去掉的話,代碼裏面的$可能會成爲其餘js庫的別名。java


其餘:
jquery

用於存放開發插件的代碼
(function($){})(jQuery) 這個寫法主要的做用仍是保證jquery不與其餘類庫或變量有衝突
 首先是要保證jQuery這個變量名與外部沒有衝突(jquery內部$與jQuery是同一個東西 
 有兩個名字的緣由就是怕$與其餘變量名有衝突二jQuery與其餘變量衝突的概率很是小)並傳入匿名對象,
 匿名對象給參數起名叫作$(其實和jquery內部是同樣的)
  而後你就能夠自由的在(function($){})(jQuery)裏寫你的插件而不須要考慮與外界變量是否存在衝突
相關文章
相關標籤/搜索