作用域與作用域鏈
阿新 • • 發佈:2020-08-22
作用域與作用域鏈
- 理解:
- 作用域: 一塊程式碼區域, 在編碼時就確定了, 不會再變化
- 作用域鏈: 多個上下級關係的作用域形成的鏈, 方向是從下向上的(從內到外)
- 分類:
- 全域性
- 函式
- js沒有塊作用域(在ES6之前)
- 作用
- 作用域: 隔離變數, 可以在不同作用域定義同名的變數不衝突
- 作用域鏈: 查詢變數
- 區別作用域與執行上下文
- 作用域: 每個函式都會建立自己的作用域,在函式定義時就已經確定了。而不是在函式呼叫時, 靜態的, 編碼時就確定了(不是在執行時), 一旦確定就不會變化了
- 執行上下文: 動態的, 執行程式碼時動態建立, 當執行結束消失
- 聯絡: 執行上下文(物件)是從屬於所在的作用域
- 面試題1
var x = 10;
function fn() {
console.log(x);
}
function show(f) {
var x = 20;
f();
}
show(fn);
- 面試題2
var fn = function () {
console.log(fn)
}
fn()
var obj = {
fn2: function () {
console.log(fn2)
//console.log(this.fn2)
}
}
obj.fn2()