[ 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
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
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標準、異步編程、模塊系統等知識。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News