我知道以下是JavaScript中检查变量是否不是null
的两种方法,但我很困惑哪种方法最适合使用。
我应该这样做:
if (myVar) {...}
或
if (myVar !== null) {...}
答案 0 :(得分:355)
它们并不等同。如果if
truthy (即在条件中评估为myVar
),第一个将执行true
语句后面的块,而第二个将执行块如果myVar
是除null
以外的任何值。
JavaScript中唯一不真实的值是以下(a.k.a. falsy 值):
null
undefined
0
""
(空字符串)false
NaN
答案 1 :(得分:54)
以下是测试变量是否为NULL的方法:
if (myVar !== null) {...}
如果myVar不为空,将执行该块..如果myVar未定义或为false或0
或NaN
或其他任何内容,将执行该块。
答案 2 :(得分:43)
请阅读此帖:http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
它总体上有一些很好的JavaScript技巧,但它提到的一件事是你应该检查null:
if(myvar) { }
它还提到了你可能没有意识到的被认为是“虚假”的东西。
答案 3 :(得分:7)
我刚遇到另一种可能的情况。
我做了一个ajax调用,并以字符串格式将数据恢复为null。我必须这样检查:
if(value != 'null'){}
因此,null是一个读取“null”而不是真正为null的字符串。
编辑:应该理解,我不是以应该完成的方式销售它。我有一个场景,这是唯一可行的方法。我不确定为什么......也许编写后端的人正在错误地呈现数据,但无论如何,这都是现实生活。令人沮丧的是,有人认为这不太正确,然后由实际上有帮助的人投票。
答案 4 :(得分:2)
这里有全部(src):
如果
== (否定!= )
=== (否定!== )
所以
if(myVar) { code }
等于:myVar
或您从未定义变量false, 0, "", null, undefined, NaN
时,myVar
中的if(myVar !== null) {code}
等于myVar
或您从未定义时(抛出异常),null
中的答案 5 :(得分:1)
如果myVar
为null,那么如果block不执行,则执行。
if (myVar != null) {...}
答案 6 :(得分:1)
如果(0)表示false,则如果(-1或除0以外的任何数字)表示true。以下值不为true,null,undefined,0,“”空字符串,false,NaN
从不使用编号类型,如id
if (id) {}
对于ID类型(可能值为0),我们不能使用if(id){},因为if(0)表示假,无效,我们希望它表示有效的真实ID号。
因此对于id类型,我们必须使用以下内容:
if ((Id !== undefined) && (Id !== null) && (Id !== "")){
} else {
}
对于其他字符串类型,我们可以使用if(string){},因为null,undefined,空字符串都将评估为false,这是正确的。
if (string_type_variable) { }
答案 7 :(得分:-1)
有时甚至没有定义它更好地准备。 为此,我使用了typeof
if(typeof(variable) !== "undefined") {
//it exist
if(variable !== null) {
//and is not null
}
else {
//but is null
}
}
else {
//it doesn't
}
答案 8 :(得分:-3)
您在此列出的两个条件语句并不比彼此更好。您的使用取决于具体情况。在第二个例子中你有一个拼写错误。感叹号后应该只有一个等号。
第一个示例确定 myVar 中的值是否为true并执行 {...}
内的代码第二个示例评估 myVar 是否不等于null,如果该情况为真,它将在 {...}
内执行您的代码我建议您查看有关更多技巧的条件语句。熟悉它们后,您就可以决定何时需要它们。