執行環境、作用域 (Jedna)

| JavaScript 如何運行

JS是一個進直譯式語言, 透過直譯器 -> 直接運行,
也因此若發生錯誤時, 會直接反映在環境中!!!
以下為運行的過程 :::

  1. 語法基本單元化 (Tokenizing)
    一個一個值先一一拆解
  2. 抽象結構樹 AST (Abstract Syntax Tree)
    分析結構,如圖:
    AST
  3. 代碼生成

produce小工具


| LHS、 RHS

認識他們,當錯誤發生時,可以藉由錯誤資訊,提升排除錯誤的效率

Right-hand side (RHS 取值來自於右邊的變數上)

1
2
3
Ex: var ming = ‘小明'
var man = ming
console.log(ming)

!! 若有發生錯誤時,會在執行過程中見之

Left-hand side (LHS 用來賦予值到左側的變數上)

1
Ex:  var ming = 'ming'

!! 若發生LHS錯誤的時候,需要去檢查是不是左邊的變數無法被賦予值


| 語法作用域(Lexical scope)

分為靜態作用域及動態作用域
JavaScript 採取的為靜態作用域

  1. 靜態作用域
    變數的作用域在語法解析的時候,就已經決定作用域

  2. 動態作用域
    變數的作用域在函式調用時才決定