跳轉到

JavaScript 程式語言發展史年表#

JavaScript 是1995年由 Brendan Eich 在網景公司(Netscape)以十天時間創造的語言。 它融合了 Scheme(函數式)、Self(原型繼承)與 Java/C(語法外殼)三大傳統, 從瀏覽器腳本語言演化為橫跨前端、後端、行動裝置與物聯網的通用語言。 本書同時記錄語言本身與開發者軟體(瀏覽器、執行時、工具鏈)兩條主線—— 它們互相推動:瀏覽器大戰催生標準化,Node 催生 ES6,框架催生不可變語法。

前史:理論根源#

年份 事件 意義
1936 圖靈機與 Lambda 演算 一級函數(first-class function)的數學基礎
1958 LISP 問世 函數作為值、動態型別、垃圾回收的先驅
1967 SIMULA 67 類別(class)概念的起源
1972 Parnas 資訊隱藏理論 封裝與私有欄位的理論基礎
1975 Scheme 發表 詞法作用域與一級函數的簡潔實現
1976 Promise 理論 非同步程式設計的理論基礎
1987 Self 語言 原型繼承:物件不需類別,直接複製他人
1993 Mosaic 瀏覽器 全球資訊網爆發,瀏覽器需要腳本語言

語言與開發者軟體年表#

一、誕生與瀏覽器大戰(1994–2001)#

年份 標題 事件
1994 Netscape Navigator 問世 第一個商業成功的瀏覽器,促成 JS 誕生
1995 JavaScript 誕生 十天創造:原型繼承、一級函數、動態型別、var
1995 IE 1.0 隨 Windows 95 問世 瀏覽器大戰(1995–2001)開端
1996 JScript 大戰與瀏覽器相容性危機 IE 3 逆向工程出 JScript,碎片化催生標準化
1996 VBScript 問世 微軟以 VB 語法對抗 JS,後因封閉消亡
1997 ECMAScript 1 標準化 ECMA-262 第一版,統一語言規範
1998 ECMAScript 2 ISO/IEC 16262 對齊,純編輯性修訂
1998 Mozilla 開源 網景開源瀏覽器,Firefox 的基礎
1999 ECMAScript 3:正則表達式與例外處理 RegExp、try/catch、switch、do-while
1999 XMLHttpRequest 問世 IE 5 為 Outlook Web Access 首創非同步資料取回

二、IE 壟斷與蟄伏(2001–2008)#

年份 標題 事件
2001 微軟反壟斷案與第一次瀏覽器大戰落幕 IE 6 市佔95%以上,五年零創新的雙重停滯
2001 JSON 的發明 Crockford 以 JS 物件字面量發明資料交換格式
2002 Phoenix 專案——Firefox 的前身 輕量獨立瀏覽器,打破壟斷的起點
2004 Firefox 1.0 問世 第二次瀏覽器大戰開打,標準實作復興
2005 Ajax 革命 Gmail/Google Maps 證明 Web 可做應用程式

三、重生與現代化(2008–2015)#

年份 標題 事件
2008 Chrome 問世與 V8 引擎 JIT 讓 JS 速度提升一個數量級,Node 的先決條件
2009 ECMAScript 5:嚴格模式與 JSON "use strict"、getters/setters、map/filter/reduce、bind
2009 Node.js 問世 V8 + 事件迴圈,JavaScript 走出瀏覽器
2010 npm 與套件管理生態 世界上最大的套件庫,生態爆發
2012 TypeScript 問世 漸進式靜態型別,彌補動態型別的工程化缺陷
2013 React 與前端框架革命 宣告式 UI、虛擬 DOM、JSX、單向資料流
2014 Babel 與 webpack——轉譯時代 新語法可立即使用,模組戰國統一
2015 ECMAScript 6(ES2015):現代化的黎明 let/const、箭頭函數、class、Promise、ESM、解構

四、年度小步快跑(2016–至今)#

年份 標題 關鍵語法/事件
2016 ES2016:指數運算子 **、Array.includes
2017 ES2017:async/await async/await、共享記憶體與 Atomics、Object.values/entries
2018 ES2018:非同步迭代 for await...of、物件展開/其餘、Promise.finally、正則命名群組
2018 Deno 構想 Ryan Dahl 反思 Node 十大缺陷,宣布 Deno
2019 ES2019:扁平化陣列 flat/flatMap、Object.fromEntries、可省略 catch 綁定
2020 ES2020:可選鏈與空值合併 ?.、??、BigInt、Promise.allSettled、動態 import
2020 Deno 1.0 問世 安全沙箱、TS 內建、URL 匯入
2020 Vite 與新一代建構工具 原生 ESM + esbuild,終結 webpack 漫長等待
2021 ES2021:邏輯賦值運算子 \|\|=、&&=、??=、replaceAll、數字分隔符、Promise.any
2022 ES2022:頂層 await 與類別欄位 頂層 await、私有欄位 #x、Array.at、error.cause
2023 ES2023:不可變陣列方法 toSorted/toReversed/with、findLast、Hashbang
2023 Bun 問世 Zig + JavaScriptCore,全能一體的運行時
2024 ES2024:分組與迭代輔助器 Object.groupBy、迭代器輔助器、Promise.withResolvers
2025 ES2025 與未來展望 Import Attributes、Set 方法、Temporal 曆法提案

發展主軸#

  1. 1995–1999:誕生與標準化 —— 十天創造的語言,瀏覽器大戰的碎片化四年內催生 ECMAScript 標準。
  2. 2000–2008:停滯與蟄伏 —— IE 6 壟斷與 ES4 內戰讓語言凍結十年,但 Ajax 讓生態暗中爆發。
  3. 2009–2015:重生 —— V8、Node.js、ES5/ES6 讓 JavaScript 成為通用語言。
  4. 2016–至今:每年小步快跑 —— TC39 年度發佈 + 「社群先試、標準後收」模式;執行時(Node/Deno/Bun)三雄競爭,工具鏈(Babel/webpack/Vite)不斷重寫效率極限。