ES9 中新增了 Object.is() 方法详解

阅读时长 2 分钟读完

在 ES9 中,新增了 Object.is() 方法,这个方法主要用于判断两个值是否相等,相对于传统的 === 运算符来说,Object.is() 方法对于 NaN、0 和 -0 的判断会有不同,下面我们来详细深入地了解一下。

传统的 === 运算符

先来看看传统的 === 运算符判断相等的规则:

  1. 如果两个值类型不同,直接返回 false;
  2. 如果两个值都是数字,并且值相同,返回 true;
  3. 如果两个值都是字符串,并且字符长度相同,并且字符顺序和内容都相同,返回 true;
  4. 如果两个值都是布尔值,并且相等,返回 true;
  5. 如果两个值都指向同一个对象或者函数,返回 true;
  6. 如果两个值都是 null 或者 undefined,返回 true;
  7. 如果两个值都是 NaN,返回 false;
  8. 如果两个值都是 +0 或者 -0,返回 true;
  9. 其他情况都返回 false。

可以看到,对于 NaN、+0 和 -0 的判断规则与我们的直觉不太相符。

新增的 Object.is() 方法

在 ES9 中,新增了 Object.is() 方法来判断两个值是否相等,它与 === 运算符的不同点在于:

  1. 对于 NaN,两个 NaN 相等;
  2. 对于 +0 和 -0,它们不相等。

语法格式如下:

value1value2 表示要比较的两个值,如果相等,则返回 true,否则返回 false。

下面是一些示例代码:

总结

ES9 中新增的 Object.is() 方法可以更加准确地判断两个值是否相等,尤其是对于 NaN、0 和 -0 的判断可以更加符合我们的直觉,使用时需要注意判断的两个值是否符合我们的需求。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ef0565f6b2d6eab39050c2

纠错
反馈