主题
JS两值比较
两值比较 ==
的五条原则
从上到下按规则比较,直到能得到确切结果为止
- 两端类型相同,比较值
- 两端存在
NaN
, 返回false
undefined
和null
只有在与自身比较,或者相互比较时, 才会返回true
- 两端都是原始类型, 转换成数字比较
- 一端是原始类型, 一端时对象类型, 把对象转为原始类类型后进入第1步
对象如何转为原始类型?
如果对象拥有
[Symbol.toPrimitive]
方法, 调用该方法. 若该方法能得到原始值, 则使用该原始值 若得不到原始值, 则会抛出异常调用对象的
valueOf
方法 若该方法能得到原始值, 则使用该原始值 若得不到, 进入下一步调用对象的
toString
方法 若该方法能得到原始值, 则使用该原始值 若得不到, 则抛出异常