這是一門在Udemy 課程,是同學介紹的。主要是因為想要運用到過年前這段時間好好的增進自己的JavaScript的基礎能力,讓自己能往前端工程師更近一步。主要還是會以筆記的形式做呈現!
Syntax parser 語法分析
A program that reads your code and determines what it does and if it’s grammar is valid
一個讀取你的程式碼的程序,負責確認他是做什麼的以及語法是否有效
你的程式碼不是實際給電腦的指令,而是翻譯。
也就是說,電腦他其實是看不懂JS指令的,他是透過中介的引擎(又或是被稱為直譯、轉譯器)把這些 code 來轉換成電腦懂的語言
Lexical environment 詞彙環境
Where you write something is important
你在哪裡寫東西在JS裡是非常重要的
例如我宣告一個變數在function的內部或外部就會差非常多。
當程式透過引擎轉譯給電腦執行時,會因為它應對的記憶體位置影響他和其他function的互動
因此 Lexical environment 就是指開發環境中程式碼的位置
Execution context 執行環境
A wrapper to help manage the code that is running
雖然js是一個單執行緒、同步的程式,但在轉譯的過程中並不會逐行丟給電腦去執行。
我們的程式碼會在執行時,會先依照詞彙環境(Lexical Environment)被解析器轉換,在電腦中被創造並擺到該放的記憶體位置去,最後電腦才執行。尤其JS某些特性(例如提升)就是在創造階段產生,因此理解JS在執行環境中的狀態是很重要的一件事。
name/value pair
A name which maps to a unique value
這個名稱映射到的唯一值
在一段執行的code中,名稱可能會被賦予不同的值,但他都只對應到唯一一個值
例如:
1 | var Address = '100 Main St.' |
var ->宣告
Address ->變數名
“100 Main St.” ->值(字串)
但該值可能會是多組 name/value 的集合,也就是 object
例如:
1 | var Add = { |
在JS中,object本質還是 name/value 的配對組合。
Global environment 全域環境
不論何時執行JavaScript , JavaScript 都會在execution context(執行環境)裡執行,而global environment 就是指在執行時,把我們的程式碼包在裏頭執行的環境。JavaScript在執行時都會創造一個基礎執行環境作為他的Global environment,以網頁來說全域通常就是瀏覽器window,而Node.js就是Global。
全域環境被創造時也會跟著產生Global Object (全域物件)和特殊的變數「this」,而這兩個是由JavaScript引擎所創建的。
在JavaScript裡,當我們說到 global 時,代表的是他不在function裡。