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の判定に使うことがありますが、初心者のうちは常に===を使いましょう。

関連用語

📖 関連レッスン

レッスンを見る →

関連ブログ記事

⚠️ 関連するエラー

❓ 関連するQ&A