为什么 null >= 0 是 true,但是 null == 0 是 false (隐式类型转换)
lovelmh13 opened this issue · 0 comments
lovelmh13 commented
== 的比较过程
总结一下就是:
能转数字的最后都转成数字,对象用 ToPrimitive 转成原始类型,两边进行比较。
但是注意,按照上面的规则,undefined 和 null 只有在这俩比较的时候,undefined == null // true
,不会变成 0。
undefined 和 null 在进行相等判断的时候,不会进行类型转换!
所以,null == 0
和 undefined == 0
都是 false
。
>=
进行大于等于比较的时候,undefined 和 null 进行了类型转换,变成了 0,所以 null >= 0
是 true。
null > 0
是 false,同理,null 转化为了 0,0 > 0 是 false