做爲一名前端開發,天天都會花大量的時間去編寫 JavaScript 代碼。可是你真的知道 JavaScript 是如何執行的嗎?javascript
比起那些編譯過程只有三個步驟的語言的編譯器,JavaScript就要複雜得多。前端
好比咱們執行程序java
var a = 2;
console.log(a);
複製代碼
在執行這兩行命令的過程當中不只僅只有引擎參與,其實也有不少其餘的小夥伴參與了。微信
編譯器markdown
負責語法分析及代碼生成。函數
做用域性能
負責收集並維護由全部聲明的標識符組成的一系列查詢,而且實施一套很是嚴格的規則等等。優化
引擎ui
一直參與整個JavaScript程序的編譯及執行過程。spa
舉個例子
function getName(Name) {
console.log(Name, age);
}
var name = 'Andy';
var age = 22;
getName(name);
複製代碼
上面的代碼看起來是否是很是簡單,只是簡單的去聲明瞭一個函數,兩個基本類型參數,而後調用了一下這個函數。可是實際上在執行這幾行代碼過程當中既有編譯器的參與也有做用域的限制以及引擎的執行。
其實在執行咱們的第三部分的時候,咱們會引入一個 'LHS' 和 'RHS' 的概念。
LHS 的含義是賦值操做的左側,RHS的含義是賦值操做的右側。可是這樣可能很差理解,因此我我的認爲你能夠這樣去理解,LHS就是對變量進行修改賦值操做,RHS就是拿到變量。
咱們仍是拿上面的代碼例子來說解一下 LHS 和 RHS
在上面的例子中,LHS 操做一共有三處(= 'Andy'、= 2二、對形參賦值); RHS 就比較多了,有var name 、var age、 getName() 、(name)、console 、log、Name 、age;
一門語言每每博大精深,咱們不能只知足於使用它來完成任務,更要去了解清楚計算機每一步作了什麼。一直懷着一顆好奇的心,那麼技術確定會愈來愈好。
PS:你們看了後以爲對本身有幫助能夠三連留言,歡迎提出寶貴意見,也歡迎各位對相關技術有興趣的開發者(由團隊開發人員微信號x118422邀請)入羣,在線解答討論數據可視化、優化圖表性能等方面的技術問題~