为什么这个NULL变量是真实的?

时间:2018-07-18 12:03:49

标签: javascript browser

我知道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
}

2 个答案:

答案 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