== 与 === 的本质区别:是否允许隐式强制类型转换。
第一步 null 和 undefined的宽松相等
null和undefined之间的宽松相等的,它们与 其它任何值都不宽松相等。
第二步 布尔值与其它类型的宽松相等比较
其它类型和 布尔之间宽松相等比较时,将 布尔类型转化为 数字后在进行比较。
第三步 字符串、数字的宽松相等
字符串和 数字之间宽松相等比较时,统一转化为 数字后比较。
第四步 对象与非对象之间的宽松相等
先将对象进行 toPrimitive(obj)处理得到一个 基本数据类型,再进行宽松相等比较。
toPrimitive操作:先调用对象的valueOf(),如果没有则调用对象的toString()。
网友评论