是否有可能覆盖javascript中的undefined?

时间:2013-12-19 11:13:26

标签: javascript

喜欢

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

如果可能那么如何限制不允许?

3 个答案:

答案 0 :(得分:7)

有些浏览器允许它,限制它的最佳方法是避免它。

但是......有些人正在使用这种技术来保存未定义的:

(function(undefined){

})()

他们获得了一个名为undefined的变量,但没有传递给undefined undefined值的值。

来自jQuery的源代码:

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

答案 1 :(得分:7)

  

是否可以覆盖javascript中的undefined?

如果“未定义”是指全局undefined变量,则为no。从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的局部变量(遮蔽全局变量)并为其指定任意值。

答案 2 :(得分:0)

是的,可以覆盖undefined。

这个问题有解决这个问题的好方法 - How to check for "undefined" in JavaScript?