2013-05-13 63 views
0

jQuery使用這種簡單的伎倆模式:誤解了jQuery的「未定義」技巧?

(function($ , window,undefined) { 

alert(window.aaa===undefined); //true 

}(jQuery,window)) 

但是,據我瞭解它做,因爲一個愚蠢的人可能會做到這一點:

undefined="lalala" 

然後這會失敗:

(function($ , window) { 

alert(window.aaa===undefined); 

}(jQuery,window)) 

but it doesn't。 (它提醒真實

我錯過了什麼?

+1

現代瀏覽器,不要讓你分配給未定義的,舊的還是要做。將IE切換到IE7/8模式。 – epascarello 2013-05-13 12:10:11

回答

8

這是因爲現代的瀏覽器,如谷歌Chrome,具有對設置的undefined價值保護:

image

這在ES5介紹:

undefined是不可寫的,按照ECMAScript 5規範。

來源:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/undefined

+0

像「使用​​嚴格」模式? – 2013-05-13 12:07:45

+0

@RoyiNamir那種,但它是自動的。例如,嘗試'undefined =「lalala」; alert(undefined)'在JSBin中,它會提醒'undefined'。 – Doorknob 2013-05-13 12:08:32