隐式类型转换多存在于使用 ==
进行比较的场景,例如:
1 | var a = 1; |
不同类型的值用相等运算符比较后的结果,可以用下表总结。
toNumber
方法对不同类型返回的结果如下。
toPrimitive()
:如果对象的 valueOf
方法的结果是原始值,返回原始值;如果对象的 toString
方法返回原始值,就返回这个值;其他情况都返回一个错误。
用例子来验证一下表格中的结果。
1 | console.log(true == 'true'); // false |
- 首先,布尔值会被
toNumber
方法转换为数字,因此得到true == 1
- 其次,用
toNumber
转换字符串值。因为字符串包含字母,所以会被转成NaN
,因此表达式就变成了1 == NaN
,结果就是 false。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 紫升的博客!
评论