- 类型一致时比较原始值或引用值,值相同则相等(例外: NaN 不等于自身)
- null 仅与 undefined 互等
- 所有运算子自动转为 number,若 string 转为 NaN 则回退
==与=== 的区别在于是否进行类型的自动转换,=== 本文按下不表。
如有异议,欢迎在评论区提出!
案例
Number(<object>) 依次调用 object 的 valueOf 、 toString 方法,直到获取原始值。
// number * object
321 == { valueOf: () => 321 } // true
// string * object 下面证明了是 Number(object) 而不是 String(object),两个过程的区别在 valueOf、toString 方法调用顺序不同
'cba' == { valueOf: () => 'abc', toString: () => 'cba' }; // false
'cba' == { valueOf: () => 'cba', toString: () => 'abc'}; // true