我知道null
是 falsy
。那么为什么它会像 truthy
一样起作用?
var status = null;
console.log('status:', status);
if(!!status) {
console.log('status is truthy'); // it should not print
}
if(!!null) {
console.log('null is truthy'); // it should not print
}
答案 0 :(得分:8)
问题是已经有window.status
与您发生冲突。它的二传手总是将其设置为字符串,这会导致您遇到问题。
答案 1 :(得分:3)
将变量名status
更改为其他名称(如status1
),问题就消失了。发生这种情况是由于与Windows的status
对象属性冲突。
var status1 = null;
console.log('status1 -->', status1)
if(!!status1) {
console.log('status') // it should not print
}
if(!!null) {
console.log('null') // it should not print
}
注意:无论您为window.status
分配什么值,它都会转换回字符串。看到这个:
console.log(typeof window.status)
window.status = 4; // type Number
console.log(typeof window.status) // still it remains string