JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのObject.is()メソッドとは?使い方と「==」との違いを解説

Object.is()メソッドとは

Object.is() は、JavaScriptにおいて2つの値が「同じ」かどうかを判定するための静的メソッドです。等価性の比較を行う点では ===== と似ていますが、いくつかの重要な違いがあります。

Object.is() が2つの値を「同じ」と判定する条件は以下の通りです。

  • 両方の値が undefined、または両方が null である
  • 両方が true、または両方が false である
  • 文字列の場合、長さ・含まれる文字・並び順がすべて同一である
  • 数値の場合、両者の符号(極性)が等しい
  • 両方が NaN である場合も「同じ」とみなされる(NaN === NaN は false になる点に注意)

基本構文

Object.is(val1, val2);

このメソッドは2つの引数を受け取り、それらが等しいかどうかを厳密に検証します。等しい場合は true を、そうでない場合は false を返します。

Object.is()と「==」演算子の違い

Object.is()== の大きな違いは、+0-0 を比較した際の挙動です。

  • Object.is(+0, -0)false を返す
  • +0 == -0 → true を返す

つまり、Object.is() は値の符号(極性)まで厳密に区別して判定していることがわかります。また、NaN の比較においても Object.is(NaN, NaN) は true を返すため、より数学的に直感に近い等価性チェックが可能です。

サンプルコード

<html>
<body>
<script>
    // 同じ文字列を比較(文字・順序とも一致)
    var val = Object.is("tutorialspoint", "tutorialspoint");
    document.write(val);
    document.write("</br>");

    // 符号(極性)の比較:+0 と -0 は異なると判定される
    var pol = Object.is(-0, +0);
    document.write(pol);
    document.write("</br>");

    // 異なる文字列を比較
    var uneq = Object.is("tutorialspoint!", "tutorialspoint");
    document.write(uneq);
    document.write("</br>");

    // オブジェクト同士の比較(参照が異なるため false)
    var obj = Object.is({object : 1}, {object : 2});
    document.write(obj);
</script>
</body>
</html>

実行結果

true
false
false
false

このように、Object.is() はプリミティブ値の厳密な一致判定に適しており、特に +0/-0 や NaN を正確に扱いたい場面で役立つメソッドです。

  1. JavaScriptのObject.assign()メソッドとは?使い方と注意点を解説

    Object.assign()メソッドは、1つ以上のソースオブジェクトからターゲットオブジェクトへ、列挙可能な独自プロパティの値をすべてコピーするためのメソッドです。戻り値として、コピー先となったターゲットオブジェクトが返されます。 基本的な使い方 const targetObj = { a: 1, b: 2 }; const sourceObj = { b: 4, c: 5 }; const returnedTarget = Object.assign(targetObj, sourceObj); console.log(targetObj); console.log(returnedTar

  2. JavaScriptのMapオブジェクトとは?特徴と基本的な使い方を解説

    JavaScriptのMapオブジェクトとは MDNドキュメントによると、Mapオブジェクトは「キーと値のペア」を保持し、キーが挿入された元の順序を記憶するデータ構造です。任意の値(オブジェクトとプリミティブ値の両方)を、キーまたは値として自由に使用できます。 ここで特に重要なポイントは、オブジェクトそのものもMapのキーとして使えるという点です。これは通常のJavaScriptオブジェクトでは実現できない動作です。一般的なJSオブジェクトでは、キーとして使用できるのはプリミティブ値(文字列や数値など)のみに限られます。 さらに、Mapが特定の場面で役立つもう一つの大きな特徴は、反復可能(it