JavaScript 中階

Javascript 的作用域 (Scope) 與作用域鏈 (Scope Chain) 是什麼?

AI 練習作答

作用域(Scope)

作用域是指變數可以被存取的範圍。JavaScript 有三種作用域:

1. 全域作用域(Global Scope)

var globalVar = 'I am global';
function foo() {
  console.log(globalVar); // 可以存取
}

2. 函式作用域(Function Scope)

function foo() {
  var localVar = 'I am local';
  console.log(localVar); // ✅
}
console.log(localVar); // ❌ ReferenceError

3. 區塊作用域(Block Scope)

ES6 的 letconst 有區塊作用域:

{
  let x = 10;
  const y = 20;
}
console.log(x); // ❌ ReferenceError

作用域鏈(Scope Chain)

當在某作用域中找不到變數時,JavaScript 引擎會向外層作用域查找,直到全域作用域為止,這個查找路徑稱為作用域鏈

const global = 'global';

function outer() {
  const outerVar = 'outer';

  function inner() {
    const innerVar = 'inner';
    console.log(innerVar);  // 'inner'(本地找到)
    console.log(outerVar);  // 'outer'(向外查找)
    console.log(global);    // 'global'(繼續向外查找)
  }

  inner();
}

outer();

查找順序:innerouter → 全域 → 未找到則報 ReferenceError


詞法作用域(Lexical Scope)

JavaScript 採用詞法作用域(又稱靜態作用域):作用域鏈在程式碼撰寫時就已決定,與呼叫方式無關。

✦ AI 模擬面試

輸入你的答案,AI 即時分析精準度與改進空間

登入後即可使用 AI 評分