文字列同士の + が連結になる理由
数字だけの文字列同士でも、+演算子は数値としての加算ではなく文字列としての連結を行います。数値として計算したい場合はNumber()などで明示的に変換する必要があります。
なぜエラーが出ないのか
出力: 103
(エラーなし)- JavaScriptは何も報告しません。文法として正しいためです
出力: 103- 実際の挙動 — 期待した結果と食い違っている箇所
見つけ方- エラーが出ないので、出力を目で確かめるか、コードを目で追うしかありません。この種の誤りが最も発見が遅れます
このエラーが出る典型パターン
パターン1
1 const a = "10"; 2 const b = "3"; 3 console.log(a + b ); ^
出力: 103期待: 13 (エラーにはなりません)
aもbも文字列なので、+はまず文字列連結として動作します。数値として合計したい場合はNumber()で変換します。
直し方: a + b を Number(a) + Number(b) にします。
広告
広告スロット(未設定)
パターン2
1 const x = "20"; 2 const y = "5"; 3 console.log(x + y ); ^
出力: 205期待: 25 (エラーにはなりません)
数字だけの文字列でも+は連結として扱われます。Number()での変換が必要です。
直し方: x + y を Number(x) + Number(y) にします。
パターン3
1 const m = "100"; 2 const n = "1"; 3 console.log(m + n ); ^
出力: 1001期待: 101 (エラーにはなりません)
見た目が数字でも文字列型のままでは連結されます。合計を得るには明示的な変換が必要です。
直し方: m + n を Number(m) + Number(n) にします。
よくある誤解
「数字に見える文字列なら自動で数値として計算されるはず」という思い込みは誤りです。+は片方でも文字列があれば文字列連結を優先するため、両方が数字だけの文字列でも連結されます。
まとめ
文字列同士の + が連結になる理由は初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。