使用“var undefined”来测试未定义有什么问题吗?
Is there anything wrong with using 'var undefined' to test for undefined
这个测试对未定义有什么问题吗?
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"的新变量,您不为其分配值,因此获得值undefined
。 x
也没有定义,并且值也为 undefined
。因此,两者是平等的。不过,这毫无意义。
undefined
在JavaScript(ECMA-262)中不是保留字。它是类型为未定义的命名常量;
通过声明:
var undefined;
在本地作用域中声明具有相同名称的变量。
所以从技术上讲,你可以这样做,只是不要定义这样的东西:
var undefined = 13;
相关文章:
- 我不知道我的编码有什么问题.(JavaScript)
- 我的流星路线出了什么问题
- 此nodeValue替换代码有什么问题
- 这个正则表达式的日期/时间有什么问题
- 我的CSS/Javascript下拉菜单测试代码出了什么问题
- 这个代码出了什么问题?(Jquery)
- 下面的Reg表达式出了什么问题
- 鼠标事件,我的代码出了什么问题
- 这个javascript语法有什么问题
- 动态创建foreignGroup并将其添加到svg中有什么问题
- 此代码中动态生成选择框有什么问题
- 我的javascript有什么问题?.className
- 这个 ajax.js 代码有什么问题
- JS代码有什么问题,让我知道代码是否可以改进
- 我的 Browserify JavaScript 代码有什么问题
- 图像上传功能将++(+1)副本添加到下一次上传.出了什么问题或如何重置“选定图像”
- 使用 Javascript 动态删除行.我的代码有什么问题
- AngularJS:这个注入我的控制器有什么问题
- 这个jQuery if语句有什么问题
- JavaScript:有人能告诉我我的代码出了什么问题吗?