宽松相等分析

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

    推荐阅读