关键词:等值判断
Object.is()与全等运算符(===)都用于比较两个值是否相等,但它们之间存在一些区别:
一、对特殊值的处理
NaN的比较:===认为NaN不等于任何值,包括它自身。Object.is()认为NaN只等于NaN。- 例如:
console.log(NaN === NaN); // false
console.log(Object.is(NaN, NaN)); // true-0和+0的比较:===认为-0和+0是相等的。Object.is()可以区分-0和+0。- 例如:
console.log(-0 === +0); // true
console.log(Object.is(-0, +0)); // false二、一般值的比较
- 对于其他值的比较,
Object.is()和===的行为类似:- 比较两个数字、字符串、布尔值、对象等,如果它们的值和类型都相同,则认为它们相等。
- 例如:
console.log(5 === 5); // true
console.log(Object.is(5, 5)); // true
const obj1 = { a: 1 };
const obj2 = { a: 1 };
console.log(obj1 === obj1); // true
console.log(obj1 === obj2); // false
console.log(Object.is(obj1, obj1)); // true
console.log(Object.is(obj1, obj2)); // false