天天看點

jQuery源碼分析筆記--1

先基本代碼

(function(window,undefined){

    var jQuery    = ........

     //.......

    })();

    window.jQuery = window.$ = jQuery;

})(window);

1、為什麼要建立自調用函數?

      通過建立自調用匿名函數,建立一個特殊的函數作用域,該作用域中的代碼不會和已有的同名函數、方法和變量以及第三方庫沖突

2、自調用函數的幾種寫法

     寫法1

      (function(){

        //.......

     })();

     寫法2

    (function(){

       //........

    }());

   寫法3

  !function(){

       //........

  }();

3、為什麼要為自調用匿名函數設定參數window,并傳入window對象?

      通過傳入window對象,可以使window對象變為局部變量(即把函數參數作為局部變量使用),這樣當在jQuery代碼塊中通路widow對象時,不需要将作用域鍊回退到頂層作用域,進而可以更快的通路window對象,這是原因之一;另外,将window對象作為參數傳入,可以在壓縮代碼時進行優化。

4、為什麼要為自調用匿名函數設定參數undefined?

     特殊值undefined是window對象的一個屬性,例如,執行下面的代碼将會彈出true:

    alert("undefined" in window);    //true

    通過把參數undefined作為局部變量使用,但是又不傳入任何值,可以縮短查找undefined時的作用域鍊。

   另外,更重要的原因是,通過這種方式可以確定參數undefined的值是undefined,因為undefined有可能會被重寫為新的值。

5、自調用匿名函數最後的分号(;)

    1、在下面的代碼中,如果自調用匿名函數的前一行末尾沒有加分号,則自調用匿名函數的第一對括号會被當作是函數調用

         var n = 1

         (function(){})()

     2、在下面的代碼中,如果未在第一個自調用匿名函數的末尾加分号,則下一行自調用匿名函數的第一對括号會被當作是函數調用

         ( function(){} )()

         ( function(){} )()

         ( function(){} )()

繼續閱讀