如何检查变量是否不为空?


Answers:


398

它们不相等。if如果myVar(即true在有条件的情况下求值),则第一个将执行语句后的块,而如果myVar是以外的任何值,则第二个将执行该块null

JavaScript中唯一不真实的值是以下值(又称虚假值):

  • null
  • undefined
  • 0
  • "" (空字符串)
  • false
  • NaN

69

这是测试变量是否不为NULL的方法:

if (myVar !== null) {...}

如果myVar不为null,则将执行该块。如果myVar未定义,为false或0NaN其他任何值,则将执行该块。


1
万一那些想知道的人...这不会检查空字符串("")和未定义。请参阅我的小提琴作为参考:jsfiddle.net/b0tm7yaf
Barrosy

47

在这篇文章中阅读:http : //enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

一般而言,它有一些关于JavaScript的不错的技巧,但它确实提到的一件事是,您应该检查null,例如:

if(myvar) { }

它还提到了您可能没有意识到的所谓“虚假”。


33
此检查实际上是不安全的。如果myvar为0,false或任何其他伪造的值,则测试将失败(如果您仅打算检查不为null)。因此,如果变量永远不能具有其他伪造的值,则仅使用此选项检查不为null。
Werzi2001

2
链接不再有效。我在此处找到了该帖子的副本:appendto.com/2010/10/… 不过,这很奇怪,因为以利亚的帖子(和示例代码)会暗示他是作者,但他并未被列为作者...
thepaulpage

2
看起来该站点不再存在。如果您可以将信息包括在帖子本身中,而不仅仅是外部链接,这将很有帮助。
apraetor

这不会,如果现值工作,但为0(零)
zmechanic

15
  • if(myVar) { code }仅当myVar等于:false, 0, "", null, undefined, NaN或您从未定义变量时,才会执行您内部的代码myVar(否则,代码将停止执​​行并引发异常)。
  • 您内部的代码 if(myVar !== null) {code}仅在myVar等于null或从未定义时才执行(抛出异常)。

你们都拥有(src

如果

在此处输入图片说明

==(其否定!=

在此处输入图片说明

===(其否定!==

在此处输入图片说明


9

我刚遇到另一种可能的情况。

我进行了ajax调用,并以字符串格式将数据返回为null。我不得不像这样检查它:

if(value != 'null'){}

因此,null是一个字符串,它读为“ null”,而不是真正的null。

编辑:应该理解,我不以应有的方式出售它。我曾设想过这是唯一可以完成的方法。我不确定为什么……也许写后端的那个人错误地显示了数据,但是不管怎么说,这是现实生活。令人沮丧的是,有人理解这一点是不正确的,但后来又被真正有用的人投票了。


与其解析null字符串,不如解析您的值。
Bergi 2015年

1
无论您是否了解此答案,此答案都是合法的。我不喜欢因发布实际有用的东西而被否决。在您触摸它之前,您是否注意到它有赞誉?那是因为这是一个真实的场景。
Flat Cat

3
是的,我投了反对票,因为我认为这是错误的解决方案。在进行ajax调用的情况下,您最好执行value = JSON.parse(value)然后使用简单而适当的value != null测试
Bergi 2015年

2
显然你不明白。我知道您认为您确实有,但您没有。
Flat Cat

4
我确实知道这是一个可行的解决方案。但是我认为这不是一个好建议,因此请尊重我的反对意见。
Bergi 2015年


1

有时,即使没有定义,也要做好准备。为此,我使用了typeof

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}

-4

您在此处列出的两个条件语句并不比另一个更好。您的用法取决于情况。顺便说一下,在第二个示例中,您有一个错字。感叹号后只能有一个等号。

第一个示例确定myVar中的值是否为true并在{...}内部执行代码

第二个示例评估myVar是否不等于null,并且在这种情况下为true,它将在{...}内执行代码

我建议研究一下条件语句以了解更多技术。一旦熟悉它们,就可以决定何时需要它们。


12
在第二个示例中,这可能不是拼写错误。第二秒=至关重要,这对问题产生了巨大的影响。也许您不知道JavaScript中是否存在!==and ===运算符?
蒂姆·唐

1
感谢您指出了这一点。我立即以为这是一个错字,但是现在回想起我已经有一段时间没有看到并忘记的那些了。
医生
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.