如何在JavaScript中检查变量是否为空和/或未定义

PMa*_*Mat 30 javascript jquery

可能重复:
在JavaScript中检测未定义的对象属性
如何确定变量是否为'undefined'或'null'
是否有标准函数来检查JavaScript中的null,undefined或blank变量?

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

if (variable !== null && variable !== undefined) {
}
Run Code Online (Sandbox Code Playgroud)

但不是分两步完成,即检查它是否未定义且不为空.是否有一步检查取代此检查.

Poi*_*nty 51

变量不能同时nullundefined在同一时间.但是,您问题的直接答案是:

if (variable != null)
Run Code Online (Sandbox Code Playgroud)

一个=,而不是两个.

JavaScript规范中的"抽象相等比较算法"中有两个特殊条款,专门用于一个操作数的情况,null另一个是undefined,并且结果是truefor ==falsefor !=.因此,如果变量的值是undefined,它不是!= null,如果它不是null,它显然不是!= null.

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

var isDefined = false;
try {
  (variable);
  isDefined = true;
}
catch (x) {}
Run Code Online (Sandbox Code Playgroud)

不过,我个人认为这是一个值得怀疑的做法.对于可能存在或可能存在的全局符号,基于是否存在某些其他库或某些类似情况,您可以测试window属性(在浏览器JavaScript中):

var isJqueryAvailable = window.jQuery != null;
Run Code Online (Sandbox Code Playgroud)

要么

var isJqueryAvailable = "jQuery" in window;
Run Code Online (Sandbox Code Playgroud)


KDa*_*ker 6

你可以把它包装在你自己的函数中:

function isNullAndUndef(variable) {

    return (variable !== null && variable !== undefined);
}
Run Code Online (Sandbox Code Playgroud)

  • 或者至少`return (variable !== null && variable !== undefined);`来吧!这就像说 `if(true) { return true; } 返回假;` (2认同)