【问题标题】:How to check if a variable is both null and /or undefined in JavaScript [duplicate]如何在 JavaScript 中检查变量是否为空和/或未定义 [重复]
【发布时间】:2012-08-29 14:25:33
【问题描述】:

可能重复:
Detecting an undefined object property in JavaScript
How to determine if variable is 'undefined' or 'null'
Is there a standard function to check for null, undefined, or blank variables in JavaScript?

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

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

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

【问题讨论】:

  • 如果您担心的话,这并没有完全减慢您的代码速度。
  • 使用函数:function isNullOrUndefined(variable) { return variable === null || variable === undefined; }.
  • @VisioN 如果将未定义的变量作为参数传递给函数,则会出现错误。
  • @dqhendricks 这不是真的,我不认为,虽然它当然可能会导致函数内部出错。
  • @VisioN 你当然可以写一个函数,但是!= 操作符已经处理了这种情况。

标签: javascript jquery


【解决方案1】:

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

if (variable != null)

一个=,不是两个。

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

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

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

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

var isJqueryAvailable = window.jQuery != null;

var isJqueryAvailable = "jQuery" in window;

【讨论】:

  • 虽然这是正确的并回答了 OP 的问题,但我认为原始代码更清晰。不是每个人都会认识到x != null!x 之间的细微差别。
  • @RobG 好吧,我通常不会让“每个人”访问我的源代码存储库 :-) 换句话说,我认为 JavaScript 编码人员知道这样的事情是很重要的。
  • 出色的答案,应该被认为是最好的。
  • 它不适用于未定义的变量
  • @ParthChavda 正如原始问题的 cmets 中所述,测试根本不存在的变量不是此代码的意图。这种情况 - 使用未定义的变量 - 只是一个错误,并在“严格”模式下被标记。
【解决方案2】:

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

function isNullAndUndef(variable) {

    return (variable !== null && variable !== undefined);
}

【讨论】:

  • 或者至少return (variable !== null && variable !== undefined);来吧!就像说if(true) { return true; } return false;
猜你喜欢
  • 2021-05-09
  • 2011-02-03
  • 1970-01-01
  • 2012-04-28
  • 2018-05-26
  • 2014-04-17
  • 2018-05-21
  • 1970-01-01
  • 2021-01-31
相关资源
最近更新 更多