JavaScript

javascriptの===と==の違い(一致判定の演算子)

javascriptの===と==の違い(一致判定の演算子)

JavaScriptで右辺と左辺が一致しているか確認する一致判定の演算子には、「===」と「==」の2種類があります。

この二つは、「どちらを使っても同じ結果がでるのでは?」と考えられる方もいるかもしれませんが、場合によっては違う結果となる場合があるので注意が必要です。

「===」の方がより厳密な一致判定の演算子

「===」と「==」の違いを一言で説明するなら、「===」の方がより厳密な一致判定を行うことができます。

例えば下記の例で解説すると、定数「number1」と「number2」の値は、両方とも1ですが、「number1」は数値型で「number2」は文字型となっています。

この場合、「===」で比較した場合の結果は「false」となり、「==」で比較した場合は、「ture」となります。

const number1 = 1;
const number2 = "1";


console.log(number1 === number2)   //false


console.log(number1 == number2)   //true

 

このように、「===」は、型が一致しているかも比較しているため、「==」に比べてより厳密に判定ができ、実際の開発においても、バグを生じる可能性を減少させることができますので、一致判定の演算子を利用する場合には、「===」を使う方が望ましいとされています。

JavaScriptの一致判定の演算子で「==」を使う場合

上記で解説した通り、JavaScriptで一致判定の演算子を使う場合、原則、厳密な一致判定ができる「===」を使うべきだとご紹介しましたが、

では、「==」は全く使わないかと言えば、実はつかいどころがあります。

 X == null   //null または undefined の場合にture

  X === null   //nullの場合のみture

 

上記のように、値がない場合の判定をする場合、「==」を使うことで「null」 だけでなく「undefined」 の場合にもtureとすることが可能です。

逆に「===」の場合、「undefined」はfalseとなってしまいます。

このように値がないことを判定する際には、「==」を使うこともあります。