JavaScript 是面向 Web 的編程語言,獲得了所有網頁瀏覽器的支持,是目前使用最廣泛的腳本編程語言之一,也是網頁設計和 Web 應用必須掌握的基本工具。
JavaScript 歷史
1995 年 2 月,Netscape 公司發布 Netscape Navigator 2 瀏覽器,並在這個瀏覽器中免費提供了一個開發工具——LiveScript。由於當時 Java 比較流行,Netscape 便把 LiveScript 改名為 JavaScript,這也是最初的 JavaScript 1.0 版本。
由於 JavaScript 1.0 很受歡迎,Netscape 在 Netscape Navigator 3 中又發布了 JavaScript 1.1 版本。不久,微軟在 Internet Explorer 3 中也加入了腳本編程功能。為了避免與 Netscape 的 JavaScript 產生糾紛,微軟特意將其命名為 JScript。
1997 年,歐洲計算機制造商協會(ECMA)以 JavaScript 1.1 為基礎制訂了腳本語言標准——ECMA-262,並命名為 ECMAScript。
1998 年,國際標准化組織和國際電工委員會(ISO/IEC)采用了 ECMAScript 標准(即 ISO/IEC-16262)。自此,瀏覽器廠商就以 ECMAScript 作為各自 JavaScript 實現的規范標准。JavaScript 正式從各自為政走向了規范統一。
ECMAScript 起源
1997 年,ECMA 發布 262 號標准文件(ECMA-262)的第一版,規定了腳本語言的實現標准,並將這種語言命名為 ECMAScript。這個版本就是 ECMAScript 1.0 版。
之所以不叫 JavaScript,主要有以下兩個原因:
- 商標限制。Java 是 Sun 公司的商標,根據授權協議,只有 Netscape 公司可以合法使用 JavaScript 這個名字,而且 JavaScript 己經被 Netscape 公司注冊為商標。
- 體現公益性。該標准的制訂者是 ECMA 組織,而不是 Netscape 公司,這樣有利於確保規范的開放性和中立性。
簡單概括,ECMAScript 是 JavaScript 語言的規范標准,JavaScript 是 ECMAScript 的一種實現。注意,這兩個詞在一般語境中是可以互換的。
EECMAScript 版本
1998 年 6 月,ECMAScript 2.0 版發布。
1999 年 12 月,ECMAScript 3.0 版發布,並成為 JavaScript 的通用標准,獲得廣泛支持。
2007 年 10 月,ECMAScript 4.0 版草案發布,對 3.0 版做了大幅升級。由於 4.0 版的目標過於激進,各方對於是否通過這個標准產生了嚴重分歧。
2008 年 7月,ECMA 中止 ECMAScript 4.0 的開發,將其中涉及現有功能改善的一小部分發布為 ECMAScript 3.1。不久,ECMAScript 3.1 改名為 ECMAScript 5。
2009 年 12 月,ECMAScript 5.0 版正式發布。
2011 年 6 月,ECMAScript 5.1 版發布,並且成為 ISO 國際標准(ISO/IEC 16262:2011)。
2013 年 12 月,ECMAScript 6 版草案發布。
2015 年 6 月,ECMAScript 6 發布正式版本,並更名為 ECMAScript 2015 。Mozilla 在這個標准的基礎上推出了 JavaScript 2.0。
從此以后,JavaScript 開始以年份命名,新版本將按照 “ECMAScript+年份” 的形式發布。目前最新 版本為 ECMAScript 2018,於 2018 年 7 月正式發布。
瀏覽器支持
目前 5 大主流瀏覽器都支持 ECMAScript 5,具體說明如下:
- Opera 11.60+
- IE 9+
- Firefox 4+
- Safari 5.1+
- Chrome 13+
詳細信息可以訪問 http://kangax.github.io/compat-table/es5/ 了解。
ECMAScript 6 的支持情況可以訪問 http://kangax.github.io/compat-table/es6/ 了解。
IE9 不支持嚴格模式,直到 IE 10 才開始;Safari 5.1 仍不支持 Function.prototype.bind,盡管 Function.prototype.bind 已經被 Webkit 所支持。
對於舊版瀏覽器的支持信息,可以查看 Juriy Zaytsev 的 ECMAScript 5 兼容性列表(http:// kangax.github.io/compat-table/es5/)。
JavaScript 構成
ECMAScript 是 JavaScript 的標准,但它並不等同於 JavaScript,也不是唯一被標准化的規范。
實際上,一個完整的 JavaScript 實現由以下 3 個不同部分組成:
- 核心(ECMAScript):語言核心部分。
- 文檔對象模型(Document Object Model,DOM):網頁文檔操作標准。
- 瀏覽器對象模型(BOM):客戶端和瀏覽器窗口操作基礎。
Web 瀏覽器只是 ECMAScript 實現的宿主環境之一。宿主環境不僅提供基本的 ECMAScript 實現,同時也會提供各種擴展功能。
文檔對象模型是 HTML 的應用程序編程接口(API)。DOM 把整個文檔映射為一個樹形節點結構,以方便 JavaScript 腳本快速訪問和操作。
IE3.0 和 Netscape Navigator 3.0 提供了一種新特性,即 BOM(瀏覽器對象模型)。使用 BOM 可以對瀏覽器窗口進行訪問和操作,如移動窗口、訪問歷史記錄、動態導航等。與 DOM 不同,BOM 只是 JavaScript 的一個部分,並沒有形成規范性標准,但是所有瀏覽器都默認支持。
