JavaScript Weird Part (1) - 語法解析器、執行環境、詞彙環境

JavaScript 的運作原理,包含三項最基本的觀念:

  1. 語法解析器 (Syntax Parsers)
  2. 執行環境 (Execution Contexts)
  3. 詞彙環境 (Lexical Environments)

語法解析器

語法解析器是什麼?如果 JavaScript 的程式碼使用有效的語法,就可被讀取且執行。但這不是程式碼直接告訴電腦怎麼執行,而是透過另一個程式「語法解析器」,把我們寫的 JavaScript 程式碼,逐字解讀成電腦可以理解的東西,並且判定這些語法的有效性及正確性,並且把我們的程式碼轉換為電腦可以理解的指令。這也意味著在你所寫的程式碼並非直接被執行,而是在底層的程序裡,被一個翻譯引擎轉換,並且決定執行。所以在每次執行 Javascript 時,真正被執行的東西,都是被語法解析器的中介程式轉換過的程式碼。

解譯器的概念可以理解成這張圖當中的機器人,例如逐字解讀”F-U-N-C-T-I-O-N”。

詞彙環境

詞彙環境代表程式碼在程式中實際的位置,它被寫在哪裡、它的周圍環境。

1
2
3
4
5
6
7
function count(oneNum,twoNum){
var total = oneNum * twoNum;
console.log('總價格'+total)
}

count(8,48);
console.log(total);

上面的例子裡,變數 total 位於函式裡面,這就是它在程式碼的詞彙環境裡的位置。程式碼的詞彙環境,會影響解析器解讀的判斷與決定,所以在 Javascript 當中,程式碼的位置在哪裡,就相當重要。因為這關係到在創造執行環境的時候,會將變數與函式所放置的相關記憶體空間裡,也會影響它與其他變數與其他函式的互動。

執行環境

又譯為執行脈絡、執行上下文。所有程式碼都必定在執行環境裡運作。執行環境就像工廠的不同工作室,每一個工作室都配備一個執行環境物件,負責管理、記錄該執行環境裡要用到的各種資料、正在執行的程式。

假如我們有多行程式碼(詞彙環境),要怎麼知道哪個才是正在執行的呢?這就是由執行環境來管理正在執行的程式。執行環境包含你所寫的程式碼、正在執行的程式碼,但它所包含的不只這些。因為程式碼正在被解析器處理中。

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2020 CYC'S BLOG All Rights Reserved.

UV : | PV :