1. ホーム
  2. javascript

[解決済み] Object.isと===の比較

2022-04-27 12:44:28

質問

この比較を使用したコード例を偶然見つけました。

var someVar = 0;
Object.is(false, someVar); //Returns false 

知っている false == 0 になります。 true というわけで === .

どのように Object.is とは異なり === ?

解決方法は?

=== は、JavaScriptでは厳密比較演算子と呼ばれます。 Object.is と厳密な比較演算子の動作は全く同じですが NaN+0/-0 .

MDNより。

Object.is() メソッドによって同等であることとは異なります。 === 演算子を使用します。この演算子は === 演算子(および == 演算子も同様に、数値 -0 と +0 を等しい値として扱い Number.NaN とは等しくないので NaN .

以下のコードは、以下の違いを強調しています。 ===Object.is() .

console.log(+0 === -0); //true
console.log(Object.is(+0, -0)); //false

console.log(NaN === NaN); // false
console.log(Object.is(NaN, NaN)); //true

console.log(Number.NaN === Number.NaN); // false
console.log(Object.is(Number.NaN, Number.NaN)); // true

console.log(NaN === Number.NaN); // false
console.log(Object.is(NaN, Number.NaN)); // true

<イグ

他の例もご覧いただけます。 ここで .

備考 : Object.is は ECMAScript 6 の提案の一部であり、まだ広くサポートされていません(例えば、Internet Explorer のどのバージョンでも、他のブラウザの多くの古いバージョンでもサポートされていません)。しかし、上記のリンクにある非ES6ブラウザ用のポリフィルを使用することができます。