JavaScriptでプログラミングをしていると、
「えっ?」となる計算結果に出会うことがあります。
先に紹介した「JavaScriptで『えっ?』となる計算結果」では、
NaNInfinity
といった結果が出てきました。
どちらも一見すると「エラーっぽい」見た目ですが、実はエラーではありません。
NaN や Infinity はエラーではない
JavaScriptは、
- できるだけ処理を止めない
- 計算できそうなら計算する
- 結果として値を返す
という特徴を持つ言語です。
そのため、
- 数字として使えなかった →
NaN - 0で割った →
Infinity
のように、「計算結果」として値を返します。
では、JavaScriptで本当にエラーになるのはどんなとき?
JavaScriptでも、どうしても実行できない場合は、ちゃんとエラーになります。
ここからは、
本当にエラーになる代表的な例を見ていきましょう。
例1:存在しない変数を使った場合(エラー)
let a = 2026;
let c = a * b;
console.log(c);
このコードを実行すると、次のようなエラーが出ます。
ReferenceError: b is not defined
なにが起きている?
aは定義されている- でも
bはどこにも書かれていない
JavaScriptは、
「その名前の変数が見つからない」
と判断し、ここで処理を止めます。
例2:関数ではないものを関数として使った場合(エラー)
let a = 2026;
a();
結果:
TypeError: a is not a function
なにが起きている?
aは数字- でも
()を付けて関数のように呼び出そうとしている
これは 意味として成立しない ため、
JavaScriptはエラーを出します。
NaN / Infinity とエラーの違い
ここが 一番大事なポイント です。
| 結果 | 意味 |
|---|---|
| NaN | 計算はしたが、数字として使えなかった |
| Infinity | 計算結果が無限になった |
| エラー | そもそも実行できない |
👉NaN や Infinity は「計算結果」 エラーは「実行できない状態」
という違いがあります。
初心者が混乱しやすいポイント
初心者の方ほど、こんなふうに思いがちです。
「変な結果が出た=エラー?」
実は違います。
- console.log が動いている → 処理は続いている
- エラー表示が出る → 処理が止まっている
この違いを意識できると、
プログラムの理解が一気に楽になります。
まとめ
- NaN や Infinity は エラーではない
- JavaScriptは、できるだけ処理を止めない言語
- 本当におかしい場合は エラーになって止まる
- 「値が返っているか」「止まっているか」を見るのが大切
最初は混乱しますが、この考え方を知っているだけで、
「JavaScriptって意味不明…」
から
「あ、こういうルールなんだ」
に変わります。
ぜひ、エラーと計算結果の違いを意識しながらプログラミングを続けてみましょう。
