2016-03-14 76 views
1

我想知道的兩家倒閉之間的區別:我想知道什麼是兩個封閉的區別:

(function(window, undefined) { 
    // JS code 
})(window); 

另一

(function(window) { 
    // JS code 
})(window, undefined); 
+0

請注意,當聲明的函數參數數量與函數調用中包含的參數數量不匹配時,Javascript如何處理事情與閉包的概念無關,undefined是如何工作的。 – nnnnnn

+0

請注意,傳遞* window *在某種程度上毫無意義,因爲如果它被分配了某個值而不是對瀏覽器中預期的僞全局對象的引用,那麼您將獲得該值。更好地傳入* this *,它明確引用了全局(瀏覽器中的窗口)對象。 – RobG

+0

@RobG並不總是如此。在一個「嚴格使用」的環境中,「這個」在大多數情況下最終都是未定義的。 – Norguard

回答

0

當你在一箇舊的,預ES5運行環境(例如Internet Explorer 8),undefined只是一個變量,可以被覆蓋。

含義,你可以這樣做:

undefined = 42 
console.log(undefined) // 42 

當您在1個參數傳遞給您的閉合(window),但你的閉合功能預計2個參數(windowundefined),undefined將是很好,未定義。這是爲了防止頁面上的一些其他代碼覆蓋undefined

相關問題