天天看點

JavaScript學習(五十八)—作用域鍊

JavaScript學習(五十八)—作用域鍊

一、作用域鍊

  • 在每個作用域中都有一個對象,這個對象被稱為變量對象。
  • 變量對象的作用就是用來管理該作用域下面定義的變量和函數的,也就是在該作用域下面定義的變量和函數都可以被看做是變量對象的屬性和方法。
  • 全局作用域下面的變量對象就是window對象。

二、那麼到底什麼是作用域鍊?

  • 即在函數内部有一個屬性[Scope]屬性,該屬性指向一個集合,這個集合儲存的就是目前函數作用域下面變量對象的位址和它上級作用域變量對象的位址,我們把這個集合就稱為作用域鍊。
  • 當在使用變量時,會先從目前作用域下面變量對象身上查找是否有這個變量,如果有則傳回其對應的值。
  • 如果沒有則沿着作用域鍊向上級對象身上查找,如果有則傳回對應的值,如果沒有則繼續向上級作用域中查找,當找到window對象時依然沒有查找到,則報錯。

繼續閱讀