=== 严格判断
除了NaN === NaN 为false
+0 === -0 为true
其余判断都没有问题(上诉两个问题可以用Object.is(A,B)解决 或者通过isNaN(NaN)来判断是否为NaN)
== 转换类型后判断
规则如下
- 如果两个值的类型一样,则严格判断
- 如果不一样,就类型转换
- 一个是null、一个是false,那么相等
- 一个是字符串、一个是数值,那么会将字符串转换为数字再比较
- 如果随便一个值是布尔类型,将其转换为数字再比较(true转换为1, false转换为0)
- 如果一个是对象,一个是基础类型类型,将对象通过toString()或者valueOf转换为基础类型,如果类型不相同,按照上面的规则继续转换。如果类型相同,则直接比较。
- 其余都为false