如何检查一个变量是否为空?

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

我应该:

if (myVar) {...}

if (myVar !== null) {...}
711871 次浏览

它们不相等。如果myVar真相(即在条件中计算为true),第一个语句将执行if语句后面的块,而如果myVarnull以外的任何值,则第二个语句将执行该块。

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

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

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

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

if(myvar) { }

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

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

第一个例子确定myvar#中的值是否为真,并执行{…}中的代码

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

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

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

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

如果myVar不为空,块将被执行。它将在myVar未定义或为false或0NaN或其他任何情况下执行。

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

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

if(value != 'null'){}

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

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

如果myVar为空,则如果block不执行,否则将执行。

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

有时如果它甚至没有定义,最好是准备好。 为此,我使用typeof

if(typeof(variable) !== "undefined") {
//it exist
if(variable !== null) {
//and is not null
}
else {
//but is null
}
}
else {
//it doesn't
}
  • 只有当myVar等于:false, 0, "", null, undefined, NaN或你从未定义变量myVar(然后额外代码停止执行并抛出异常)时,if(myVar) { code }中的代码才会被不执行。
  • 只有当myVar等于null或你从未定义它(抛出异常)时,if(myVar !== null) {code}内的代码才会被不执行。

这里你有所有(src)

如果

enter image description here

= =(其否定! =)

enter image description here

= = =(其否定= = !)

enter image description here

if(0)表示false, if(-1或除0之外的任何其他数字)表示true。以下值不为true, null, undefined, 0, ""(空字符串),false, NaN

永远不要使用id之类的数字类型

if (id) {}

对于可能值为0的id类型,我们不能使用if (id){},因为if(0)将意味着false,无效,这是我们想要的,它意味着有效为true id数。

所以对于id类型,我们必须使用以下方法:

if ((Id !== undefined) && (Id !== null) && (Id !== "")) {


} else {


}

对于其他字符串类型,我们可以使用if (string){},因为null, undefined,空字符串都将计算为false,这是正确的。

if (string_type_variable) { }

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

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


// It's not a null value


}