《你不知道的JavaScript(上)》筆記——做用域是什麼

Javascript是一門編譯語言,它不是提早編譯的, 編譯結果也不能在分佈式系統中進行移植。編程

在傳統編譯語言的流程中, 程序中的一段源代碼在執行以前會經歷三個步驟, 統稱爲「編譯」:數組

  1. 分詞/詞法分析(將由字符組成的字符串分解成(對編程語言來講) 有意義的代碼塊, 這些代
    碼塊被稱爲詞法單元 )
  2. 解析/語法分析 (將詞法單元流(數組) 轉換成一個由元素逐級嵌套所組成的表明了程序語法
    結構的樹。 這個樹被稱爲「抽象語法樹」(Abstract Syntax Tree, AST)。 )
  3. 代碼生成(將 AST 轉換爲可執行代碼的過程稱被稱爲代碼生成。 )

1557241575185

做用域是根據名稱查找變量的一套規則,由於會存在做用域嵌套的狀況,引擎從當前的執行做用域開始查找變量, 若是找不到,就向上一級繼續查找。 當抵達最外層的全局做用域時, 不管找到仍是沒找到, 查找過程都會中止。編程語言

ReferenceError 同做用域判別失敗相關, 而 TypeError 則表明做用域判別成功了, 可是對結果的操做是非法或不合理的。分佈式

相關文章
相關標籤/搜索