JS
==・=== の違い
初級読み方:イコールイコール・イコールイコールイコール のちがい|英語:== vs ===
==は型変換してから比較(ゆるい比較)、===は型も含めて比較(厳密比較)。===を使うのが安全。
やさしい説明
== は型を変換してから比較します。=== は型も値も完全に一致するか比較します。バグを防ぐために === を使いましょう。
== は「1 と "1" は同じ」と判断します(数値と文字列を自動変換)。=== は「型が違うから別物」と正しく判断します。
ESLint などのツールも === の使用を推奨しています。== を使う正当な理由はほとんどありません。
具体例・使い方
// == は型変換して比較(予想外の結果になる)
1 == "1" // true(文字列→数値に変換)
0 == false // true
"" == false // true
null == undefined // true
// === は型も値も厳密に比較(安全)
1 === "1" // false(型が違う)
0 === false // false
null === undefined // false いつ使う?
値を比較するときは常に === を使います。== を使うのは null チェック(value == null で null と undefined の両方を判定)くらいです。
間違いやすいポイント
❌ == の型変換ルールが複雑すぎる
"" == 0 が true、"0" == false が true など、直感に反する結果が多いです。=== を使えばこの問題は起きません。
よくある疑問
Q: なぜ===を使うべきなの?
A: ==だと「1」と1が同じと判定されるなど、予想外の結果になることがあります。===なら型が違えば必ずfalseです。
Q: ==を使っていい場面はある?
A: null == undefinedの判定に使うことがありますが、初心者のうちは常に===を使いましょう。
関連用語
📖 関連レッスン
レッスンを見る →