1.
引擎
從頭到尾負責整個javascript程序的編譯及執行的過程。它可以根據需要創建並儲存變量。
編譯
負責語法分析及代碼生成等。
作用域
負責收集並維護由所有聲明的標識符(變量)組成的一系列查詢,並實施一套非常嚴格的規則,確定當前執行的代碼對這些標識符的訪問權限。
先看看他們三兄弟的大概關係:對於聲明一個變量並賦值的過程。
1) 首先,var
a在其作用域中聲明新變量。這會在最開始的階段,也就是代碼執行前進行。
2) 接下來,a=2會查詢(LHS查詢)變量a並對其進行賦值。
2.遍歷嵌套作用域鏈的規則很簡單:引擎從當前的執行作用域開始查找變量,如果找不到,就向上一級繼續查找。
當抵達最外層的全局作用域的時候,無論找到還是沒有找到,查找過程都會停止。