JavaScriptの「===」はなぜ存在する?―型と値の厳密な比較の意味

こんにちは。ゆうせいです。

今回は、JavaScriptを学んでいる人がよくつまずく「===」というちょっと変わった演算子について解説していきます。

「なんで == があるのに、わざわざ === なんてものがあるの?」と疑問に思ったこと、ありませんか?実はこれ、とても大事な理由があるんです。


JavaScriptにおける「==」と「===」の違いとは?

「==」は緩い比較(ゆる~く比べる)

==(二重イコール)は、型が違っても値が同じなら「等しい」とみなす演算子です。

たとえば:

'5' == 5 // true

これは文字列と数値なのに「等しい」と判定されます。

なぜかというと、JavaScriptはこのとき暗黙的な型変換(Type Coercion)を行うからなんです。つまり、「'5' を数値に変換してから比較しよう」と勝手に解釈するのです。

まるで、「テストで90点とった人」と「点数90の紙を見せられた人」を、どちらも「90点の人」と扱ってしまうような感じですね。

「===」は厳密な比較(ぴったり合わないとダメ)

一方で、===(三重イコール)は型も値も完全に一致していないと「等しい」とは認めません

'5' === 5 // false

この場合は、「文字列」と「数値」で型が違うので、たとえ見た目が同じでもNGになります。


どちらを使うべきか?―メリットとデメリット

== のメリットとデメリット

視点内容
メリット型が違っても比較できるため、コードが少し柔軟になる
デメリット想定外の型変換が起きることで、バグの原因になる

たとえば:

false == 0 // true
null == undefined // true

「え、これが等しいの?」と驚きませんか?

=== のメリットとデメリット

視点内容
メリット型も一致しているかどうかまで見てくれるので、バグを防ぎやすい
デメリットある程度、型をきちんと意識しないと使いづらいと感じることもある

どうしてJavaScriptに両方あるの?

JavaScriptは、元々「簡単に書ける言語」として作られた歴史があります。ですから、**初心者でも扱いやすいように型を自動で変換してくれる「==」**が導入されました。

しかし、後から「この自動変換が原因でバグが増える」と気づかれたため、型まで厳密に比較できる「===」が追加されたのです。

つまり、===バグを減らすためのセーフティ機能 なんです。


実際の使用例:こんなときは「===」を使おう

ユーザー入力をチェックする時

const userAge = '20';

if (userAge === 20) {
  console.log('成人です');
} else {
  console.log('未成年です');
}

これは表示されません。なぜなら、'20'(文字列)と 20(数値)は型が違うからです。

正しく動かすには型も揃える必要があります:

if (Number(userAge) === 20) {
  console.log('成人です');
}


数式的に考えてみよう

もし数式で == を表すとしたら、次のように考えられます:

  • a == b は「型を無視して値だけ比較する
  • a === b は「型も値も両方比較する

数式風に書くと:

  • a == b型を合わせたa = 型を合わせたb
  • a === b型(a) = 型(b) かつ a = b

例え話で理解する「==」と「===」

「==」は、ある意味「見た目で判断するタイプ」。「あ、見た目が似てるからたぶん同じ人!」という感じです。

「===」は、「名前も誕生日も一致しないと本人とは認めない」みたいな、しっかり者の確認マン。

あなたなら、どちらを信用しますか?


まとめ:原則は「===」を使う!

  • 型の違いがバグにつながりやすいため、基本的には === を使うのがおすすめ
  • == を使うときは、意図的に型変換が起きることを理解しているときだけ
  • 実務では === を使うスタイルが主流!

今後の学習のヒント

次に進むとしたら、以下のテーマもぜひチェックしてみてください!

  • JavaScriptの型(プリミティブ型と参照型)とは?
  • typeof演算子で型を確認する方法
  • nullとundefinedの違い
  • 型変換(Type Coercion)の詳しい仕組み

「なぜ?」を大事にしながら、一歩一歩理解を深めていきましょう!それが一番の近道です。

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。