Open sisterAn opened 4 years ago
避免+0,-0,1/-Infinity,1/Infinity都相等。
function is(x, y) {
if (x === y) {
return x !== 0 || y !== 0 || 1 / x === 1 / y;
} else {
return x !== x && y !== y;
}
}
Object.is(value1, value2);
/**
* https://www.cnblogs.com/lindasu/p/7471519.html
* === Object.is
* https://github.com/sisterAn/JavaScript-Algorithms/issues/116
*/
Object._is = function(x,y) {
if(x===y) {
return x!==0||1/x===1/y
} else {
return x!==x&&y!==y
}
}
console.log(Object._is(NaN,NaN))
使用 API:
Object.is()
方法判断两个值是否为同一个值Polyfill:
扩展:
JavaScript提供三种不同的值比较操作:
Object.is
(ECMAScript 2015/ ES6 新特性):同值相等其中:
Object.is
:与 === 相同,但是对于NaN
和-0
和+0
进行特殊处理,Object.is(NaN, NaN)
为true
,Object.is(+0, -0)
为false