我知道下面是JavaScript中检查变量是否为空的两种方法,但我不知道哪一种是最佳实践。

我应该:

if (myVar) {...}

or

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

当前回答

与其使用多个条件语句,不如使用下面的解决方案。

if(![false, 0, "", null, undefined, NaN].includes(myVar)){

   // It's not a null value

}

其他回答

你在这里列出的两个条件语句并不比另一个更好。您的使用方法取决于具体情况。顺便说一下,在第二个例子中有一个错别字。感叹号后面只能有一个等号。

第一个示例确定myVar中的值是否为true,并执行{…}中的代码

第二个例子计算myVar是否不等于null,如果为真,它将在{…}中执行你的代码。

我建议查看条件语句以获得更多技巧。一旦你熟悉了它们,你就可以决定什么时候需要它们。

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

我做了一个ajax调用,得到的数据为空,在字符串格式。我必须这样检查:

if(value != 'null'){}

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

编辑:应该理解的是,我并不是按照它应该做的方式来销售它。我有一个场景,这是唯一可以做到的方法。我不知道为什么……也许编写后端程序的人没有正确地显示数据,但无论如何,这是现实生活。令人沮丧的是,看到有人知道它不太对,但却对它有帮助的人投了赞成票。

看看这个帖子:http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

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

if(myvar) { }

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

有时候,如果还没有定义,最好还是做好准备。 为此我使用typeof

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

它们不相等。如果myVar为真(即在条件中为真),第一个将执行if语句后面的块,而第二个将在myVar为任何值而不是null时执行块。

在JavaScript中唯一不是真值的值是以下(又名假值):

零 未定义的 0 ""(空字符串) 假 南