語法解析器、執行環境、詞彙環境

Nick Wu
不想放棄設計的前端工程師
3 min readOct 31, 2018

來自「JavaScript 全攻略:克服 JS 的奇怪部分」的整理

本篇主題主要介紹在「 JavaScript 全攻略:克服 JS 的奇怪部分 」會遇到的幾個專有名詞解釋:語法解析器、執行環境、詞彙環境。

語法解析器 Syntax Parser

A program that reads your code and determines what is dose and if its grammar is valid.
一個程式,能夠閱讀你的程式碼並決定如何動作,如果你的語法是有效的。

當我們在寫 JavaScript 時,你的程式碼並不會神奇的直接告訴電腦該做什麼,而是有人寫了一個程式,這個程式會一個字一個字的讀你的程式碼,並且判斷語法是否有效,最後轉換你的 JavaScript 成為電腦看得懂的東西,這些程式稱為編譯器 (Compilers)。

圖片來源:JavaScript 全攻略:克服 JS 的奇怪部分

也就是說,直接給電腦執行的不是你的程式碼,而是被轉換過的,所以這些編譯器在編譯時,其實可以做一些事情 (Extra Stuff) ,這對於了解 JavaScript 是很重要的,我們之後會再看到他。

詞彙環境 Lexical Environment

Where something sits physically in the code you write.
程式碼在程式中實際所在的位置。

在此討論的是你寫的程式碼,它的語法、它的單字。詞彙環境存在於一些程式語言中,這些程式語言認為程式碼寫在哪裡是很重要的。(不是每個程式語言都這樣)因為它幫助語法解析器 ( Syntax Parser ) 做決定,當我們談到程式碼的詞彙環境( Lexical Environment )時,其實就是在討論:他被寫在哪裡?他的周圍環境是什麼?

執行環境 Execution Context

A wrapper to help mange the code that is running.
一個包裹,幫助管理正在執行之程式。

我們有許多的詞彙環境,程式碼實際上所在的位置,但哪個才是正在執行的?就是被執行環境所管理。執行環境包含了你寫的程式碼,正在執行的程式碼,但它包含的不只有你所寫的程式碼,記得,你寫的程式碼正在被編譯器所轉換,因此他在執行你的程式碼時,還能夠做別的事情,這就是在 JavaScript 裡面所發生的,很快的我們就會在後面的單元看到。

我們說當 JS 開始執行的時候,程式碼必須被執行在下面三種環境之一。
1. 全域 Global:預設當您程式開始執行時的環境。
2. 函式:當我們進入一個函式 function 時的環境,也就是開始跑函式內部程式碼的時候。
3. Eval:把一串字串,當作指令來執行時的環境。
資料來源

整理這一系列文章的目的最主要是幫助自己能更深入了解 JavaScript 掌握核心概念。文章內容皆源自於 JavaScript 全攻略:克服 JS 的奇怪部分 此一線上課程。若內容有錯誤敬請不吝指正。

--

--