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的原因

我要說說
網上賓友點評