JavaScript 中階
Javascript 的作用域 (Scope) 與作用域鏈 (Scope Chain) 是什麼?
作用域(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 的 let 和 const 有區塊作用域:
{
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();
查找順序:inner → outer → 全域 → 未找到則報 ReferenceError。
詞法作用域(Lexical Scope)
JavaScript 採用詞法作用域(又稱靜態作用域):作用域鏈在程式碼撰寫時就已決定,與呼叫方式無關。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
