Object.is()和三等号操作符在JavaScript中有什么区别?

如果你想在JavaScript中进行相等性检查,有两个比较运算符,这在之前的一篇文章中有详细解释。

简单来说,双等号操作符(==)只比较值,而三等号操作符(===)比较值和类型。但是还有第三个选项,Object.is(),它的行为与三等号操作符相同,除了NaN+0-0的情况。

以下是一些示例,以便更加清楚:

{} === {}; // false
Object.is({}, {}); // false

1 === 1; // true
Object.is(1, 1); // true

+0 === -0; // true
Object.is(+0, -0); // false

NaN === NaN; // false
Object.is(NaN, NaN); // true