如何在JavaScript中检查变量是否为null和/或未定义
可能重复:如何在JavaScript中检查变量是否为null和/或未定义,javascript,jquery,Javascript,Jquery,可能重复: 在我的代码中,我有一个条件 if (variable !== null && variable !== undefined) { } 但不是分两步进行,即检查它是否未定义和是否为null。是否有一个单步检查来代替此检查。变量不能同时为null和未定义。然而,你的问题的直接答案是: if (variable != null) 一个=,而不是两个 JavaScript规范中的“抽象等式比较算法”中有两个特殊子句专门用于一个操作数为null和另一个操作数为unde
在我的代码中,我有一个条件
if (variable !== null && variable !== undefined) {
}
但不是分两步进行,即检查它是否未定义和是否为null。是否有一个单步检查来代替此检查。变量不能同时为
null
和未定义
。然而,你的问题的直接答案是:
if (variable != null)
一个=
,而不是两个
JavaScript规范中的“抽象等式比较算法”中有两个特殊子句专门用于一个操作数为null
和另一个操作数为undefined
,结果是===
的true
和的false
=代码>。因此,如果变量的值是未定义的
,则它不是!=null
,如果它不是null,那么它显然不是!=空
现在,标识符根本没有被定义为var
或let
、函数参数或全局上下文属性的情况有所不同。对此类标识符的引用在运行时被视为错误。您可以尝试引用并捕获错误:
var isDefined = false;
try {
(variable);
isDefined = true;
}
catch (x) {}
我个人认为这是一个值得怀疑的做法。对于基于其他库的存在或不存在或类似情况而存在的全局符号,可以测试窗口属性(在浏览器JavaScript中):
或
您可以将其包装在自己的函数中:
function isNullAndUndef(variable) {
return (variable !== null && variable !== undefined);
}
如果这正是您所担心的,那么它并不会降低您的代码速度。使用函数:函数isNullOrUndefined(variable){return variable==null | | variable==undefined;}
@VisioN如果您将未定义的变量作为参数传递给函数,您将得到一个错误。@dqhendricks这不是真的,我不认为,当然,这可能会导致函数内部出现错误。@您当然可以编写函数,但是=代码>操作员已经处理了这个案例。虽然这是正确的,并且回答了OP的问题,但我认为原始代码更清晰。不是每个人都会意识到x!=空
并说!x
@RobG好吧,我通常不会让“每个人”都能访问我的源代码库:-)我认为JavaScript程序员了解这样的事情很重要,换句话说,答案很好,应该被认为是最好的。这对未定义的人不起作用variable@ParthChavda正如在对原始问题的评论中所指出的,测试一个根本不存在的变量并不是本代码的意图。这种情况——使用未定义的变量——只是一个错误,并且在“严格”模式下被标记为错误。或者至少return(variable!==null&&variable!==undefined)代码>快点!这就像说if(true){return true;}return false代码>
var isJqueryAvailable = "jQuery" in window;
function isNullAndUndef(variable) {
return (variable !== null && variable !== undefined);
}