阿里:如何判断两个变量相等
使用 API:Object.is()
方法判断两个值是否为同一个值
Object.is(x, y)
Polyfill:
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;
}
};
}
扩展:
JavaScript提供三种不同的值比较操作:
严格相等比较:使用 === 抽象相等比较:使用 == 以及 Object.is
(ECMAScript 2015/ ES6 新特性):同值相等
其中:
===:进行相同的比较,不进行类型转换 (如果类型不同, 只是总会返回 false ) ==:执行类型转换,比较两个值是否相等 Object.is
:与 === 相同,但是对于NaN
和-0
和+0
进行特殊处理,Object.is(NaN, NaN)
为true
,Object.is(+0, -0)
为false
来自:https://github.com/sisterAn/JavaScript-Algorithms
最后
评论