了解!

では「2段階目:ネスト(入れ子)したスコープ」について、文法もしっかり解説します。


✅ 2段階目:ネスト(入れ子)したスコープ

「スコープは入れ子(ネスト)にできる → 内側からは外側が見える、でも逆は見えない」


【コード例】ファイル名: scope-step2.js

//変数xに数値100を代入(グローバルスコープ)
const x = 100;

//関数outerFunctionを宣言(外側の関数)
function outerFunction() {
  //変数yに数値200を代入(outerFunctionのスコープ)
  const y = 200;

  //innerFunctionという内側の関数を宣言(ネストした関数)
  function innerFunction() {
    //変数zに数値300を代入(innerFunctionのスコープ)
    const z = 300;

    //xはグローバル、yはouterFunction、zはinnerFunction → すべて見える
    console.log("xの値は: " + x); // 100
    console.log("yの値は: " + y); // 200
    console.log("zの値は: " + z); // 300
  }

  //innerFunctionを実行
  innerFunction();

  //zはinnerFunction内で作った変数なので、ここでは使えない(エラー)
  console.log(z); // ← これはエラー!
}

//outerFunctionを実行
outerFunction();


🔥 【ポイント解説】

◆ 文法ポイント


🟢 【スコープの階層イメージ】

グローバルスコープ:    x
└─ outerFunctionスコープ:  y
   └─ innerFunctionスコープ: z


🟥 【エラーになる理由】