JS双等运算符(隐式转换)
两特殊,两规则
-
如果等号两边
类型相同
,直接比较值第一种特殊情况,如果类型相同
NaN==NaN 结果false
-
如果两边
类型不同
第二种特殊情况,null==undefined 结果 true
第一条规则:如果两端都是
原始类型
,双方转数字
注意:null是特殊的,它
如果参与数学运算的话,就是0
,但是==的时候就作为独立的null,所以0不等于null
第二条规则:如果有一端
不是原始类型
,那么对象转原始
。然后原始类型比较
对象转原始的规则:
-
首先看对象里是否有
Symbol.toPrimitive()
方法 -
其次判断对象里是否有
valueOf()
方法 -
最后调用
toString()
方法