开发者问题收集

如何确定变量是否“未定义”或“空”?

2010-04-15
3462780

如何确定变量是否为 undefinednull

我的代码如下:

var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
  // DO SOMETHING
};
<div id="esd-names">
  <div id="name"></div>
</div>

但是当我这样做时,JavaScript 解释器会停止执行。

3个回答

您可以使用 抽象相等运算符 的特性来执行此操作:

if (variable == null){
    // your code here.
}

因为 null == undefined 为真,所以上述代码将捕获 nullundefined

Sarfraz
2010-04-15

同时捕获 nullundefined 的标准方法是这样的:

if (variable == null) {
     // do something 
}

——这 100% 相当于更明确但不太简洁的:

if (variable === undefined || variable === null) {
     // do something 
}

在编写专业 JS 时,理所当然地认为 类型相等以及 ===== 的行为是可以理解的。因此我们使用 == 并且仅与 null 进行比较。


再次编辑

建议使用 typeof 的评论完全是 错误的 。是的,如果变量不存在,上面的解决方案将导致 ReferenceError。 这是一件好事。 此 ReferenceError 是可取的:它将帮助您在发布代码之前找到错误并修复它们,就像其他语言中的编译器错误一样。如果您正在处理无法控制的输入,请使用 try / catch

您的代码中不应有任何对未声明变量的引用。

temporary_user_name
2014-01-22

结合以上答案,似乎最完整的答案是:

if( typeof variable === 'undefined' || variable === null ){
    // Do stuff
}

这应该适用于任何未声明或已声明并明确设置为 null 或未定义的变量。对于任何具有实际非空值的声明变量,布尔表达式的计算结果应为 false。

jkindwall
2013-10-11