(標準組み込みオブジェクト > Object > メソッド)
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/is
Object.isは渡された2つの値が等しいかどうか調べる関数である。この関数による等値判定は基本的には===と同じ。
とはいえ、Object.isは===と少しだけ異なるところがあり、ある意味で===よりもさらに厳密な等値判定が可能になっている。Object.isが===と異なるのは次の2点だけである。
- NaN同士を比較するとtrueになる
- +0と-0を比較するとfalseになる
// NaNに対する動作の違い
console.log(Object.is(NaN, NaN)); // true
console.log(NaN === NaN); // false
// +0と-0の区別
console.log(Object.is(+0, -0)); // false
console.log(+0 === -0); // true(===は+0と-0を同じとみなす)
それ以外の点ではObject.isは===と同じである。暗黙の型変換は行なわれず、オブジェクトは参照として比較されるなどの点も同じである。
(※JavaScriptにはゼロが+0と-0の2種類ある。IEEE 754浮動小数点数に存在する概念。)