
在學習 JavaScript 之前,理解它的語言標準演進對掌握現代開發技巧非常重要。本系列文章從 ECMAScript 的早期歷史談起,逐步帶領讀者了解語言規範如何演化、核心語法如何加入、以及每個 ECMAScript 版本帶來的重要特性。
本文從最早期的 ECMAScript 1(1997 年)開始介紹,說明 ECMAScript 規範如何統一各種不同實作,建立了 JavaScript 作為網頁與伺服器端語言的基礎。隨後文章將分成三個部分安排如下:
Part 1:ECMAScript 早期歷史與基礎版本演進(ES1 ~ ES4) – 闡述標準化初期與前幾個版本的歷史背景與基本語法發展。
Part 2:ES5、ES6 的重大里程碑與 ECMAScript 2016 ~ 2017 – 聚焦於 ES5、ES6(又稱 ES2015)等重大版本所引入的核心語言特性,以及隨後幾年年度版本的關鍵更新。
Part 3:ECMAScript 年度版本演進(ES2018 之後) – 探討語言在 ES2018 之後的演進趨勢與新加入的現代功能。
系列文章總共分成三篇來介紹,列在下方方便大家參考:
ECMAScript (ES) 是用來定義 JavaScript 的標準化語言。從1997年以來,經歷了各版本的更新和改進,下方紀錄一下每個版本新增了哪些重要的語法和功能。
ECMAScript 第一版發佈內容中,第一頁就點出 ECMAScript 推出的理念: ECMAScript: A general purpose, cross-platform programming language,希望整合當時各瀏覽器使用不同腳本語言的窘境,簡化工程師開發的時間,寫一份腳本語言就可以在各大瀏覽器上執行。
1990年代有兩個比較知名的腳本語言: JavaScript (Netscape 開發) 和 JScript (Microsoft 開發),1997年 Netscape 向歐洲標準化組織 - ECMA International 提交了 JavaScript,ECMA International 也在同年發表了第一版 ECMAScript 規範(ECMA-262)。至此,ECMAScript 陸續制定各種變數型態、函數、和其他規範,後續 JavaScript 和 JScript 也大致按照這個規範提供各方面的實作。
在第一版 ECMAScript 發佈內容中提到:
‘ECMAScript syntax intentionally resembles Java syntax. ECMAScript syntax is relaxed to enable it to serve as an easy-to-use scripting language.’
ECMAScript 1 有意模仿 Java 的語法,希望能夠制定簡單容易上手的語法。這一版定義了很多 JavaScript 重要的功能和語法,為後續版本的發展奠定了基礎。下面列出一些重要的規範:
delete, void, typeof, ++, --, +, -, ~, !*, /, %>>, <<, >>>>, <, <=, >===, !={}var;if... else if... else...while, for, for...incontinue, break, return, withNaN, Infinity, eval(), parseInt(), parseFloat(), isNaN(), isFinite()PI, abs(), sin(), cos()ECMAScript 2 延續了前一版的基本結構,更詳細定義語法、語義以及相關的內建物件和函數。
abstract, do, import, short, boolean, double, instanceof, static, byte, enum, int, super, case, export, interface, switch, catch, extends, long, synchronized, char, final, native, throw, class, finally, package, throws, const, float, private, transient, debugger, goto, protected, try, default, implements, public, volatileECMAScript 3 定義了一些常用術語,擴充了前兩版的定義,並且多了幾項新的語言特性,例如正則表達式、異常處理等等。
Undefined, Null, Boolean, String, Number由於 ECMAScript 4 當時訂定的目標過於龐大,試圖一次引入很多複雜的新特性,像是支援類別 (Class)、類型 (Type)、模組 (Module) 等等,實質上可能會演變成一個新的語言,因此當時許多大公司像 MicroSoft 和 Yahoo 都不支持這個版本的規範,最終在 Adobe 宣告退出支援 ECMAScript 的狀況下,可以說是確定宣告此版本的失敗。
到這裡我們理解了 ECMAScript 的最早期歷史背景和初期標準(ES1 ~ ES4)的演進。這些版本雖然較簡單,但奠定了現代 JavaScript 的核心基礎。下一篇將從 ES5 和 ES6(ES2015) 的重大更新談起,說明語言如何引入嚴格模式、模組化、箭頭函式等關鍵功能,使 JavaScript 進入現代開發階段。