null undefined false 值转换的比较
JavaScript权威指南
关于等号进行类型转换中的内容:
1、如果两个操作数的类型相同,则 ==
同 ===
的比较规则相同。
2、如果两个操作数类型不相同,==
相等操作符可能会认为他们相等。检测相等会遵守如下规则和类型转换:
a、如果一个值是null
,另外一个是undefined
,则他们相等;
b、如果一个值是数字,另一个是字符串,先将字符串转换成数字,然后使用转换后的值进行比较;
c、如果一个值是true
,则将其转换为1在进行比较。如果其中一个值是false
,则将其转换0再进行比较;
d、如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值,在进行比较。对象通过toString()
或者valueOf()
方法转换为原始值。js语言核心的内置首先尝试使用valueOf()
,再尝试使用toString()
,除了日期类,日期类只使用toString()
转换。
注:null
和undefined
没有这两种方法
e、其他不同类型之间的比较均不相等。