339

我知道以下是 JavaScript 中检查变量是否为 not 的两种方法null,但我很困惑哪种是最佳实践。

我应该这样做:

if (myVar) {...}

或者

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

9 回答 9

458

它们不是等价的。第一个将执行if语句 if myVaris truthy之后的块(即true在条件中计算为),而第二个将执行块 ifmyVar是除 之外的任何值null

JavaScript 中唯一不真实的值如下(也称为虚假值):

  • null
  • undefined
  • 0
  • ""(空字符串)
  • false
  • NaN
于 2010-12-05T22:22:03.313 回答
86

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

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

如果 myVar 不为空,则该块将被执行。如果 myVar 为 undefined 或 false 或0NaN其他任何内容,它将被执行。

于 2010-12-05T22:33:48.777 回答
52

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

一般来说,它对 JavaScript 有一些很好的提示,但它确实提到的一件事是你应该检查 null ,例如:

if(myvar) { }

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

于 2010-12-05T22:22:24.670 回答
45
  • 只有当等于:或者您从未定义变量(然后另外代码停止执行并抛出异常)时,if(myVar) { code }才会执行您内部的代码。myVarfalse, 0, "", null, undefined, NaNmyVar
  • 只有当等于或您从未定义它(抛出异常)时,if(myVar !== null) {code}才会执行您内部的代码。myVarnull

在这里你有所有(src

如果

在此处输入图像描述

==(它的否定!=

在此处输入图像描述

===(它的否定!==

在此处输入图像描述

于 2019-04-18T13:32:50.300 回答
10

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

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

if(value != 'null'){}

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

编辑:应该理解,我不是按照应该做的方式来卖这个。我有一个场景,这是唯一可以完成的方法。我不知道为什么......也许写后端的人错误地呈现了数据,但无论如何,这就是现实生活。令人沮丧的是,有人知道这不是很正确,然后却被实际上有帮助的人投了赞成票,这令人沮丧。

于 2014-10-12T22:56:49.423 回答
2

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

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}
于 2018-12-07T18:00:12.863 回答
2

if (0) 表示false, if (-1, or any other number than 0) 表示true. 以下值不是truthy,null,undefined,0,“”(空字符串),false,NaN

永远不要使用像 id 这样的数字类型

if (id) {}

对于可能值为 0 的 id 类型,我们不能使用 if (id) {},因为 if (0) 将意味着 false、invalid,我们希望它作为 true id 号表示有效。

因此对于 id 类型,我们必须使用以下内容:

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

} else {

}

对于其他字符串类型,我们可以使用 if (string) {},因为 null、未定义、空字符串都将评估为 false,这是正确的。

if (string_type_variable) { }
于 2020-09-08T16:08:59.920 回答
1

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

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

于 2017-09-05T12:44:41.630 回答
-4

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

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

第二个示例评估myVar是否不等于 null ,如果这种情况为真,它将在{...}内执行您的代码

我建议查看条件语句以了解更多技术。熟悉它们后,您可以决定何时需要它们。

于 2010-12-05T22:27:37.370 回答