==隐式转换的例子

79 阅读1分钟

"1" == true类型不同,"=="先做类型转换,把true转换为1,即为 "1" == 1;此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1。
如果比较:"1" === true 左侧为字符型,右侧为布尔型或数值型,左右两侧类型不同,结果为false;

如果比较: 1 === 1 左侧为数值型,右侧也为数值型,左右两侧类型相同,数值大小也相同,结果为true;
如果比较: 1 === 2 左侧为int数值型,右侧为int数值型,左右两侧类型相同,但数值大小不同,结果为false。

但是对于Array,Object等高级类型,==和===是没有区别的。

(1)如果两个值类型相同,再进行三个等号(===)的比较

  (2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:

    1)如果一个是null,一个是undefined,那么相等

    2)如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较

image.png