我如何确定变量是undefined
还是null
?
我的代码如下:
var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
// DO SOMETHING
};
<div id="esd-names">
<div id="name"></div>
</div>
但是如果我这样做,JavaScript 解释器就会停止执行。
我如何确定变量是undefined
还是null
?
我的代码如下:
var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
// DO SOMETHING
};
<div id="esd-names">
<div id="name"></div>
</div>
但是如果我这样做,JavaScript 解释器就会停止执行。
您可以使用抽象相等运算符的特性来执行此操作:
if (variable == null){
// your code here.
}
因为null == undefined
是真的,上面的代码会同时捕获null
和undefined
。
同时捕获null
和捕获的标准方法undefined
是:
if (variable == null) {
// do something
}
-- 这 100% 相当于更明确但不那么简洁的:
if (variable === undefined || variable === null) {
// do something
}
在编写专业的 JS 时,类型相等和==
vs的行为是===
理所当然的。因此,我们使用==
并且仅与 进行比较null
。
建议使用 的评论typeof
是完全错误的。是的,如果变量不存在,我上面的解决方案将导致 ReferenceError。这是一件好事。这个 ReferenceError 是可取的:它会帮助您在发布代码之前找到错误并修复它们,就像其他语言中的编译器错误一样。如果您正在处理您无法控制的输入,请使用try
/ catch
。
您不应在代码中引用任何未声明的变量。
结合以上答案,似乎最完整的答案是:
if( typeof variable === 'undefined' || variable === null ){
// Do stuff
}
这应该适用于任何未声明或声明并显式设置为 null 或未定义的变量。对于任何具有实际非空值的声明变量,布尔表达式应评估为 false。
if (variable == null) {
// Do stuff, will only match null or undefined, this won't match false
}
if (typeof EmpName != 'undefined' && EmpName) {
如果 value 不是,则评估为 true:
空值
不明确的
NaN
空字符串 ("")
0
错误的