嘗試從都市叢林回到魔法森林。 更多作品 | https://linktr.ee/monles
Javascript — 第 01天
這些內容同樣能幫助你準備前端面試。
當然Youtube已經有許多教學可以看,但如果你希望教學能有穩定品質、穩定更新內容,我推薦付費課程,如:
Zero to Mastery — JavaScript: The Advanced Concepts
https://zerotomastery.io/courses/advanced-javascript-concepts/
演算法演練 — 其實前端不太需要
https://leetcode.com/problemset/all/
Javascript 是直譯型語言?
不是編譯語言(compiled language)。
Babel
javascript編譯器,將現代Javascript語言轉換到瀏覽器相容,讓js可以使用最新技術編寫。
Typescript
javascript的嚴格超集(superset),任何現有的JavaScript程式都是合法的TypeScript程式。
以上兩者都如編譯器,將一種語言轉換成其他。
V8 引擎 — javascript 引擎
用於Google Chrome,由google開發的javascript引擎。
V8在執行之前將Javascript編譯成了機器碼(machine code),而非位元組碼(bytecodes)或是解釋執行它,更多可見wikiPedia。
- 呼叫堆疊(Call stack) — 追蹤執行過程
- Memory Heap
-儲存和寫成應用軟體(application)的地方
-memory allocation 在這裡發生
呼叫堆疊Call Stack
-逐行(line by line)追蹤執行其過程
單一執行續語言Single Threaded programming language
JS是單一執行續且異步(asychronous),兩者看似矛盾,但後者環境可在node.js等發生,更多請見未來javascript — DayXX系列教學文章。
-one stack and one heap
-同步(synchronous)| 一個主線程,一次只執行一個任務
- What’s the problem with it?
- while long-running test, it will cause problems.
Stack 和 Heap差別?
簡要的說,Stack為後進先出的資料組織方式,heap是在記憶體保留一塊空間,方便程式配置所需資料。
Web API 應用程式接口
Asychronous — we can do something in the background and return data while finished, in the meanwhile we can run the call stack and execute the application.
非同步(Asychronous) — 同時在背景執行許多事,並在執行完畢後回傳檔案。
more info | https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous
- DOM
- fetch()
- setTimeout()
回調函數隊伍Call back Queue
儲存回調函數的地方。
被調到這裡call back function會等到 Call Stack被清空才依序放回Call Stack執行。
更多可見這篇優質文章
執行環境(RunTime) V.S. 引擎(Engine)
node.js — javascript runtime
「runtime」 指的是執行環境,就如同網頁上的 JavaScript 是在瀏覽器的 JavaScript 引擎上執行,Node.js 就是一個能執行 JavaScript 的環境,而 V8 則是主流瀏覽器 — Google Chrome 的 JavaScript 引擎,負責解析、執行 JavaScript,也就是負責實踐 ECMAScript 規範中定義的部份;另外,V8 是開源的專案,有興趣的讀者可以參照 Google Git — V8。
喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。
发布评论…