深入之詞法作用域和動態作用域
JavaScript 採用詞法作用域(lexical scoping),也就是靜態作用域。
var value = 1;
function foo() {
console.log(value);
}
function bar() {
var value = 2;
foo();
}
bar();
// 結果是 1
原因也很簡單,因爲JavaScript採用的是詞法作用域,函數的作用域基於函數創建的位置。
根據書寫的位置,查找上面一層的代碼,也就是 value 等於 1,所以結果會打印 1。