Object.is
说明
静态方法确定两个值是否为相同值。
语法
描述
- 如果是基础类型的两个值,则直接判断是否相等,唯一特殊的
+0
和-0
是不等的,NaN
和NaN
又是相等的,还有两个特殊的基础类型:Symbol
,BigInt
Object.is(BigInt(1), BigInt(1)) // true Object.is(Symbol(1), Symbol(1))// false const s = Symbol(1) Object.is(s,s) // false
- 引用类型的值比较的两个值的引用地址
Object.is({}, {}) // false const obj = {} Object.is(obj, obj) // true
与 == 和 ===的区别
Object.is和==
使用==比较当左右两边类型不同时,会进行类型转换,而Object.is则不会。例如 ‘’ == false 的结果是 true,但是 Object.is() 不会对其操作数进行类型转换。
Object.is和===
Object.is和===直接的唯一区别就是对带符号的0或NaN之间的不同
+000 === -000 // true
Object.is(+000, -000) // false
NaN === NaN // false
Object.is(NaN, NaN) // true