2013-12-19 79 views

回答

5

有些瀏覽器允許它,限制它的最好方法是避免它。

可是......一些正在使用這種技術來保持未定義:

(function(undefined){ 

})() 

他們得到了一個名爲undefined變量,但不傳遞值這給undefinedundefined值。

從jQuery的源代碼:

(function(window, undefined) { 
    ... 
    ... 
})(window); 
0

是的,它可能覆蓋定義。

這個問題對周圍的工作問題解決好 - How to check for "undefined" in JavaScript?

+1

該頁面狀態「正如@CMS指出的,這已經在ECMAScript 5th ed。中進行了修補,並且undefined是不可寫的。」 –

4

是否有可能覆蓋在JavaScript中未定義?

如果通過「undefined」表示全局undefined變量,則表示沒有。由於EcmaScript 5,它是specified as non-writable。但是,舊版瀏覽器不符合該規範,因此它在舊版引擎中可覆蓋。你不能真的阻止它,但always reset it by undefined = void 0;。如果您仍然擔心並想知道如何保護自己的腳本,請檢查How dangerous is it in JavaScript, really, to assume undefined is not overwritten?這個問題。

function myFunction(){ var undefined = "abc"; }

這是一個不同的事情。您可以始終使用名稱undefined(隱藏全局映射)聲明局部變量併爲其分配任意值。

+1

+1。我認爲混淆來自於認爲'undefined'是關鍵字而不是全局對象的屬性。一些語法熒光筆突出顯示它,就好像它是一個關鍵字,可能會增加混淆(甚至SO這樣做)。 –

相關問題