相等运算符(==) 在遇到两个操作数类型不同的时候,要遵守的规则和类型转换
1、如果-个值是null, 另一个是undefined,则它们相等 null == undefined //返回true
2、如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值进行比较。
1 == "1" //1==1 //结果是true
2 == "1" //2==1 //结果是false
3、如果其中一个值是true,则将其转换为1再进行比较。如果其中一个值是false,则将其转换为0再进行比较。
"1" == true //1==1 结果是true
0 == false //0==0 结果是true
4、如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值,然后再进行比较。对象通过toString()
方法或者valueOf()
方法转换为原始值,JavaScript语言核心的内置类先尝试使用valueOf()
,再尝试使用toString()
,除了日期类,日期类只能使用toString()
转换,那些不是JavaScript语言核心中的对象则通过各自的实现中定义的方法转换为原始值。
原始值:不可变更的值,包括undefined、null、布尔值、数字、和字符串。
所有的对象都有toString()
和 valueOf()
这两个方法。 toString()
方法的作用是,返回一个反映这个对象的字符串。 valueOf()
方法的作用是,一个对象那个如果存在任意原始值,它就默认将对象转换为表示它的原始值。
5、其他不同类型之间的比较均不相等。