私はこの比較を使用しているコード例を見つけました:
var someVar = 0;
Object.is(false, someVar); //Returns false
それが私たちが持っている理由false == 0
です。true
===
Object.is
とどう違うのですか===
?
ベストアンサー1
===
は、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 ブラウザー用のポリフィルを使用できます。