未経験からエンジニアになりたい人必見!
おすすめプログラミングスクール3選!

【JavaScript】==と===の違いについて

本記事では、JavaScriptの==と===の違いについて解説しています。

この違いを知らないで処理を実装すると、条件に一致しないはずなのに何故か条件に一致していまい関係のない処理が実行されている。。なんてこともあるので、本記事でしっかり違いについて理解しましょう。

JavaScriptの学習におすすめ参考書
改訂新版JavaScript本格入門

参考書が苦手な人はUdemyの動画がおすすめ
ガチで学びたい人のためのJavaScriptメカニズム

作成者 CodeMafia
学習時間 20.5時間
受講者数 16,593人
レビュー (2,383件)

==と===の違いは型の比較

==は等価演算子と呼ばれています。MDNに記載されている情報は以下の通りです。

等価演算子 (==) は、二つのオペランドが等しいことを検査し、論理値で結果を返します。厳密等価演算子とは異なり、オペランドの型が異なる場合には型の変換を試みてから比較を行います。

引用元:MDN
オペランド(非演算子)とは

オペランドとは、数式を構成する要素のうち+や-などの演算子ではない要素のことを指します。

「1+1」の数式があった場合、演算子ではない「1」がオペランドになります。

上記の引用を分かりやすく訳すと、等価演算子は代入されている値が等しいかを検査します。比較対象する2つの型が異なる場合は、型の変換をしてから検査します。

===は厳密等価演算子と呼ばれています。MDNに記載されている情報は以下の通りです。

厳密等価演算子 (===) は、二つのオペランドが等しいことを検査し、論理値で結果を返します。等価演算子とは異なり、厳密等価演算子はオペランドの型が異なる場合、常に異なるものと判断します。

引用元:MDN

上記の引用を分かりやすく訳すと、厳密等価演算子は等価演算子と同様に代入されている数値が等しいかを検査します。もし、比較対象する2つの型が異なる場合は異なるものと判断されます。

つまり、等価演算子と厳密等価演算子の違いは比較する2つを値だけで検査するのか、それとも値と型を両方セットで検査するかの違いです。

数値と文字列

数値と文字列を等価演算子と厳密等価演算子を使って比較してみましょう。

JavaScript
console.log(1 == "1"); // -> true
console.log(1 === "1"); // -> false

数値と真偽値

数値と文字列を等価演算子と厳密等価演算子を使って比較してみましょう。

真偽値はtrueとfalseですが、trueには「1」がfalseには「0」がデフォルトで設定されています。

JavaScript
console.log(0 == false); // -> true
console.log(0 === false); // -> false
console.log(1 == true); // -> true
console.log(1 === true); // -> false