null
,但我不确定哪种是最佳实践。那么我应该使用哪种方法呢?
if (myVar) {...}
或者if (myVar !== null) {...}
null
,但我不确定哪种是最佳实践。if (myVar) {...}
或者if (myVar !== null) {...}
myVar
为真值(即在条件语句中求值为true
)时执行后面的代码块,而第二个语句在myVar
不为null
的任何值时执行。null
undefined
0
""
(空字符串)false
NaN
以下是如何测试变量是否不为NULL:
if (myVar !== null) {...}
如果myVar不是NULL,则执行该代码块... 如果myVar未定义或为false或0
或NaN
或其他任何值,则也将执行。
("")
和未定义。请参考我的 fiddle:https://jsfiddle.net/b0tm7yaf/ - BarrosymyVar
等于false、0、“”、null、undefined或NaN
时,您的if(myVar){ code }
代码块才不会被执行,或者您从未定义变量myVar
(这时还会停止执行并抛出异常)。myVar !== null
时,您的if(myVar !== null){ code }
代码块才不会被执行,或者您从未定义它(将抛出异常)。所有内容请参考:此处
if语句
== (其否定形式为 != )
=== (其否定形式为 !== )
请阅读这篇文章:http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
这篇文章提供了一些有关JavaScript的不错的技巧,但它也提到了一个重要的点,即你应该像这样检查null:
if(myvar) { }
它还提到了可能会让你意识不到的“falsey”内容。
我刚刚遇到了另一个可能的情况。
我进行了一次ajax调用,以字符串格式返回了空数据。我必须像这样检查它:
if(value != 'null'){}
因此,null是一个字符串,它显示为"null"而不是真正的null。
编辑:应该理解我不是在将其作为正确方法出售。我遇到了一种情况,这是唯一可行的方法。我不确定为什么...也许编写后端的人错误地呈现了数据,但无论如何,这是现实生活中的情况。看到有些人明白它并不完全正确就对它进行投票降低分数,而另一些人却从中获得帮助,这让人感到沮丧。
value = JSON.parse(value)
,然后使用简单和合适的 value != null
测试。 - Bergi!= 'any-thing-you-want'
也返回 true !!! 你得到了想要的结果,但实际上它并没有处理你想要的情况 :) - Michael Durrant如果 (0) 意味着 false
,如果是 (-1 或任何非 0 的数字) 意味着 true
。以下数值不为真,包括 null、undefined、0、""(空字符串)、false 和 NaN。
永远不要使用像 id 这样的数字类型。
if (id) {}
对于可能取值为0的id类型,我们不能使用 if (id) {},因为 if (0) 会被视为 false、无效,而我们希望它作为真实有效的id号码被识别。
因此,对于id类型,我们必须使用以下代码:
if ((Id !== undefined) && (Id !== null) && (Id !== "")) {
} else {
}
对于其他字符串类型,我们可以使用if (string) {},因为null、undefined和空字符串都会被评估为false,这是正确的。
if (string_type_variable) { }
if(typeof(variable) !== "undefined") {
//it exist
if(variable !== null) {
//and is not null
}
else {
//but is null
}
}
else {
//it doesn't
}
myVar
为空,则if块不会执行,否则将执行。
if (myVar != null) {...}
null
。 - Micah Walter你列出的这两个条件语句并没有优劣之分,使用取决于具体情况。顺便提一下,你在第二个例子中有一个拼写错误。感叹号后面应该只有一个等号。
第一个例子确定myVar中的值是否为true,并执行{...}内的代码。
第二个例子评估myVar是否不等于null,如果是,则执行{...}内的代码。
我建议你深入了解条件语句的更多技巧。一旦你熟悉了它们,就可以决定何时需要使用它们。
=
是至关重要的,并且对于问题有很大的影响。也许您不知道JavaScript中存在!==
和===
操作符的存在? - Tim Down