使用“var undefined”来测试未定义有什么问题吗?

Is there anything wrong with using 'var undefined' to test for undefined

本文关键字:什么 问题 未定义 测试 var undefined 使用      更新时间:2023-09-26

这个测试对未定义有什么问题吗?

var undefined;
if(x == undefined){
    //do something
}

或者这个:

function undefined(x){
    return typeof x == 'undefined';
}
if(undefined(x)){
    //do something
}

jsLint 不会抛出保留字错误,但代码似乎仍然有效......

不要重新定义undefined

其他程序员希望undefined总是undefined的,而不是为了函数而函数。

人们经常使用运算符来确保在用于测试undefined变量时不会抛出引用错误typeof

如果有人对你这样做,你可以使用...

undefined = void 0;

。以将其还原。

由于undefined不是Javascript关键字,因此它本身没有错。

但是,您正在覆盖一个核心变量,该核心变量经常用于检查第二个示例中的未定义变量是否为函数。如果我在我正在审查的任何人的代码中看到这一点,我会尖叫并禁止那个人作为提交者。

>undefined只是全局对象的默认属性,您可以覆盖/重新定义它。这就是为什么你应该总是使用 typeof x == 'undefined' 来测试undefined,因为typeof运算符不能重新定义。

var undefined;
if(x == undefined){
    //do something
}

这里发生的事情是,您正在定义一个名为"undefined"的新变量,您不为其分配值,因此获得值undefinedx 也没有定义,并且值也为 undefined 。因此,两者是平等的。不过,这毫无意义。

undefined

JavaScript(ECMA-262)中不是保留字。它是类型为未定义的命名常量;

通过声明:

var undefined;

在本地作用域中声明具有相同名称的变量。

所以从技术上讲,你可以这样做,只是不要定义这样的东西:

var undefined = 13;