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

等価演算子(==)は、2つの値が「等しいかどうか」を比較する演算子です。
ただし、==は必要に応じて型変換(型の自動変換)を行ってから比較するという特徴があります。そのため、一見異なる値でもtrueになることがあります。
console.log(5 == "5");
console.log(true == 1);
実行結果は次のようになります。
5 == "5"→truetrue == 1→true
これは、JavaScriptが比較前に型を変換しているためです。
厳密等価演算子(===)とは?
厳密等価演算子(===)は、値だけでなく型も比較する演算子です。
型変換は行われないため、値が同じでも型が異なればfalseになります。
console.log(5 === "5");
console.log(true === 1);
実行結果は次のようになります。
5 === "5"→falsetrue === 1→false
文字列と数値、真偽値と数値は型が異なるため、どちらも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 == undefined→truenull === undefined→false0 == false→true0 === false→false"" == false→true"" === false→false
これらはすべて、==が型変換を行うことによって起こる結果です。
比較プログラムの例
// 等価演算子
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開発では===が使われています。
==を使う場面
現在ではあまり使われませんが、型変換を利用した比較を行いたい場合には==を使うことがあります。
代表的なのは、nullとundefinedの両方をまとめて判定するケースです。
if (value == null) {
console.log("値が存在しません");
}
このコードでは、valueがnullでもundefinedでも条件が成立します。
初心者が覚えておきたいポイント
==は型変換を行って比較します。===は型変換を行わず、値と型の両方を比較します。- 現在のJavaScriptでは、基本的に
===を使用するのが推奨されています。 ==は意図しない比較結果になることがあるため注意が必要です。- 特別な理由がない限り、
===を使う習慣を付けると安全です。
まとめ
==は型変換を行って値を比較する演算子である。===は型変換を行わず、値と型の両方を比較する演算子である。- 型変換によって
==は予想外の結果になる場合がある。 - 現在のJavaScriptでは、基本的に
===を使用することが推奨されている。 ==は特殊な用途を除いて使用を控えるのが一般的である。