実務型コーディング演習 / 約15分
バグ修正②: 未初期化変数とスコープ
なぜこれを学ぶか
「変数を使う前に初期化していない」「スコープが思ったと違う」バグは、エラーメッセージが分かりにくく原因特定が難しいです。代表パターンを体で覚えましょう。
未初期化変数: JavaScript では宣言したが値を代入していない変数は undefined です。undefined に対して算術演算すると NaN(Not a Number)になります。NaN + 1 = NaN のように、一度 NaN が混入すると計算結果が全て NaN になる「NaN汚染」が起きます。
let count は let count = 0 と同じではありません。合計・カウントなどの累積変数は 必ず初期値を設定 しましょう(let sum = 0、let count = 0)。
スコープの落とし穴: if や for の中で let / const で宣言した変数は、そのブロック({})の外からは見えません。ブロックの外でも使いたい変数は、外側で宣言してください。
var は使わない: var は関数スコープで巻き上げ(hoisting)が起きるため、意図しない動作の原因になります。現代のJavaScriptでは let / const を使いましょう。
重要ポイント
- 累積変数は必ず初期値を設定(sum = 0、count = 0)
- NaN が混入すると全計算結果が NaN になる
let/constはブロックスコープ。ブロック外で使う変数は外で宣言
理解度チェック
選ぶと即座に解説が表示されます。
`let result; result += 5;` を実行すると result の値は?
ヒントを見る
`let result` で宣言した直後、result の値は何でしょう? その値に 5 を足すとどうなりますか?
コーディング演習実際に書く
以下の `getStats` 関数には「未初期化変数」のバグがあります。数値配列の合計(sum)と平均(avg)を正しく計算して返すよう修正してください。
スキルセルフチェック
このレッスンの内容をどの程度理解できましたか?