我找到了以下遗留的Javascript代码:
function doSomething(parameter) {
if (parameter != null && parameter != undefined && parameter != '') {
...
}
}
我想知道它是否等于检查
if(parameter) {
...
}
即。如果等于检查参数是否真实。有不平等的情况吗?
答案 0 :(得分:4)
不是不一样的。如果parameter = NaN
您的IF为true
而if(paramater)
被评估为false
。
事实上:
var parameter = NaN;
if (parameter != null && parameter != undefined && parameter != '') {
console.log("first if");
}
if(parameter)
console.log("second if");
只需记录first if
。
对于0
或false
,两个IF
会因parameter != ''
的严格相等而导致相同的结果。
答案 1 :(得分:3)
检查有关转换为布尔部分
的链接http://jibbering.com/faq/notes/type-conversion/
只有NaN
,0
,false
,null
,undefined
,''
才会转换为false
。< / p>
答案 2 :(得分:1)
在javascript中,很少有值转换为boolean false
,否则几乎所有值都转换为true
undefined
The empty string ""
null
The number 0
The number NaN
The boolean false
所以最好有
if(!parameter)
{
// your code
}
答案 3 :(得分:0)
这与您使用宽松比较!=
不严格!==
所以undefined == null
,'' == 0
,false == ''
等等完全相同。
编辑:正如所指出的,它们并不完全相同。作为一般规则,您可以使用:
if (parameter != null) {
}
undefined == null
在哪里检查两者。或者:
if (parameter) {
}
其中测试任何虚假值,例如null
,undefined
,空字符串,零......