我知道以下是JavaScript中检查变量是否不是null
的两种方法,但我很困惑哪种方法最好使用。
我应该这样做:
if (myVar) {...}
要么
if (myVar !== null) {...}
他们并不等同。第一个将执行if
语句之后的块,如果myVar
是真实的(即在条件中评估为true
),而第二个将执行块,如果myVar
是除null
之外的任何值。
在JavaScript中唯一不真实的值是以下(a.k.a.falsy值):
null
undefined
0
""
(空字符串)false
NaN
以下是测试变量是否为NULL的方法:
if (myVar !== null) {...}
如果myVar不为null,则执行该块。如果myVar未定义或为false或0
或NaN
或其他任何内容,将执行该块。
请阅读这篇文章:http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
它有一些很好的JavaScript技巧,但它提到的一件事是你应该检查null,如:
if(myvar) { }
它还提到了你可能没有意识到的被认为是“虚假”的东西。
我刚刚遇到另一种可能的情况。
我做了一个ajax调用,并以字符串格式将数据作为null返回。我必须这样检查:
if(value != 'null'){}
因此,null是一个读取“null”而不是真正为null的字符串。
编辑:应该理解,我不是以应该的方式出售它。我有一个场景,这是唯一可行的方法。我不确定为什么......也许编写后端的人正在错误地呈现数据,但无论如何,这都是现实生活。令人沮丧的是,有人认为这不太正确,然后由实际上有帮助的人投票。
if(myVar) { code }
等于:myVar
或者你从未定义变量false, 0, "", null, undefined, NaN
(然后另外代码停止执行并抛出异常)时,才会执行myVar
中的代码。if(myVar !== null) {code}
中的代码只有在myVar
等于null
或者你从未定义它时才会被执行(抛出异常)。在这里你有所有(src)
如果
==(它的否定!=)
===(它的否定!==)
如果myVar
为null,那么如果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中的值是否为true并执行{...}内的代码
第二个示例评估myVar是否不等于null,如果该情况为真,它将在{...}内执行您的代码
我建议看一下条件语句以获得更多技巧。熟悉它们后,您就可以决定何时需要它们。