Posted at

JavaScriptの==と===の違い

JavaScriptには ===== という演算子がありますが、これらは挙動が違います。

== は等価演算子といい、左右の型が異なる場合、暗黙的に型変換を行います。

1 == '1' // true (文字列の '1' が数値の 1 に変換されるため)

=== は厳密等価演算子といい、左右の型が異なる場合でも暗黙的に型変換を行いません。

1 === '1' // false

暗黙的な型変換はバグを生みやすいので、JavaScript において == を利用することは推奨しません。おとなしく === を利用しましょう。


== が使える場合

== が使われるケースとして、nullundefined のチェックがあります。

if (val === null || val === undefined) {

// 何か処理
}

この場合、

if (val == null) {

// 何か処理
}

と書くことによって暗黙的な型変換により、undefined のチェックも同時に行ってくれます。

しかし、個人的には明示的に比較したほうがわかりやすいと思うので、(紹介しておいてアレですが)前者の比較のほうが好みです。

ちなみに、少ないサンプルですが以前アンケートをとったときもこのように val === null || val === undefined での比較をする人の方が多かったです。