起源
網(wǎng)景公司開發(fā),起初命名為Mocha, 后來改名LiveScript,不久為了趁java的熱度,改成了Javascript
瀏覽器大戰(zhàn)
微軟看到了紅利,開發(fā)了IE,推出了JScript和網(wǎng)景競(jìng)爭(zhēng)。因?yàn)闆]有語言標(biāo)準(zhǔn),大家都添加很多私有的專屬對(duì)象,使得網(wǎng)頁開發(fā)者非常的痛苦。
標(biāo)準(zhǔn)化
1996年,網(wǎng)景公司向ECMA(歐洲計(jì)算機(jī)制造商協(xié)會(huì)) 提交語言標(biāo)準(zhǔn)。1997年第一個(gè)ECMAScript標(biāo)準(zhǔn)規(guī)范退出。
組成
javascript基本上由ECMAScript規(guī)范(語言的語法和基本對(duì)象)以及DOM(網(wǎng)頁操作接口)和BOM(瀏覽器交互接口)組成。
ECMAscript 版本
| 版本 | 發(fā)表日期 | 與前版本的差異 |
|---|---|---|
| 1 | 1997年6月 | 首版 |
| 2 | 1998年6月 | 格式修正,以使得其形式與ISO/IEC16262國際標(biāo)準(zhǔn)一致 |
| 3 | 1999年12月 | 強(qiáng)大的正則表達(dá)式,更好的詞法作用域鏈處理,新的控制指令,異常處理,錯(cuò)誤定義更加明確,數(shù)據(jù)輸出的格式化及其它改變 |
| 4 | 放棄 | 由于關(guān)于語言的復(fù)雜性出現(xiàn)分歧,第4版本被放棄,其中的部分成為了第5版本及Harmony的基礎(chǔ) |
| 5 | 2009年12月 | 新增“嚴(yán)格模式(strict mode)”,一個(gè)子集用作提供更徹底的錯(cuò)誤檢查,以避免結(jié)構(gòu)出錯(cuò)。澄清了許多第3版本的模糊規(guī)范,并適應(yīng)了與規(guī)范不一致的真實(shí)世界實(shí)現(xiàn)的行為。增加了部分新功能,如getters及setters,支持JSON以及在對(duì)象屬性上更完整的反射[4][5][6][7][8] |
| 5.1 | 2011年6月 | ECMAScript標(biāo)5.1版形式上完全一致于國際標(biāo)準(zhǔn)ISO/IEC 16262:2011。 |
| 6 | 2015年6月 | ECMAScript 2015(ES2015),第 6 版,最早被稱作是 ECMAScript 6(ES6),添加了類和模塊的語法,其他特性包括迭代器,Python風(fēng)格的生成器和生成器表達(dá)式,箭頭函數(shù),二進(jìn)制數(shù)據(jù),靜態(tài)類型數(shù)組,集合(maps,sets 和 weak maps),promise,reflection 和 proxies。作為最早的 ECMAScript Harmony 版本,也被叫做ES6 Harmony。 |
| 7 | 2016年6月 | ECMAScript 2016(ES2016),第 7 版,多個(gè)新的概念和語言特性[9] |
| 8 | 2017年6月 | ECMAScript 2017(ES2017),第 8 版,多個(gè)新的概念和語言特性[10] |
| 9 | 2018年6月 | ECMAScript 2018 (ES2018),第 9 版,包含了異步循環(huán),生成器,新的正則表達(dá)式特性和 rest/spread 語法。 |
| 10 | 2019年6月 | ECMAScript 2019 (ES2019),第 10 版 |
總結(jié):
- 一般前端入行的同學(xué)都是在學(xué)習(xí)ES3以及ES5
- 當(dāng)前(2019年)最為流行的是ES6版本。
- 一般ES6 泛指 ES5之后的下一代javascript語言規(guī)范, 包含了ES 2015 - ES 2019
- 當(dāng)前每年發(fā)布一個(gè)版本,但是到目前為止(2019)都是在ES2015基礎(chǔ)上最小幅的新增或者增強(qiáng)。
參考: