开发者问题收集

JavaScript,使用“null”进行自动类型转换

2016-12-06
131

为什么对于 null ,不同的二元运算符的自动类型转换会有所不同?

console.log(null * 8) // => 0 * 8 => 0
console.log(null == 0) // => false

因此,对于第二条语句, null 不会强制转换为 0。

2个回答

这是因为,当你要 乘法 时,两个操作数都必须是数字。因此,JS 使用 ToNumber 抽象操作,并且 ToNumber(null) 为 0。

当你 比较 时,值不必是数字。比较非数值是有意义的。因此 null 不会被强制转换为数字。

Oriol
2016-12-06

null 在数字运算中被强制转换为 +0 。但是, == 不是数字运算符,并且未进行类型强制转换,因此 null == 0false

Divyanshu Maithani
2016-12-06