JavaScript 弱类 == 判断速查表
通过此表可以快速查询弱类判断结果。
JavaScript == 判断遵循规则如下:
- null == undefined => true
- 字符串 == 数字 => 先将字符串转换为数字,再比较两者的值
- 布尔值 == 非布尔值 => 将 true 转换为 1,false 转换为 0,再进行比较
- 对象 == 原始值 => 先将对象转换为原始值,再进行比较。JavaScript 内置类转换为原始值,先尝试调用 valueOf 方法,取得结果不是原始值再调用 toString 方法。日期类 Date 对象特殊,Date 对象只使用 toString 转换为原始值。
- 其他比较不相等。
原始值转换还体现在操作符 +,它可以对两个数值相加,也可以连接两个字符串,更可以转换操作数为数值。当参与 + 运算的操作数只有一个时,得到的结果与 parseFloat 非常相似。区别在于 + 右侧的操作数必须是合法的数值形式,parseFloat 从左到右尽可能地识别数字。
- + ‘5.2’ => 5.2
- parseFloat(‘5.2’) => 5.2
- + ‘5.2.5’ => NaN
- parseFloat(‘5.2.5’) => 5.2
- + ‘5.2a’ => NaN
- parseFloat(‘5.2a’) => 5.2
+ 的趣味更体现在原始值转换中,此处 Date 对象转换原始值只是一个引子。