如果被比较的两个数据类型不一致,则会自动进行类型转换后再比较。
判断X == Y
:
判断两者类型是否相同。若相同,则比较值是否相等。
若类型不相等,先进行类型转换。
首先判断是否为null == undefined
,若是,则返回true
。
判断是否为string === number
,若是,将string
转化为number
后再判断两者值是否相等。
'123'
=> 123
判断是否出现boolean
,若出现boolean
,将boolean
转化为number
后再进行判断。
true
=> 1
,false
=> 0
判断其中一方是否为 object
且另一方为 string
、number
或者 symbol
,是的话就会把 object
转为原始类型再判断。
{ name: 'jack' }
=> '[object Object]'
判断流程总结如下图所示:
不会进行类型转换,直接判断两者类型、值是否都相同。
尽量使用
===
,不使用==
。