JavaScript/!==

カテゴリ:Book:JavaScript#!==%20

JavaScriptの 厳密不等価演算子 (!==) は、2つの値が「型または値のどちらかが異なる」かどうかを比較するための演算子です。厳密等価演算子 (===) の逆の動作をします。以下に、その特徴と使い方を詳しく説明します。

厳密不等価演算子 (!==) の特徴

  • 型または値のどちらかが異なる場合に true を返す:
    • 2つの値が異なる型であるか、または異なる値である場合に true を返します。
    • 型と値の両方が同じ場合にのみ false を返します。
  • 暗黙的な型変換を行わない:
    • 緩い不等価演算子 (!=) とは異なり、暗黙的な型変換を行いません。
    • 例えば、"5" != 5false ですが、"5" !== 5true です。

使用例

以下は、厳密不等価演算子 (!==) の使用例です。

例1: 同じ型と値

console.log(5 !== 5); // false
console.log("hello" !== "hello"); // false
console.log(true !== true); // false
console.log(null !== null); // false
console.log(undefined !== undefined); // false

例2: 異なる型

console.log("5" !== 5); // true (型が異なる)
console.log(true !== 1); // true (型が異なる)
console.log(null !== undefined); // true (型が異なる)

例3: 異なる値

console.log(5 !== 10); // true (値が異なる)
console.log("hello" !== "world"); // true (値が異なる)
console.log(true !== false); // true (値が異なる)

例4: オブジェクトの比較

const obj1 = { a: 1 };
const obj2 = { a: 1 };
const obj3 = obj1;

console.log(obj1 !== obj2); // true (異なるオブジェクト参照)
console.log(obj1 !== obj3); // false (同じオブジェクト参照)

緩い不等価演算子 (!=) との違い

  • 緩い不等価演算子 (!=):
    • 型が異なる場合、暗黙的な型変換を行ってから比較します。
    • 例:
      console.log("5" != 5); // false (文字列 "5" が数値 5 に変換される)
      console.log(true != 1); // false (真偽値 true が数値 1 に変換される)
      
  • 厳密不等価演算子 (!==):
    • 型が異なる場合、暗黙的な型変換を行わずに true を返します。
    • 例:
      console.log("5" !== 5); // true (型が異なる)
      console.log(true !== 1); // true (型が異なる)
      

厳密不等価演算子を使うべき場面

  • 型の不一致を確認したい場合:
    • 例えば、数値と文字列を区別したい場合に使用します。
    • 例:
      const input = "5";
      if (input !== 5) {
        console.log("入力は数値ではありません"); // こちらが実行される
      }
      
  • オブジェクトの参照が異なることを確認したい場合:
    • 同じオブジェクトを指していないことを確認する場合に使用します。
    • 例:
      const obj1 = { a: 1 };
      const obj2 = { a: 1 };
      if (obj1 !== obj2) {
        console.log("異なるオブジェクトです"); // こちらが実行される
      }
      
  • nullundefined を区別したい場合:
    • nullundefined は異なる型として扱われるため、厳密不等価演算子で区別できます。
    • 例:
      console.log(null !== undefined); // true
      

注意点

  • NaN の比較:
    • NaN はどの値とも等しくないため、NaN !== NaNtrue になります。
    • NaN を比較する場合は、Number.isNaN() を使用します。
    • 例:
      console.log(NaN !== NaN); // true
      console.log(Number.isNaN(NaN)); // true
      
  • オブジェクトの比較:
    • オブジェクトは参照で比較されるため、同じ内容でも異なるオブジェクトは true になります。
    • 例:
    console.log({ a: 1 } !== { a: 1 }); // true
    

まとめ

  • 厳密不等価演算子 (!==) は、型または値のどちらかが異なる場合に true を返します。
  • 暗黙的な型変換を行わないため、より厳密な比較が可能です。
  • 緩い不等価演算子 (!=) とは異なり、型の不一致を明確に区別できます。

厳密不等価演算子は、JavaScriptで安全で予測可能なコードを書くために非常に重要です。特に、型の不一致を確認する必要がある場面で積極的に使用しましょう。

カテゴリ:Book:JavaScript#!==%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension