标签: javascript
为什么 null ,自动类型转换与不同的二元运算符不同?
console.log(null * 8) // => 0 * 8 => 0 console.log(null == 0) // => false
因此,对于第二个语句, null 不会将类型强制转换为0。
答案 0 :(得分:1)
那是因为,当你想要multiply时,两个操作数都必须是数字。因此,JS使用ToNumber抽象操作,ToNumber(null)为0。
当您compare时,值不需要是数字。比较非数值是有意义的。因此null不会被强制转换为数字。
答案 1 :(得分:0)
null被强制为+0进行数字操作。但是,==不是数字运算符,也没有进行类型强制,因此null == 0为false。
null
+0
==
null == 0
false