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

字号+ 编辑: Snake 修订: 小红帽 来源: 前端先锋eyeofangel 2023-09-09 我要说两句(0)

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

1.jpg

简而言之,双等号运算符(==)仅仅比较值,而三等号运算符(===)可以比较值和类型。

但是还有第三个选项 Object.is(),除了 NaN,+0 和 -0 之外,其行为与三等号于运算符相同。

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

{} === {}; // false 
Object.is({}, {}); // false 
1 === 1; // false 
Object.is(1, 1); // false 
+0 === -0; // true 
Object.is(+0, -0); // false 
NaN === NaN; // false 
Object.is(NaN, NaN); // true

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

Object.defineProperty(
    Object,
     'is', 
     { value: function(x, y) { 
         if (x === y) { 
         // 针对+0 不等于 -0的情况 
         return x !== 0 || 1 / x === 1 / y; 
         } // 针对NaN的情况 
         return x !== x && y !== y; 
         }, 
     configurable: true, 
     enumerable: false, 
     writable: true 
     }
 );

阅完此文,您的感想如何?
  • 有用

    0

  • 没用

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.交流群: PHP+JS聊天群

相关课文
  • JS如何防止父节点的事件运行

  • nodejs编写一个简单的http请求客户端代码demo

  • 使用Sublime Text3 开发React-Native的配置

  • 说一则为什么后端开发人员不选择node.js的原因

我要说说
网上宾友点评