Object.is()メソッドとは
Object.is()メソッドは、厳密な等価性を比較するためのもので、引数を2つ受け取ります。具体的には、第一引数と第二引数を比較して、両方が同じ値と型であるかどうかを確認します。第一引数と第二引数が同じオブジェクトの場合にtrueを返します。
==演算子や===演算子との違い
- 特殊なケースの扱い:
- == 演算子は、特殊なケースで型変換を行って比較を行います。例えば、0 == false は true を返します。
- === 演算子は、型変換を行わずに比較を行うため、型が異なる場合は常に false を返します。例えば、0 === false は false を返します。
- Object.is() メソッドは、特殊なケースを持ちません。つまり、型変換を行わずに厳密な等価性を比較します。
2. NaN(非数値)の扱い:
- == 演算子では、NaN == NaN は false を返します。
- === 演算子でも同様に NaN === NaN は false を返します。
- Object.is() メソッドは、NaN 同士を比較する際に true を返します。
3. -0と+0の扱い:
- == および === 演算子では、 -0 === +0 は true を返します。
- Object.is() メソッドでは、 -0 と +0 を区別し、Object.is(-0, +0) は false を返します。
使い方
let a = 'foo';
let b = 'foo';
console.log(Object.is(a, b)); // true