什麼是做用域鏈?javascript
首先要理解什麼是做用域,任何語言在設計的時候都會有設定變量的做用,好比類C語言中都是使用{} 來肯定變量的做用域。可是在javascript當中,做用域是當前對象的執行環境(當前代碼執行的上下文對象),最外層是全局執行環境也就是window。在類C語言中能夠常常看到相似這種塊級做用域 {java
{函數
{}spa
{}設計
}對象
} ,一層包着一層,在javascript當中其實也是這樣的,只不過javascript不用{}塊級做用域來限制變量的做用範圍,而是用做用域鏈。ip
那麼什麼是做用域鏈呢? 做用域鏈就是保證對執行環境有權訪問的全部變量和函數的有序訪問。通俗一點的說就是將各類層級包含關係的「塊級做用域」 等價於一條鏈,經過這條鏈咱們能夠找到當前執行環境的變量範圍。好比咱們在類C語言中的{{}{{}}}{} 塊級做用域,咱們想要確認在某個塊級做用域中可以訪問的變量,只須要看層級包含關係就能夠了,可是在javascript中沒有這種「塊級做用域」 必須在腦海中勾勒出當前執行環境的做用域鏈,才能肯定當前執行環境的變量。作用域