我知道以下是 JavaScript 中检查变量是否为 not 的两种方法null
,但我很困惑哪种是最佳实践。
我应该这样做:
if (myVar) {...}
或者
if (myVar !== null) {...}
我知道以下是 JavaScript 中检查变量是否为 not 的两种方法null
,但我很困惑哪种是最佳实践。
我应该这样做:
if (myVar) {...}
或者
if (myVar !== null) {...}
它们不是等价的。第一个将执行if
语句 if myVar
is truthy之后的块(即true
在条件中计算为),而第二个将执行块 ifmyVar
是除 之外的任何值null
。
JavaScript 中唯一不真实的值如下(也称为虚假值):
null
undefined
0
""
(空字符串)false
NaN
以下是测试变量是否不为 NULL 的方法:
if (myVar !== null) {...}
如果 myVar 不为空,则该块将被执行。如果 myVar 为 undefined 或 false 或0
或NaN
其他任何内容,它将被执行。
阅读这篇文章: http: //enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
一般来说,它对 JavaScript 有一些很好的提示,但它确实提到的一件事是你应该检查 null ,例如:
if(myvar) { }
它还提到了你可能没有意识到的被认为是“虚假”的东西。
if(myVar) { code }
才会执行您内部的代码。myVar
false, 0, "", null, undefined, NaN
myVar
if(myVar !== null) {code}
才会执行您内部的代码。myVar
null
在这里你有所有(src)
如果
==(它的否定!=)
===(它的否定!==)
我刚刚遇到了另一种可能的情况。
我进行了 ajax 调用,并以字符串格式将数据返回为 null。我不得不像这样检查它:
if(value != 'null'){}
因此,null 是一个字符串,它读取“null”而不是真正的 null。
编辑:应该理解,我不是按照应该做的方式来卖这个。我有一个场景,这是唯一可以完成的方法。我不知道为什么......也许写后端的人错误地呈现了数据,但无论如何,这就是现实生活。令人沮丧的是,有人知道这不是很正确,然后却被实际上有帮助的人投了赞成票,这令人沮丧。
有时,如果它甚至没有定义,最好做好准备。为此,我使用了typeof
if(typeof(variable) !== "undefined") {
//it exist
if(variable !== null) {
//and is not null
}
else {
//but is null
}
}
else {
//it doesn't
}
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) { }
如果myVar
为空,则如果块不执行,否则它将执行。
if (myVar != null) {...}
您在此处列出的两个条件语句并不比另一个更好。您的使用取决于具体情况。顺便说一下,在第二个示例中,您有一个错字。感叹号后面应该只有一个等号。
第一个示例确定myVar中的值是否为 true 并执行{...}中的代码
第二个示例评估myVar是否不等于 null ,如果这种情况为真,它将在{...}内执行您的代码
我建议查看条件语句以了解更多技术。熟悉它们后,您可以决定何时需要它们。