溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用JavaScript中的Object.is()與嚴格相等運算符

發布時間:2021-09-30 16:36:55 來源:億速云 閱讀:169 作者:柒染 欄目:web開發

如何使用JavaScript中的Object.is()與嚴格相等運算符,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

三重相等運算符 === 嚴格檢查2個值是否相同:

1 === 1;    // => true 1 === '1';  // => false 1 === true; // => false

但是,ES2015規范引入了 Object.is(),其行為與嚴格的相等運算符幾乎相同:

Object.is(1, 1);    // => true Object.is(1, '1');  // => false Object.is(1, true); // => false

主要問題是:什么時候使用 Object.is() 代替嚴格的相等性檢查?讓我們找出答案。

1. 嚴格相等檢查操作符

首先,讓我們快速回顧一下嚴格的相等運算符是如何工作的。

當兩個值的類型相同且持有相同的值時,嚴格相等檢查運算符的計算結果為 true。

例如,以下原始值是相等的,因為它們是相同的類型且具有相同的值:

1         === 1;         // => true 'abc'     === 'abc';     // => true true      === true;      // => true null      === null;      // => true undefined === undefined; // => true

嚴格相等運算符不執行類型的強制轉換,即使操作符持有合理的相同值,但是不同類型的操作符,它們也不是嚴格相等的:

1    === '1';       // => false 1    === true;      // => false null === undefined; // => false

對對象執行嚴格相等檢查時,對象僅與自身嚴格相等:

const myObject = { prop: 'Value' }; myObject === myObject;  // => true

即使2個對象的屬性和值完全相同,它們的值也不同:

const myObject1 = { prop: 'Value' }; const myObject2 = { prop: 'Value' }; myObject1 === myObject2; // => false

以上比較方案在 Object.is(valueA,valueB) 中的工作原理完全相同。

嚴格相等檢查和 Object.is() 之間的區別在于,如何處理 NaN 和如何處理負零 -0。

首先,NaN(非數字)并不嚴格等于任何其他值,即使使用另一個 NaN:

NaN === NaN; // => false NaN === 1;   // => false

其次,嚴格相等運算符不能將 -0 與 +0 區分開:

-0 === +0; // => true

嚴格相等運算符使用嚴格相等比較算法。

http://www.ecma-international.org/ecma-262/7.0/index.html#

sec-strict-equality-comparison

2. Object.is()

Object.is(valueA,valueB) 以與嚴格相等運算符相同的方式檢查相等性的參數,但有兩個區別。

首先,NaN 等于另一個 NaN 值:

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

其次,Object.is() 區分 -0 和 +0:

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

與嚴格相等運算符相比,Object.is() 使用相同值比較算法。

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-samevalue


在大多數情況下,嚴格相等運算符是比較值的好方法。

如果你想直接檢查 NaN 值或對負零和正零進行更嚴格的區分,那么 Object.is() 是一個不錯的選擇。

Object.is() 作為比較值的函數性方法也很有用,例如在函數式編程中。

看完上述內容,你們掌握如何使用JavaScript中的Object.is()與嚴格相等運算符的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女