JavaScriptで2つの値を比較するには演算子を用います。2つの値を比較し、等価(または不等価)であるかどうかを判断する、比較のケースがあります。そのケースでは、JavaScriptにおいて以下の2つの演算子を使用することが可能です。
- == 演算子
- === 演算子
== と=== は、2つの値が等価であるかどうかを判断するために使用する比較演算子です。ただし、これらの演算子は型変換の有無において異なります。
「===」と「==」の違いとは?
「===」と「==」の違いを以下に示します。
| 項目 | ==(等価) | ===(厳密等価) |
| 名称 | (緩い)等価演算子 | 厳密等価演算子 |
| 型変換 | 型変換を行う | 型変換を行わない |
| 型のチェック | しない | する |
| 使用例 | 型変換が必要な場合に有用 | 型の一致が必要な場合に有用 |
| 例 | '5' == 5 はtrueを返す | '5' === 5 はfalseを返す |
| 結果 | 予期しない結果につながる可能性がある | より予測可能なふるまいを保証する |
「==」は具体的に何をするのですか?
- 型変換(型強制)の後に値を比較します。
- 2つの値が異なる型を持つ場合、JavaScriptは比較する前に共通の型に変換しようとします。
- そのため、ときに予期しない結果につながる可能性があります。
console.log(42 == '42'); // true
console.log(0 == false); // true
console.log(null == undefined); // true
console.log([] == false); // true
console.log('' == false); // true
これらの例では、JavaScriptは比較を行う前にオペランドを同じ型に変換します。たとえば、42 == '42' は、比較する前に文字列'42'が数値42に変換されるため、trueとなります。
「===」は具体的に何をするのですか?
- 値と型の両方を比較します。
- 型変換は行われません。
- 値と型の両方が同じ場合にのみtrueを返します。
console.log(5 === 5); // true
console.log('5' === 5); // false
console.log(true === 1); // false
console.log(null === undefined); // false
これらの比較において、型変換は行われません。そのため、型が異なる場合はfalseを返します。たとえば、'5' === 5 は、型が異なる(数値と文字列)ため、falseとなります。
JavaScript: == と === のベストプラクティス
- 基本ルール:常に === を使用する
===(厳密等価演算子)は型変換を行わないため、予測しやすく、安全でバグが起こりにくい。 - == は極力使わない(特殊ケースを除く)
==(緩い等価演算子)は型変換を伴い、思わぬ結果を招くことがある。
- == を使ってよいケース
ごく一部、特定の挙動を理解した上で使用する場面もある。● null と undefined をまとめて判定したいとき
if (value == null) {
// null と undefined の両方を拾う
}
まとめ
| 比較方法 | 推奨度 | 理由 |
| === | ⭐⭐⭐⭐⭐(強く推奨) | 型変換なし・安全・予測可能 |
| == | ⭐(非推奨) | 型変換で意図しない動作を引き起こす |
結論
JavaScriptにおいて、==は型変換を行い、共通の型にした後に値を比較します。一方、===は型変換を行わず、値と型の両方をチェックします。より予測可能で信頼性の高い比較には、===を使用するのが最適です。型変換が意図的かつ必要であるときにのみ、==を使用します。

