Object.is 与全等运算符(===)有何区别
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 615
Author 回答者: shfshanyue
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/is
- +0/-0
- NaN/NaN
if (!Object.is) {
Object.is = function (x, y) {
// SameValue algorithm
if (x === y) {
// Steps 1-5, 7-10
// Steps 6.b-6.e: +0 != -0
return x !== 0 || 1 / x === 1 / y;
} else {
// Step 6.a: NaN == NaN
return x !== x && y !== y;
}
};
}
Author 回答者: wuzqZZZ
Object.is()在===基础上特别处理了NaN,-0,+0,保证-0与+0不相等,但NaN与NaN相等
NaN === NaN // false
+0 === -0 // true
Object.is(+0 ,-0) // false
Object.is(NaN, NaN) // true