1. 程式人生 > 實用技巧 >作用域與作用域鏈

作用域與作用域鏈

作用域與作用域鏈

  • 理解:
    • 作用域: 一塊程式碼區域, 在編碼時就確定了, 不會再變化
    • 作用域鏈: 多個上下級關係的作用域形成的鏈, 方向是從下向上的(從內到外)
  • 分類:
    • 全域性
    • 函式
    • 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()