| JavaScript 如何運行
JS是一個進直譯式語言, 透過直譯器 -> 直接運行,
也因此若發生錯誤時, 會直接反映在環境中!!!
以下為運行的過程 :::
- 語法基本單元化 (Tokenizing)
一個一個值先一一拆解 - 抽象結構樹 AST (Abstract Syntax Tree)
分析結構,如圖: - 代碼生成
| LHS、 RHS
認識他們,當錯誤發生時,可以藉由錯誤資訊,提升排除錯誤的效率
Right-hand side (RHS 取值來自於右邊的變數上)
1 | Ex: var ming = ‘小明' |
!! 若有發生錯誤時,會在執行過程中見之
Left-hand side (LHS 用來賦予值到左側的變數上)
1 | Ex: var ming = 'ming' |
!! 若發生LHS錯誤的時候,需要去檢查是不是左邊的變數無法被賦予值
| 語法作用域(Lexical scope)
分為靜態作用域及動態作用域
JavaScript 採取的為靜態作用域
靜態作用域
變數的作用域在語法解析的時候,就已經決定作用域動態作用域
變數的作用域在函式調用時才決定