[ JavaScript 筆記] JavaScript 定義

更新 發佈閱讀 4 分鐘
前言:
一直想要把自己的學習筆記整理整理,至少在寫下筆記的時候,也能釐清觀念。
結果拖延到現在,終於要提筆了,不知道能堅持多久(???)。

從定義開始,

首先來看 MDN 的定義:

JavaScript (JS) is a lightweight interpreted (or just-in-time compiled) programming language with first-class functions. While it is most well-known as the scripting language for Web pages, many non-browser environments also use it, such as Node.js, Apache CouchDB and Adobe Acrobat. JavaScript is a prototype-based, multi-paradigm, single-threaded, dynamic language, supporting object-oriented, imperative, and declarative (e.g. functional programming) styles.

我完全看不懂,來拆解一下:

Interpreted or just-in-time compiled 即時編譯語言

即時編譯語言結合了直譯式 & 編譯式的特點,讓 JS 在程式執行期間進行編譯,提升了執行速度。

編譯的步驟大致上長這樣:

  • 解析/讀取程式碼
  • 編譯成 machine code(第一次編譯成未優化版本)
  • 執行 machine code(在 Call Stack 中執行)
  • 執行期間 在後台優化並重新編譯 優化後取代原版本繼續執行

而 JS 擁有直譯式語言的特性,所以它無法獨立執行,只能在執行環境 Runtime 中使用。

Runtime
也可以稱為執行環境(有人比擬成工作室,我覺得很適合)
工作室(runtime)中放了 JS engine,以及這間工作室需要的工具。

最常見的 runtime 就是瀏覽器,包含了 JS engine、web APIs、cb queue;
另一種 runtime 是 Node.js,包含了 JS engine、C++ binding with thread pool、cb queue。

所以在 Node.js 中無法使用瀏覽器提供一些函式。


First-class functions 一級函式

在 JS 中,函式可以作為別的函式的參數、函式的返回值,賦值給變數或存儲在資料結構中,也就是說:

  • Functions 類型上是一種 object
  • Functions 有屬性
  • 可以被視為值、被儲存成變數
  • 可以傳遞給其他 functions 使用
  • 可以從其他 functions 返回 functions(好饒舌)
  • 可以在 functions 上呼叫方法


Prototype-based 基於原型的編程

  • 從原型(藍圖)建立物件,並從中繼承方法,因此可以使用該方法。


Multi-paradigm 多範型程式語言

可以使用想要的編程風格來寫程式,這讓 JavaScript 非常靈活。

  • Procedural programming - 線性式編程
  • Object-oriented programming - OOP 物件導向編程
  • Functional programming - FP 函式編程


Single-threaded 單線程語言

  • JS 是單線程語言,所有的程式碼片段都會在堆疊中(stack)被執行,一次只會執行一個程式碼。


Dynamically-typed language 動態語言

  • 不用手動宣告資料型態
  • 重新賦值時,變數的資料型態可以更改。
  • 類型檢查發生在運行時或執行時




先簡短解釋一下,因為字數有點太多了,
之後再一一擊破。(絕對不是懶惰!)
留言
avatar-img
留言分享你的想法!
avatar-img
碎碎念
5會員
14內容數
本來是理科生,在被物理放棄之後成為了文科生,有時理性思考,偶爾卻會脫口出感性的字句;喜歡打字的聲音,以生活為靈感寫下過去、現在與未來。
你可能也想看
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
本章節旨在介紹TypeScript的基本語法,包括一般結構、程式進入點、註解以及變數的定義和賦值。這些知識將幫助讀者瞭解TypeScript的基本架構,並且可以開始使用TypeScript進行開發。
Thumbnail
本章節旨在介紹TypeScript的基本語法,包括一般結構、程式進入點、註解以及變數的定義和賦值。這些知識將幫助讀者瞭解TypeScript的基本架構,並且可以開始使用TypeScript進行開發。
Thumbnail
TypeScript是一種由Microsoft開發和維護的開源編程語言。它是JavaScript的超集,主要擴展了JavaScript的語法,增加了靜態類型檢查和其他特性,使得開發大型應用程序更為方便和可靠。
Thumbnail
TypeScript是一種由Microsoft開發和維護的開源編程語言。它是JavaScript的超集,主要擴展了JavaScript的語法,增加了靜態類型檢查和其他特性,使得開發大型應用程序更為方便和可靠。
Thumbnail
JavaScript (簡稱 JS) 是具有一級函數的輕量級、直譯式或即時編譯的程式語言。它因為用作網頁的腳本語言而大為知名,但也用於許多非瀏覽器的環境,像是 Node.js 等。由於 JavaScript 語法上的一些缺點,軟體工程師們又設計出了 CoffeeScript、TypeScript 和
Thumbnail
JavaScript (簡稱 JS) 是具有一級函數的輕量級、直譯式或即時編譯的程式語言。它因為用作網頁的腳本語言而大為知名,但也用於許多非瀏覽器的環境,像是 Node.js 等。由於 JavaScript 語法上的一些缺點,軟體工程師們又設計出了 CoffeeScript、TypeScript 和
Thumbnail
這些章節的目的是為了介紹JavaScript中的各種數據類型,包括基礎類型和物件類型,以及如何將數據從一種類型轉換為另一種類型。此外,還介紹了如何創建自定義類型,以及如何使用JavaScript中的陣列、集合和字典。
Thumbnail
這些章節的目的是為了介紹JavaScript中的各種數據類型,包括基礎類型和物件類型,以及如何將數據從一種類型轉換為另一種類型。此外,還介紹了如何創建自定義類型,以及如何使用JavaScript中的陣列、集合和字典。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
如果你曾經撰寫過網頁,那你一定接觸過 JavaScript 無論是在 NodeJs 或是瀏覽器中運行。 但你有沒有想過,我們寫下的 JS 程式碼,這些看似單純的英文和符號,是如何被轉化為機器能夠理解和執行的程式呢? 今天,讓我們一起深入了解其中的核心主角 ——Google 開發的開源 Java
Thumbnail
如果你曾經撰寫過網頁,那你一定接觸過 JavaScript 無論是在 NodeJs 或是瀏覽器中運行。 但你有沒有想過,我們寫下的 JS 程式碼,這些看似單純的英文和符號,是如何被轉化為機器能夠理解和執行的程式呢? 今天,讓我們一起深入了解其中的核心主角 ——Google 開發的開源 Java
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News