【JavaScript】「==」と「===」の違いは?

こんにちは!CODE CLUB965のKです!

今回は、「==」と「===」の違いについて解説しようかと思います。

条件文などを記述するときに使うことがあると思いますが、「==」と「===」の違いを意識して書いてますか?

特に意識せず使っていたという方は、ぜひ知識の一つとして覚えてみてください。

== と === はそもそも何か

「==」は、等価演算子といい、「===」は厳密等価演算子といいます。

どちらも「等しい」という意味ですが、「==」が等しいのに対して、「===」は厳密に等しいという意味です。

厳密に等しいとは?

厳密に等しい「===」は、データ型も等しいかどうかも評価します。
(データ型を変換しません。)

これだけだと意味が分からないと思いますので、コードを見ながら解説します。

var a = "1";
var b = 1;

console.log(a==b);
console.log(a===b);

■実行結果

true  // 等価演算し
false  // 厳密等価演算子

まず、「==」で比較する場合、変数「a」は文字列ですが、数値に勝手に変換して比較してくれます。(データ型を変えてくれる)
そのため、結果として同じ値となりtrueを返します。

それに対して、「===」で比較する場合、最初に言ったようにデータ型に変換しませんので、文字列である変数「a」は文字列のまま数値である変数「b」と比較します。

「文字列」=「数値」は等しくないと判定されるので結果としてfalseが返されます。

説明をまとめると、

※「右辺 == 左辺」もしくは、「右辺 === 左辺」と考えます。

・右辺と左辺のデータ型が同じ場合(null含む)
  → 「==」も「===」もtrueを返す

・右辺と左辺のデータ型が違う場合(数値 == 文字列など)
  → 「==」は、true を返す、「===」は、false を返す

最後に

意外と「==」と「===」を意識しないで書いている方もいるとは思いますが、無意識に使っていると思わぬバグを引き起こす可能性があるので気をつけましょう。

自分が書いているコードが本当に大丈夫かたまには意識しながら書くのも大事です。

今回はちょっとした知識の紹介でした。
それでは、また!

Follow me!