プログラムで変数は必ず使うものですよね。
今回は変数の有効範囲について勉強したことをまとめました。
※この記事ではletのスコープについて説明します。

変数の有効範囲(スコープ)について

~Crebitテキストより~
変数は「宣言したらどこでも使える」というわけではありません。
変数を使えるのは宣言した範囲の中だけです。
letで宣言した変数は{ }の外では利用できません。

これは if文に限らず、while文やfor文、関数でも同じルールです。

たとえば、次のようなコードを考えてみます。
if (true) {
  let message = “こんにちは”;
  console.log(message); // OK
}
console.log(message); // エラー!

この場合、message は { } の中で宣言されています。
そのため、{ } の外では使うことができず、エラーになります。
「どこで宣言したか」がとても大事なんですね。
この変数の有効範囲をスコープといいます。

ローカルスコープ(ブロックスコープ)とは

let で宣言した変数は、宣言された { } の中だけで有効です。
これを ローカルスコープ(ブロックスコープ) といいます。
ブロックスコープの中のみ使える変数を「ローカル変数」といいます。

ブロックスコープの例
if (true) {
  let number = 10;
  console.log(number); // OK
}
console.log(number); // エラー

number は if 文のブロック内で宣言されています。
そのため、外からは使えません。

また、関数の中も { } で囲まれています。
そのため、関数の中で let で宣言した変数も、その関数の中でのみ有効です。

グローバルスコープとは

プログラムの一番外側で let を使って宣言した変数は、どこからでもアクセスできます。
これを「グローバル変数」といいます。

let globalMessage = “みなさんこんにちは”;

function showMessage() {
  console.log(globalMessage);
}
showMessage(); // OK

ただし、便利だからといって多く使いすぎると、バグの原因になりやすいので注意が必要です。

ローカルスコープとグローバルスコープの使い分け

では、どのように使い分ければよいのでしょうか?
・そのブロックの中でしか使わない → ローカルスコープで宣言する
・プログラム全体で使う必要がある → グローバルスコープで宣言する(必要最低限)

むやみにグローバル変数を増やすと、
・どこで値が変わったのか分からなくなる
・他の処理に影響を与えてしまう
・バグの原因になりやすい
という問題が起こります。

そのため、「できるだけ小さいスコープで宣言する」これが基本の考え方です。

まとめ

・変数には「有効範囲(スコープ)」がある
・{ } の中で宣言した変数は外では使えない
・グローバル変数は便利だが使いすぎ注意

今回の学習で、「変数はどこで宣言するかがとても大事」ということが分かりました。
「使う場所の近くで宣言する」と覚えておくと分かりやすいです。
少しずつ理解を深めていきたいと思います!

参考文献

【javascript】変数と定数のスコープについて初心者向けに徹底解説! – tagnote

アクセス日時:2026年2月23日時点

・【初心者向け】JavaScriptの変数の宣言とスコープを超わかりやすく解説!let・const・varの違いも図解付き

https://programing-knowledge.net/javascript-let-const-var

アクセス日時:2026年2月23日時点