ローカルスコープとは何か
スコープとは「変数や関数がどこから見えるか(使えるか)」の範囲のことです。
その中で ローカルスコープ は「関数やブロックの中だけで有効な範囲」を指します。ここで宣言された変数は、その関数やブロックの外からは使えません。つまり「その場限りの変数置き場」と考えると分かりやすいです。
実行コンテキストとの関係
JavaScript ではコードが動くときに「実行コンテキスト」という環境が作られます。関数を呼び出すと「関数実行コンテキスト」が生成され、その中でローカルスコープが用意されます。
- 関数の中で宣言した変数は、その関数の実行コンテキストに属する。
- 関数が終わると、そのローカルスコープは消える。
- 変数を探すときは「まずローカルスコープ → 外側のスコープ → 最後にグローバルスコープ」の順で探される。
例題で理解する
例題1:関数の中だけで使える変数
function greet() {
const message = "こんにちは";
console.log(message);
}
greet(); // こんにちは
console.log(message); // エラー: message は定義されていません
JavaScriptmessage は関数の中でしか使えないため、外から参照するとエラーになります。
例題2:同じ名前でも別のスコープ
const name = "太郎"; // グローバルスコープ
function introduce() {
const name = "花子"; // ローカルスコープ
console.log("私は " + name + " です");
}
introduce(); // 私は 花子 です
console.log("外では " + name); // 外では 太郎
JavaScript同じ変数名でも、ローカルスコープとグローバルスコープで別々に存在できます。
例題3:ブロックスコープ(if や for の中)
if (true) {
let x = 10; // ブロックスコープ
console.log(x); // 10
}
console.log(x); // エラー: x は定義されていません
JavaScriptlet や const を使うと、ブロック {} の中だけで有効なローカルスコープが作られます。
ローカルスコープのメリット
変数の衝突を防げる
外側の変数と名前が同じでも、ローカルスコープに閉じ込められるので安全です。
コードの見通しが良くなる
「この関数の中だけで使う変数」と分かるため、管理がしやすくなります。
メモリ効率が良い
関数が終わるとローカルスコープは消えるので、不要な変数が残りません。
まとめ
- ローカルスコープは「関数やブロックの中だけで有効な範囲」。
- 実行コンテキストが作られると、その中でローカルスコープが用意される。
- 外からは参照できないため、変数の衝突や管理の難しさを防げる。
初心者は「ローカルスコープは“その場限りの変数置き場”」とイメージすると理解しやすいです。
