開源專案
leonardomso/33-js-concepts avatar
leonardomso/33-js-concepts

33-js-concepts:33 個 JavaScript 概念:倉庫內容概覽

每個開發人員都應該了解的 33 個 JavaScript 概念。了解如何攔截物件操作、建立反應式系統、實作驗證以及建立強大的元程式模式。

66,526 個 Star9,133 個 ForkJavaScriptMIT

秒懂

它是什麼?
33 JavaScript concepts every developer should know. Understand how to intercept object operations, create reactive systems, implement validation, and build powerful metaprogramming patterns. 本文依 README、版本與專案檔案整理實際適用範圍。
適合誰用?
適合需要 33-js-concepts 所述能力、且能接受 README 已公開限制的讀者;不適合把未記載的功能當作保證的人。先依專案指定版本與命令完成最小流程,再檢查輸出、錯誤和資源邊界。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 5 天前。
用什麼語言寫的?
主要是 JavaScript(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

33-js-concepts:被 GitHub 認定為 2018 年頂級開源專案

README 開篇將專案稱為「33 Concepts Every JavaScript Developer Should Know」,並包含一條橫幅,稱 GitHub 將其認定為 2018 年頂級開源專案之一,橫幅連結到 GitHub 部落格上關於 2018 年新開源專案的文章。(33-js-concepts-1-1)

隨後是專案宗旨:該倉庫幫助開發者掌握核心 JavaScript 概念,每個概念都包含清晰的解釋、實用的程式碼範例和精選資源。(33-js-concepts-1-2)

README 將讀者導向 33jsconcepts.com 上的完整指南,並提供了「開始學習」的連結。(33-js-concepts-1-3)

倉庫的中繼資料描述為「33 JavaScript concepts every developer should know.」,與 README 的標題一致。(33-js-concepts-1-4)

該倉庫沒有被封存,預設分支為 master。(33-js-concepts-1-5)

(33-js-concepts-1-6)

這個倉庫更像可連結的課程索引,而不是可部署的 JavaScript 套件。33 個主題從原始型別、作用域與呼叫堆疊一路延伸到 Big O、設計模式和整潔程式碼;`Beyond 33` 再加入 Proxy、Reflect、IndexedDB、觀察者 API 等延伸材料。讀者可依自身缺口選頁,不需要先配置執行環境。(33-js-concepts 第 1 節)

針對 33-js-concepts 的第 1 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

針對 33-js-concepts 的第 11 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

33-js-concepts:33 個概念,分為七大類

主清單是 README 的核心內容,列出 33 個概念,並按主題分為七組。(33-js-concepts-2-1)

「基礎」涵蓋原始型別、原始型別與物件、型別強制轉換、相等運算子、作用域與閉包、呼叫堆疊。(33-js-concepts-2-2)

「函式與執行」涵蓋事件迴圈、IIFE、模組與命名空間。(33-js-concepts-2-3)

「Web 平台」涵蓋 DOM、Fetch API 和 Web Workers。(33-js-concepts-2-4)

「物件導向 JavaScript」涵蓋工廠函式與類別、this/call/apply/bind、物件建立與原型、繼承與多型。(33-js-concepts-2-5)

「非同步 JavaScript」涵蓋回呼、Promise、async/await、產生器與迭代器。(33-js-concepts-2-6)

「函式式程式設計」涵蓋高階函式、純函式、map/reduce/filter、遞迴、柯里化與組合。(33-js-concepts-2-7)

「進階主題」涵蓋 JavaScript 引擎、錯誤處理、正規表示式、現代 JS 語法、ES 模組、資料結構、演算法與 Big O、設計模式、整潔程式碼。(33-js-concepts-2-8)

這些分類涵蓋了從語言基礎、執行模型到瀏覽器平台、非同步程式設計、函式式風格和工程實務的廣泛範圍,每個概念都帶有指向指南網站對應頁面的連結。(33-js-concepts-2-9)

(33-js-concepts-2-10)

具體使用方式是從 `33jsconcepts.com/concepts/primitive-types` 之類的頁面開始,將一個概念配一段可執行的 JavaScript 小例子,再回到清單補足相依主題。README 沒有承諾網站更新頻率、下載量或效能,因此這些項目不能由倉庫本身推導。MIT 條款允許改作教材,但複本仍須保留版權與授權聲明。(33-js-concepts 第 2 節)

針對 33-js-concepts 的第 2 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

針對 33-js-concepts 的第 12 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

33-js-concepts:33 之外:擴充概念

在 33 個編號概念之後,README 增加了一節「Beyond 33: Extended Concepts」,收錄以基礎知識為基礎的擴充主題。(33-js-concepts-3-1)

這些主題按類別分組:語言機制(提升、暫時性死區、嚴格模式)、型別系統細節、物件與屬性(屬性描述符、getter 與 setter、物件方法、Proxy 與 Reflect、WeakMap 與 WeakSet)、記憶體與效能(記憶體管理、垃圾回收、防抖與節流、記憶化)、現代語法與運算子、瀏覽器儲存(localStorage 與 sessionStorage、IndexedDB、Cookie)、事件(冒泡與捕獲、事件委派、自訂事件)、觀察者 API(Intersection、Mutation、Resize 與 Performance 觀察者)、資料處理(JSON 深入、型別化陣列與 ArrayBuffer、Blob 與 File API、requestAnimationFrame)。(33-js-concepts-3-2)

每個擴充主題同樣連結到指南網站上的對應頁面。(33-js-concepts-3-3)

這些主題涉及瀏覽器 API、語言內部機制和效能最佳化,比前 33 個概念更深入。(33-js-concepts-3-4)

(33-js-concepts-3-5)

這個倉庫更像可連結的課程索引,而不是可部署的 JavaScript 套件。33 個主題從原始型別、作用域與呼叫堆疊一路延伸到 Big O、設計模式和整潔程式碼;`Beyond 33` 再加入 Proxy、Reflect、IndexedDB、觀察者 API 等延伸材料。讀者可依自身缺口選頁,不需要先配置執行環境。(33-js-concepts 第 3 節)

針對 33-js-concepts 的第 3 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

針對 33-js-concepts 的第 13 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

33-js-concepts:指南網站、翻譯與貢獻

首頁是 33jsconcepts.com,README 將其稱為完整指南,每個概念都連結到該網域下的一個頁面,連結位址形如 /concepts/primitive-types。(33-js-concepts-4-1)

該專案已被翻譯成 40 多種語言,完整清單見 TRANSLATIONS.md,README 提到這些翻譯由社群完成。(33-js-concepts-4-2)

README 還表示歡迎貢獻,並指向 CONTRIBUTING.md 查看貢獻指南。(33-js-concepts-4-3)

本文所用的倉庫中繼資料列出 66,510 個星標和 9,147 個複刻,有 4 個未關閉的問題。(33-js-concepts-4-4)

倉庫的語言標記為 JavaScript。(33-js-concepts-4-5)

(33-js-concepts-4-6)

具體使用方式是從 `33jsconcepts.com/concepts/primitive-types` 之類的頁面開始,將一個概念配一段可執行的 JavaScript 小例子,再回到清單補足相依主題。README 沒有承諾網站更新頻率、下載量或效能,因此這些項目不能由倉庫本身推導。MIT 條款允許改作教材,但複本仍須保留版權與授權聲明。(33-js-concepts 第 4 節)

針對 33-js-concepts 的第 4 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

針對 33-js-concepts 的第 14 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

33-js-concepts:README 未記載的內容

README 沒有描述安裝步驟、命令列用法或執行時期行為,因為該倉庫是一份學習資源清單,而不是一個需要部署的軟體套件。(33-js-concepts-5-1)

README 也沒有提供下載量、使用者數量或效能基準。(33-js-concepts-5-2)

倉庫的首頁存在,但 README 本身沒有說明網站的運作方式或內容更新頻率。(33-js-concepts-5-3)

關於這些方面,本文只能標註為來源未記載,需要另行核實。(33-js-concepts-5-4)

(33-js-concepts-5-5)

這個倉庫更像可連結的課程索引,而不是可部署的 JavaScript 套件。33 個主題從原始型別、作用域與呼叫堆疊一路延伸到 Big O、設計模式和整潔程式碼;`Beyond 33` 再加入 Proxy、Reflect、IndexedDB、觀察者 API 等延伸材料。讀者可依自身缺口選頁,不需要先配置執行環境。(33-js-concepts 第 5 節)

針對 33-js-concepts 的第 5 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

針對 33-js-concepts 的第 15 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

33-js-concepts:MIT 授權條款及其覆蓋範圍

該倉庫以 MIT 授權條款發布,版權歸 Leonardo Maldonado 所有,年份為 2018。(33-js-concepts-6-1)

授權條款授予使用、複製、修改、合併、發布、分發、再授權和出售軟體副本的權利,前提是版權聲明和授權聲明包含在所有副本或實質性部分中。(33-js-concepts-6-2)

軟體按「原樣」提供,不附帶任何形式的明示或暗示保證,包括適銷性、特定用途適用性和不侵權。(33-js-concepts-6-3)

授權條款還包含標準的責任限制條款。(33-js-concepts-6-4)

授權條款文字沒有涉及支援、安全狀態或維護承諾,這些內容需要另行核實。(33-js-concepts-6-5)

(33-js-concepts-6-6)

具體使用方式是從 `33jsconcepts.com/concepts/primitive-types` 之類的頁面開始,將一個概念配一段可執行的 JavaScript 小例子,再回到清單補足相依主題。README 沒有承諾網站更新頻率、下載量或效能,因此這些項目不能由倉庫本身推導。MIT 條款允許改作教材,但複本仍須保留版權與授權聲明。(33-js-concepts 第 6 節)

針對 33-js-concepts 的第 6 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

針對 33-js-concepts 的第 16 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 README 目前版本、分支 master、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 33-js-concepts 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。

編輯結論

適合需要 33-js-concepts 所述能力、且能接受 README 已公開限制的讀者;不適合把未記載的功能當作保證的人。先依專案指定版本與命令完成最小流程,再檢查輸出、錯誤和資源邊界。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
社群筆記

社群筆記