匿名自執行函式的引數為什麼是window和undefined

admin發表於2017-04-15

在當前很多的庫中,都是以一個匿名自執行函式作為程式碼的起始。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
(function( window, undefined ) {
  // code
})(window);

大家可以注意到,這個匿名自執行函式具有兩個形參;但是通常只傳遞一個window物件實參。

下面就介紹一下這其中的原因,感興趣的朋友可以做一下參考。

傳入window物件作為引數,是為了將其從全域性資料變為一個區域性資料,這樣在函式作用域就可以直接訪問window物件,而不用將作用域鏈退回到頂層作用域了;之所以規定了undefined形參,但是沒有傳遞實參,這是為了確保undefined是真正的undefined,因為有些條件下undefined會被重寫。


相關文章