JavaScriptには ==
と ===
という演算子がありますが、これらは挙動が違います。
==
は等価演算子といい、左右の型が異なる場合、暗黙的に型変換を行います。
1 == '1' // true (文字列の '1' が数値の 1 に変換されるため)
===
は厳密等価演算子といい、左右の型が異なる場合でも暗黙的に型変換を行いません。
1 === '1' // false
暗黙的な型変換はバグを生みやすいので、JavaScript において ==
を利用することは推奨しません。おとなしく ===
を利用しましょう。
==
が使える場合
==
が使われるケースとして、null
と undefined
のチェックがあります。
if (val === null || val === undefined) {
// 何か処理
}
この場合、
if (val == null) {
// 何か処理
}
と書くことによって暗黙的な型変換により、undefined
のチェックも同時に行ってくれます。
しかし、個人的には明示的に比較したほうがわかりやすいと思うので、(紹介しておいてアレですが)前者の比較のほうが好みです。
ちなみに、少ないサンプルですが以前アンケートをとったときもこのように val === null || val === undefined
での比較をする人の方が多かったです。
JavaScript で null or undefined のチェック
— Yuki Terashima (@y_temp4) February 26, 2019