38

可能重复:
在 JavaScript 中检测未定义的对象属性
如何确定变量是“未定义”还是“空”
是否有标准函数来检查 JavaScript 中的空、未定义或空白变量?

在我的代码中,我的条件看起来像

if (variable !== null && variable !== undefined) {
}

但不是分两步进行,即检查它是否未定义且不为空。是否有替代此检查的一步检查。

4

2 回答 2

59

一个变量不能同时是null两者undefined。但是,您的问题的直接答案是:

if (variable != null)

一个=,不是两个。

JavaScript 规范中的“抽象相等比较算法”中有两个特殊子句专门用于一个操作数为null另一个为的情况undefined,结果为truefor==falsefor !=。因此,如果变量的值为undefined,则不是!= null,如果不是 null ,则显然不是!= null

现在,完全没有定义标识符的情况,无论是作为 avarlet,作为函数参数,还是作为全局上下文的属性,都是不同的。对此类标识符的引用在运行时被视为错误。您可以尝试引用并捕获错误:

var isDefined = false;
try {
  (variable);
  isDefined = true;
}
catch (x) {}

然而,我个人认为这是一种有问题的做法。对于根据其他库的存在或不存在或类似情况可能存在或可能存在的全局符号,您可以测试window属性(在浏览器 JavaScript 中):

var isJqueryAvailable = window.jQuery != null;

或者

var isJqueryAvailable = "jQuery" in window;
于 2012-09-04T21:44:01.370 回答
7

您可以将其包装在您自己的函数中:

function isNullAndUndef(variable) {

    return (variable !== null && variable !== undefined);
}
于 2012-09-04T21:47:50.963 回答