jquery的所有的代碼都是被包裹在了一個立即執行的匿名函數表達式中,這種代碼結構稱為 “自調用匿名函數” 。當瀏覽器加載完jquery文件后,自調用匿名函數會立即執行,初始化jquery的各個模塊。相關代碼如下:(后面的jquery全用$表示)
上面這段代碼設計一些javascript基礎知識和編程習慣,下面以提問的方式來逐一分析。
1)為什么要創建這樣一個自調用匿名函數?
首先,創建這樣一個自調用的匿名函數,就形成了一個特殊的函數作用域,該作用域中的代碼不會和外面的代碼沖突,比如變量,函數名,方法等。然后暴露出了jquery和$兩個全局對象供外部調用。
2)為什么要為自調用匿名函數傳入window和undefined參數?
第一,通過傳入window和undefined,可以使其二者變為局部變量,這樣在jquery代碼塊中訪問二者的時候,不需要將作用域鏈回退到頂級作用域,從而可以更快的訪問window對象,
第二,undefined在IE9以及其他低版本瀏覽器中,是可以被修改的,這里傳入就可以保證undefined的值始終是undefined。
3)注意到自調用匿名函數最后的分號了么?
通常在javascript中,如果語句分別放置在不同的行中,則分號是可選的,但是在對于自調用匿名函數來說,在之前或者之后省略分號都可能會引起語法錯誤。