先前我們已經討論過語法解析器的主題,今天我們要來加深這部分的觀念,這對之後出現的東西相當重要。
語法解析器 (Syntax Parsers)
我們的程式碼不會被電腦直接執行,而是有個中介程式 (intermediate program) 在程式碼和電腦中間轉換我們的程式碼為電腦懂的指令,瀏覽器的 JavaScript 引擎就是在做這件事,它包含許多的東西,其中一個就是語法解析器,會讀取我們的程式碼,並確認是否有效。
舉例來說:
如果語法解析器逐個字元檢查程式碼看到 r
的話,它會假設我們可能要寫 return
陳述式,所以會預期接下來是 e
,然後逐個字元接著進行。
1 | re |
如果看到非預期的東西,會顯示錯誤訊息;如果看到預期的有效語法,會接著繼續下去,它知道我們要做什麼,然後遇到 ;
時就結束。
1 | return; |
總結
語法解析器是 JavaScript 引擎的一部份,會逐個字元檢查我們的程式碼,做一些假設,遵守一些規則,甚至能在執行前改變我們的程式碼,這就是發生在 JavaScript 的情況,用這種方式思考 JavaScript 引擎如何讀取程式碼非常重要,逐個字元、使用一些規則判斷與法是否有效、確定你要做什麼,這就是程式碼執行前所發生的事,所以才能在執行前對程式碼做一些改變。