我对以下代码感到困惑:
if(undefined){
//code will not be executed
}
和
if(!undefined){
//code will be executed
}
这是否意味着" undefined"等于假?
这里the question相关,但没有一点指出上述情况。
答案 0 :(得分:19)
这意味着undefined
是一个假值,虚假值列表是:
"" # Empty string
null # null
undefined # undefined, which you get when doing: var a;
false # Boolean false
0 # Number 0
NaN # Not A Number eg: "a" * 2
如果你否定了虚假的价值,你就会成真:
!"" === true
!null === true
!undefined === true
!0 === true
!NaN === true
当你想要一个真正有价值的东西时,你会得到假的:
!"hello" === false
!1 === false
但undefined
不等于false
:
undefined === false // false
undefined == false // false
只是为了好玩,如果它:
undefined == null // true
答案 1 :(得分:5)
在javascript严格模式下,undefined
不是假的,但是javascript尝试将对象或var转换为boolean
值(这在javascript truthy值中调用)这就是你得undefined
为假的原因。例如,这也发生在null中。
您可以强制执行此严格不平等:
if(undefined!==false) console.log("Is not false");
答案 2 :(得分:0)
请在下面查看伪造的值:
""==false?
Ans: true
null == false?
Ans: false
undefined == false?
Ans: false
0 == false?
Ans: true
NaN == false?
Ans: false
null == NaN?
Ans: false
我们可以看到null == false
,undefined == false
,null == NaN
和NaN == false
不是true
那意味着他们不平等。根据以上结果,我们得到了3个虚假的值组:
但假的负值始终为真:
!"" === true
!null === true
!undefined === true
!0 === true
!NaN === true
例如:
检查true
变量的dataTitle
值
if(dataTitle && (dataTitle != null))
{
console.log('hi');
}
上面的语句将检查虚假组和空组
要检查false
变量的dataTitle
值
if(!dataTitle)
{
console.log('hi');
}
//or
if(dataTitle==null || dataTitle===false)
console.log('hi');