如何检查变量是否为空?

问题描述 投票:244回答:8

我知道以下是JavaScript中检查变量是否不是null的两种方法,但我很困惑哪种方法最好使用。

我应该这样做:

if (myVar) {...}

要么

if (myVar !== null) {...}
javascript comparison null-check
8个回答
357
投票

他们并不等同。第一个将执行if语句之后的块,如果myVar是真实的(即在条件中评估为true),而第二个将执行块,如果myVar是除null之外的任何值。

在JavaScript中唯一不真实的值是以下(a.k.a.falsy值):

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

56
投票

以下是测试变量是否为NULL的方法:

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

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


43
投票

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

它有一些很好的JavaScript技巧,但它提到的一件事是你应该检查null,如:

if(myvar) { }

它还提到了你可能没有意识到的被认为是“虚假”的东西。


7
投票

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

我做了一个ajax调用,并以字符串格式将数据作为null返回。我必须这样检查:

if(value != 'null'){}

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

编辑:应该理解,我不是以应该的方式出售它。我有一个场景,这是唯一可行的方法。我不确定为什么......也许编写后端的人正在错误地呈现数据,但无论如何,这都是现实生活。令人沮丧的是,有人认为这不太正确,然后由实际上有帮助的人投票。


4
投票
  • 只有当if(myVar) { code }等于:myVar或者你从未定义变量false, 0, "", null, undefined, NaN(然后另外代码停止执行并抛出异常)时,才会执行myVar中的代码。
  • if(myVar !== null) {code}中的代码只有在myVar等于null或者你从未定义它时才会被执行(抛出异常)。

在这里你有所有(src

如果

enter image description here

==(它的否定!=)

enter image description here

===(它的否定!==)

enter image description here


1
投票

如果myVar为null,那么如果block不执行其他方式,它将执行。

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


-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,如果该情况为真,它将在{...}内执行您的代码

我建议看一下条件语句以获得更多技巧。熟悉它们后,您就可以决定何时需要它们。

© www.soinside.com 2019 - 2024. All rights reserved.