- ES5比较值得问题:
- “==”
会进行数据类型转换 - “===”
+0 === -0 // false
NaN === NaN // false
- ES6提出同值相等算法,"Same-value equality",用来比较两个值是否严格相等
Object.is({},{}); // false
Object.is(+0, -0); // false
Object.is(NaN,NaN); // true
- 使用ES5实现Object.is
Object.defineProperty(Object, 'is', {
value: function(x,y){
if(x === y){
// 不能让 + 0 === -0
return x !== 0 || 1/x === 1/y
}
return x!==x && y !== y;
},
configurable: true,
enumerable: false,
writable: true
})```