等価演算子(==)と厳密等価演算子(===) | 比較演算子 | JavaScript 超完全入門 基本から発展までのすべて

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

等価演算子(==)とは?

等価演算子(==)は、2つの値が「等しいかどうか」を比較する演算子です。

ただし、==必要に応じて型変換(型の自動変換)を行ってから比較するという特徴があります。そのため、一見異なる値でもtrueになることがあります。


console.log(5 == "5");
console.log(true == 1);

実行結果は次のようになります。

  1. 5 == "5"true
  2. true == 1true

これは、JavaScriptが比較前に型を変換しているためです。

厳密等価演算子(===)とは?

厳密等価演算子(===)は、値だけでなく型も比較する演算子です。

型変換は行われないため、値が同じでも型が異なればfalseになります。


console.log(5 === "5");
console.log(true === 1);

実行結果は次のようになります。

  1. 5 === "5"false
  2. true === 1false

文字列と数値、真偽値と数値は型が異なるため、どちらもfalseになります。

等価演算子と厳密等価演算子の違い

最大の違いは、型変換を行うかどうかです。

演算子 型変換 比較対象
== 行う 値を比較 5 == "5"true
=== 行わない 値と型を比較 5 === "5"false

比較の具体例

型変換によって結果が変わる例を見てみましょう。


console.log(null == undefined);
console.log(null === undefined);

console.log(0 == false);
console.log(0 === false);

console.log("" == false);
console.log("" === false);

実行結果は次のようになります。

  • null == undefinedtrue
  • null === undefinedfalse
  • 0 == falsetrue
  • 0 === falsefalse
  • "" == falsetrue
  • "" === falsefalse

これらはすべて、==が型変換を行うことによって起こる結果です。

比較プログラムの例


// 等価演算子
console.log(5 == "5");
console.log(true == 1);
console.log(null == undefined);

// 厳密等価演算子
console.log(5 === "5");
console.log(true === 1);
console.log(null === undefined);

このプログラムでは、同じ値を=====で比較しています。

比較結果を見ることで、型変換の有無による違いが分かります。

現在は===を使うのが基本

現在のJavaScriptでは、基本的には===を使用することが推奨されています。

==は便利な反面、意図しない型変換によって予想外の結果になることがあります。

例えば、次のコードは一見すると不思議な結果になります。


console.log("" == 0);
console.log(false == "");
console.log(false == 0);

これらはすべてtrueになります。

このような予期しない比較結果を避けるため、多くのJavaScript開発では===が使われています。

==を使う場面

現在ではあまり使われませんが、型変換を利用した比較を行いたい場合には==を使うことがあります。

代表的なのは、nullundefinedの両方をまとめて判定するケースです。


if (value == null) {
    console.log("値が存在しません");
}

このコードでは、valuenullでもundefinedでも条件が成立します。

初心者が覚えておきたいポイント

  • ==は型変換を行って比較します。
  • ===は型変換を行わず、値と型の両方を比較します。
  • 現在のJavaScriptでは、基本的に===を使用するのが推奨されています。
  • ==は意図しない比較結果になることがあるため注意が必要です。
  • 特別な理由がない限り、===を使う習慣を付けると安全です。

まとめ

  • ==は型変換を行って値を比較する演算子である。
  • ===は型変換を行わず、値と型の両方を比較する演算子である。
  • 型変換によって==は予想外の結果になる場合がある。
  • 現在のJavaScriptでは、基本的に===を使用することが推奨されている。
  • ==は特殊な用途を除いて使用を控えるのが一般的である。