「等価演算子」と「厳密演算子」
JavaScriptでは、2つのオペランドが等しいか比較するための等価演算子が「等価演算子(==)」と「厳密等価演算子(===)」の2種類ある。
等価演算子:オペランド同士の値が同じの場合、true
厳密等価演算子:オペランド同士の同じ型、同じ値の場合、true
ここで、等価演算子はオペランド同士が異なる型の場合、比較する際に同じ型に暗黙的な型変換されてから比較される。
// 同じ値だが型が異なる場合
console.log(1 == '1'); // true
console.log(1 === '1'); // false
// 真偽値の場合
console.log(0 == false); // true
console.log(0 === false); // false
#「暗黙的な型変換」と「明示的な型変換」
暗黙的な型変換とは、ある処理において、その処理過程でオペランドの型によって、自動的に型変換されること。
// 暗黙的な型変換
console.log(1 + true); // 2
上記のように、tureが1に暗黙的に型変換されて加算が行われる。
一方で、明示的な型変換を行う場合は、以下のようなコンストラクタ関数を使う。
// 値から真偽値
Boolean(1); // true
Boolean(null); // false
// 数値から文字列
String(100); // "100"
String(true); // "true"
// 文字列から数字
Number("100"); // 100
#まとめ
等価演算子と型変換について調べてまとめてみた。
等価演算子の場合、暗黙的な型変換によって意図しない結果になってしまうことがある。
暗黙的な型変換が行われると、例外が発生しないため、バグの発見が難しくなる。そのため、暗黙的な型変換はできるだけ避けるべきであり、比較には厳密等価演算子を使うべきだと学んだ。