JavaScriptで計算をしていると、こんな「えっ?」となる結果に出会うことがあります。

let a = 2026;
let b = '1';
let c = a * b;
console.log(c);
// 2026
let a = 2026;
let b = 'あ';
let c = a * b;
console.log(c);
// NaN
let a = 2026;
let b = 0;
let c = a / b;
console.log(c);
// Infinity

数字を使っているつもりなのに、
結果が 2026 / NaN / Infinity とバラバラ。

今回は、この3つの例を使って
「なぜこうなるのか」 をやさしく説明します。

例1:文字なのに計算できる?

let a = 2026;
let b = '1';
let c = a * b;
console.log(c);
// 2026

ここでのポイントは、b文字列 ‘1’ だということです。

普通に考えると、

数字 × 文字列 = エラー?

と思いますよね。

でも JavaScript では、(かけ算)を使うとき、

👉 「数字に変換できそうなら、勝手に数字にする」

という動きをします。

  • '1' → 数字の 1 に変換
  • 2026 * 1 → 2026

そのため、結果は 2026 になります。

例2:NaN ってなに?

let a = 2026;
let b = 'あ';
let c = a * b;
console.log(c);
// NaN

今度は b'あ' です。

JavaScriptはまた「数字にできるかな?」と考えますが、

  • 'あ' → 数字に変換できない

そこで出てくるのが NaN です。

NaN の意味

NaN = Not a Number
(数ではありません)

つまりこれは、

「計算しようとしたけど、数字として扱えなかった」

という 結果 です。

エラーではありません。
JavaScript的には「ちゃんとした結果」 です。

例3:Infinity はなぜ出る?

let a = 2026;
let b = 0;
let c = a / b;
console.log(c);
// Infinity

ここでは、「2026 / 0」が行われています。
数学では、0で割ることはできません

JavaScriptではこの場合、

👉 Infinity(無限)

という値を返します。

Infinity の意味

Infinity = 無限大

JavaScriptは、

「0で割ったからエラー!」

とはせず、

「結果は無限に大きいと考える」

という値を返します。

これも エラーではありません

なぜJavaScriptはエラーにしないの?

ここがJavaScriptの特徴です。

  1. できるだけ処理を止めない
  2. プログラムを動かし続ける
  3. 結果として NaN や Infinity を返す

つまり、

JavaScriptはとても「寛容」な言語

です。

初心者にとっては「優しい」とも言えますが、
同時に 注意が必要 なポイントでもあります。

初心者が覚えておくと安心な考え方

① 文字と数字は違う

'1'  // 文字
1    // 数字

見た目が同じでも、JavaScriptの中では 別物 です。

② NaN や Infinity は「失敗のサイン」

  • NaN → 数字として使えなかった
  • Infinity → 0で割った可能性が高い

👉「あ、変な計算してるかも」
と気づくためのヒントです。

③ エラーが出ないから安心しない

JavaScriptは、

  • 間違っていても動く
  • 変な値でも結果を返す

ことがあります。

だからこそ、

  • console.logで確認する
  • 値の中身を意識する

ことが大切です。

まとめ

  • '1' は計算の中で数字に変換されることがある
  • 数字にできない文字は NaN になる
  • 0で割ると Infinity が出る
  • どれもエラーではない
  • JavaScriptは「動かし続ける」言語

最初は不思議に感じますが、これを知っているだけでJavaScriptが一気に理解しやすくなります。