== equality 等同
==, 两边值类型不同的时候,要先进行类型转换,再比较。
1、如果两个值类型相同,进行 === 比较。
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
a、如果一个是null
、一个是undefined
,那么[相等]。
b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
c、如果任一值是 true
,把它转换成 1
再比较;如果任一值是 false
,把它转换成 0
再比较。
d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString
或者valueOf
方法。js核心内置类,会尝试valueOf
先于toString
;例外的是Date
,Date
利用的是toString
转换。
e、任何其他组合,都[不相等]。
=== identity 恒等
===,不做类型转换,类型不同的一定不等。