宽松相等分析

== 与 === 的本质区别:是否允许隐式强制类型转换。

第一步 null 和 undefined的宽松相等

nullundefined之间的宽松相等的,它们与 其它任何值都不宽松相等。

第二步 布尔值与其它类型的宽松相等比较

其它类型布尔之间宽松相等比较时,将 布尔类型转化为 数字后在进行比较。

第三步 字符串、数字的宽松相等

字符串数字之间宽松相等比较时,统一转化为 数字后比较。

第四步 对象与非对象之间的宽松相等

先将对象进行 toPrimitive(obj)处理得到一个 基本数据类型,再进行宽松相等比较。
toPrimitive操作:先调用对象的valueOf(),如果没有则调用对象的toString()。

你可能感兴趣的:(宽松相等分析)