语法
Object.is(value1, value2);
value1:被比较的第一个值
value2:被比较的第二个值
ES5 比较两个值是否相等,只有两个运算符:相等运算符()和严格相等运算符(=)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。
ES6 提出“Same-value equality”(同值相等)算法,Object.is就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
Object.is('test', 'test')
// true
Object.is({
}, {
})
// false
不同之处只有两个:一是+0不等于-0,二是NaN等于自身。
console.log(NaN === NaN); // false
console.log(0 === -0); // true
Object.is(NaN, NaN) // true
Object.is(+0, -0) // false