先转换,再比较。通常称为强制转型
仅比较而不转换
如果一个操作数是对象,另一个操作数不是,则调用对象的方法,valueOf() 或者 toString() 方法,用得到的基本类型值按照前面的规则进行比较。 **对象 => 对象.valueOf() | 对象.toString() => 字符串 => 数值** |
还需要遵循下列规则(4 点)
Function, Array, Object 属于引用类型,使用==操作符时,比较的是地址
[] == ![] => [] == false => Number([].toString()) = ‘’ => ‘’ == false => 0 == 0 => true
{} == !{} => {} == false => Number({}.toString()) => Number(‘[object Object]’) => NaN == false => false