等価演算子(==)とは?
等価演算子(==)は、2つの値が「等しいかどうか」を比較するために使用されます。この演算子は型変換を行うため、比較する値が異なるデータ型であっても、内部的に同じ型に変換された上で比較されます。
console.log(5 == '5'); // true
console.log(true == 1); // true
この例では、5という数値と'5'という文字列を比較していますが、JavaScriptが内部的に型変換を行うため、結果としてtrueが返されます。また、trueは1として扱われるため、true == 1もtrueになります。
厳密等価演算子(===)とは?
厳密等価演算子(===)は、等価演算子とは異なり、型変換を行わずに比較を行います。したがって、比較する値が異なる型であれば、たとえ値が同じであってもfalseが返されます。
console.log(5 === '5'); // false
console.log(true === 1); // false
この例では、5と'5'は異なるデータ型であるため、厳密等価演算子を使用するとfalseが返されます。同様に、trueと1も異なる型のためfalseになります。
等価演算子と厳密等価演算子の違い
等価演算子(==)と厳密等価演算子(===)の最大の違いは、型変換の有無です。等価演算子は比較前に型変換を行いますが、厳密等価演算子は型変換を行わず、値と型の両方が一致している場合のみtrueを返します。
| 演算子 | 動作 | 結果 |
|---|---|---|
== |
値が等しいかを比較(型変換あり) | 5 == '5' → true |
=== |
値と型の両方が等しいかを比較 | 5 === '5' → false |
比較の具体例
等価演算子と厳密等価演算子の違いを具体例でさらに理解していきましょう。
console.log(null == undefined); // true
console.log(null === undefined); // false
console.log(0 == false); // true
console.log(0 === false); // false
console.log('' == false); // true
console.log('' === false); // false
この例では、nullとundefined、0とfalse、空文字列''とfalseを比較しています。等価演算子では型変換が行われるため、いずれもtrueとなりますが、厳密等価演算子では型が異なるためfalseとなります。
プログラムの解説
<script>
// 等価演算子
console.log(5 == '5'); // true(型変換が行われる)
console.log(true == 1); // true(型変換が行われる)
console.log(null == undefined); // true
// 厳密等価演算子
console.log(5 === '5'); // false(型が異なる)
console.log(true === 1); // false(型が異なる)
console.log(null === undefined); // false(型が異なる)
</script>
このプログラムでは、等価演算子と厳密等価演算子の違いを明確に示しています。等価演算子では型変換が行われるため、5 == '5'のように異なる型でもtrueが返されますが、厳密等価演算子では型が一致していない場合はfalseが返されます。
等価演算子を使うべき場面
等価演算子は、異なる型を意識せずに単に「値」が同じかどうかを比較したい場合に便利です。例えば、ユーザーの入力値が文字列か数値かを問わず、同じ数値であれば等しいと判断したい場面では等価演算子を使用します。
厳密等価演算子を使うべき場面
厳密等価演算子は、型も含めて「厳密に等しいかどうか」を比較したい場合に使用します。データ型の違いが重要であり、正確な比較を行いたい場面では厳密等価演算子を使用する方が安全です。
まとめ
JavaScriptには2つの比較演算子、等価演算子(==)と厳密等価演算子(===)があります。等価演算子は型変換を行い、厳密等価演算子は型変換を行いません。異なる型を比較する必要がある場合は等価演算子を使い、正確な比較が必要な場合は厳密等価演算子を使用します。