==

如果被比较的两个数据类型不一致,则会自动进行类型转换后再比较。

判断X == Y

  1. 判断两者类型是否相同。若相同,则比较是否相等。

  2. 若类型不相等,先进行类型转换。

  3. 首先判断是否为null == undefined,若是,则返回true

  4. 判断是否为string === number ,若是,将string转化为number后再判断两者值是否相等。

    '123' => 123

  5. 判断是否出现boolean,若出现boolean,将boolean转化为number后再进行判断。

    true => 1false => 0

  6. 判断其中一方是否为 object 且另一方为 stringnumber 或者 symbol,是的话就会把 object 转为原始类型再判断。

    { name: 'jack' } => '[object Object]'

判断流程总结如下图所示:

===

不会进行类型转换,直接判断两者类型是否都相同。

建议

尽量使用===,不使用==