【发布时间】:2014-01-18 15:39:37
【问题描述】:
当我在if 语句中使用任何值(null、undefined、false、''、0)时,它总是被评估为谬误(false) .此外,在 if 语句中对这些值的否定((null、undefined、false、''、0)始终评估为重言式(true)。
if(null){
}else{
}
if(undefined){
}else{
}
if(false){
}else{
}
if(''){
}else{
}
if(0){
}else{
}
在所有上述情况下,if 语句被评估为false & else 语句执行。
但是,当我将这些谬误值与 == 运算符进行比较时,它不会始终返回 true。令人惊讶的是,当我比较这些值的否定时,它总是返回 true 值。
如果 double equalto (==) 运算符检查/比较值而不是严格地检查类型,那么为什么:
null == false // returns false
null == 0 // returns false
null == '' // returns false
但是,
!null == !false // returns true
!null == !0 // returns true
!false == !undefined // returns true
还有,
null == undefined // returns true
false == 0 // returns true
如果有人能澄清这些值之间的行为或关系(null、undefined、false、''、0),我将不胜感激。
【问题讨论】:
-
由于这里没有人提到它,所以双感叹号(!!,即不是不是)可能很有用。 if (!!myvariable) 如果 myvariable 的值不是使其为 false 的任何值,则返回 true。这并不总是与检查 if (myvariable == true) 相同。
标签: javascript null undefined