lovelmh13/myBlog

为什么 null >= 0 是 true,但是 null == 0 是 false (隐式类型转换)

lovelmh13 opened this issue · 0 comments

== 的比较过程

image
image

总结一下就是:
能转数字的最后都转成数字,对象用 ToPrimitive 转成原始类型,两边进行比较。
但是注意,按照上面的规则,undefined 和 null 只有在这俩比较的时候,undefined == null // true,不会变成 0。

undefined 和 null 在进行相等判断的时候,不会进行类型转换!

所以,null == 0undefined == 0 都是 false

>=

进行大于等于比较的时候,undefined 和 null 进行了类型转换,变成了 0,所以 null >= 0 是 true。

null > 0 是 false,同理,null 转化为了 0,0 > 0 是 false