1. 首页
  2. IT资讯

JavaScript中的 Object.is() 与 === 运算符有什么区别?

如果要检查 JavaScript 中的相等性,有两个比较运算符:双等号运算符(==)和三等号运算符(===)。

JavaScript中的 Object.is() 与 === 运算符有什么区别?

简而言之,双等号运算符(==)仅仅比较值,而三等号运算符(===)可以比较值和类型。但是还有第三个选项 Object.is(),除了 NaN,+0 和 -0 之外,其行为与三等号于运算符相同。

以下是一些例子,可进一步明确说明:

  1. {} === {}; // false

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

  3. 1 === 1; // false

  4. Object.is(1, 1); // false

  5. +0 === -0; // true

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

  7. NaN === NaN; // false

  8. Object.is(NaN, NaN); // true

以下代码是在 ES5 中模拟实现的Object.is:

  1. Object.defineProperty(Object, ‘is’, {

  2.   value: function(x, y) {

  3.     if (x === y) {

  4.       // 针对+0 不等于 -0的情况

  5.       return x !== 0 || 1 / x === 1 / y;

  6.     }

  7.     // 针对NaN的情况

  8.     return x !== x && y !== y;

  9.   },

  10.   configurable: true,

  11.   enumerable: false,

  12.   writable: true

  13. });

本文来自投稿,不代表程序员编程网立场,如若转载,请注明出处:http://www.cxybcw.com/203842.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code