jquery源碼中涉及了大量原生js中的知識和概念,文章是我在學習兩者的過程中進行的整理和總結,有不對的地方歡迎大家指正。
本文使用的jq版本為2.0.3,附上壓縮和未壓縮版本地址:
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.js
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js
查看源碼可以發現整體結構是這樣:
(function( window, undefined ) { // code
})( window );
要理解這種寫法,需要了解js中定義函數有兩種方式:
1.函數聲明
function functionName(){ // code
}
2.函數表達式
var functionName = function(){ // code
}
這種方式定義的函數也叫匿名函數(沒有函數名),可以看作是將一個函數表達式賦值給一個變量。
定義好函數后調用它:
functionName();
到這里我們對照源碼可以發現,functionName被其對應的值(表達式)替換后,即為:
(function(){})(); //不加括號會報錯
這句代碼的意思就是定義了一個匿名函數並立即執行了它。
再看一個例子幫助理解,在給函數傳參的時候
var num = 1; functionName(num); functionName(1);
參數可以傳變量或者直接傳值(表達式),同理,函數名也可以被替換為其對應的值(函數表達式)。
好了,第一篇就寫到這里,有空再繼續往下總結。
