在相等比较中使用 Object.is()
AprilTong
# 在相等比较中使用 Object.is()
# 前言
JavaScript 是弱类型的,在使用 == 作比较时,在一些情况下由于类型转换,会出现意想不到的结果。
0 == ' ' //true
null == undefined //true
1
2
2
JavaScript 提供了全等操作符===,它比==更加严格并且不会发生类型转换,但是用 === 来进行比较也不是最好的解决方案,也会出现问题。
NaN === NaN // false
1
# 敲重点
Es6 中提供了新的 Object.is(x, y)方法,它具有 === 的一些特点,而且更好、更精确,一些特殊的比较中是不会出现特殊情况。
- x: 被比较的第一个值
- y: 被比较的第二个值
- 返回: 一 Boolean 值,标示两个参数是否是同一个值
Object.is(0, ' ') //false
Object.is(null, undefined) //false
Object.is([1], true) //false
Object.is(NaN, NaN) //true
1
2
3
4
2
3
4