MonLes
MonLes

嘗試從都市叢林回到魔法森林。 更多作品 | https://linktr.ee/monles

Javascript — 第 01天

(编辑过)
我已經使用純javascript和react.js做了一些專案,為了更加改善前端的知識,我決定在接下來的三個月分享所學。


這些內容同樣能幫助你準備前端面試。

當然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

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

引用來自 | https://www.educba.com/javascript-vs-node-js/

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论