ECMAScript和JavaScript的關(guān)系
在1996年,那一年我才4歲。
JavaScript 的親生爸爸 Netscape 不要他了。
可又誰知道,時隔20年后,我居然要靠這個棄嬰在社會上討口飯吃。
So,誰來接管了這個棄嬰呢?
原來一個作為標準化的組織 ECMA 接手了它。
其實, Netscape 的出發(fā)點是好的,所謂,“望子成龍,望女成鳳”,他也希望 JavaScript 能在未來的時代里形成自己的風格和潮流,成為一種國際標準。
而后的20多年時間里,JavaScript果然不負所望,成為新的弄潮兒。
在次年,1997年。養(yǎng)父 ECMA 發(fā)布了262號標準文件的第一版,也就是 ECMA-262 。這個已經(jīng)具有了劃時代的意義了,因為也就是這個文件的發(fā)布,規(guī)定了瀏覽器腳本語言的標準,它們賦予了這個孩子一個新的名字,管它叫做 ECMAScript 。
這個版本就是1.0版本。
至于,它為什么不叫 JavaScript ?
一是這個名字是 Netscape 起的,它們不想自己又被侵犯的感覺,而是ECMA也想提現(xiàn)是自己提出并且制定了標準,所以要帶上自己的一點色彩。
因此,我們可以這樣理解二者的關(guān)系,ECMAScript 是 JavaScript 的規(guī)格,而后者才是核心的東西去實現(xiàn)該規(guī)格。
ECMAScript 2015 和 ES6的關(guān)系
What is the different between ECMAScript 2015 and ES6?
很簡單,它倆就是一個東西。
ECMAScript 2015(簡稱ES2015)是其官方名字,而 ES6 是一個別名,泛指。
在2011年, ECMA 發(fā)布了 ECMAScript 5.1 版本。
而在我最初接觸前端這個行業(yè)的時候,或者我們大多數(shù)人最開始寫的 JavaScript 代碼都是這個版本的。
騷動不安的開發(fā)者們,在這個版本發(fā)布以后就開始不斷地提交新的功能,標準的制定者們發(fā)現(xiàn),下一版本要更新的語法功能太多了,而這也將產(chǎn)生生產(chǎn)力的變革。
所以,如我們現(xiàn)在發(fā)布產(chǎn)品一樣,大功能當然要改一個大的版本號,于是開始緊鑼密鼓的著手 ES6.0 版本的開發(fā)和制定。
所以我們說的 ES6 就是指 JavaScript 語言的下一個版本。
按照通常的做法,我們會在一個大版本后升級其對應(yīng)的小版本,比如說:ES6.0版本、ES6.1版本、ES6.2版本...
But,標準的制定者們不想這么做,他們希望這種標準的升級能夠成為一種常規(guī)的流程。anybody在anytime都可以向標準聯(lián)盟提交新的提案。然后,每個月這些聯(lián)盟成員會聚集在一起商議、裁定我們要不要這些提案。直到某個提案成熟了,覺得其可以正式地納入標準了,就把它敲定下來。
再但是,敲定下來的提案總得有個時間去發(fā)布更新到新的版本吧。這些制定者們又覺得頻繁的小版本更新很繁瑣,于是,他們決定把每年的六月份定為了 JavaScript 的吉祥月,在這個月,進行一次版本的發(fā)布。
我們回顧一下,上面我們說到2011年 ECMA 發(fā)布了 ECMAScript 5.1 的版本。
直到2015年的6月,也是 JavaScript 歷史上的第一個吉祥月,它發(fā)布了自己的 ES6.0 版本,也就是我們熟知的 ES6 。我們同時也以它發(fā)布的年份對其進行另外一種命名:ECMAScript 2015標準(簡稱ES2015)。
我們需要記住的一點就是:2015年是 ES6 的誕生年。
于是,后面陸續(xù)的就會有:
- ECMAScript 2016標準 ES7 (2016年6月發(fā)布)
- ECMAScript 2017標準 ES8 (2017年6月發(fā)布)
- ECMAScript 2018標準 ES9 (2018年6月發(fā)布)
每年都會有一些新的特性。
寫到這里讓我想起一句話:
優(yōu)秀的工程師都是懶的
嗯,他們喜歡造出各種新奇的方案去改變之前解決問題的困境和復(fù)雜度。向偉大的程序員致敬!
回到我們的主題,我們現(xiàn)在學習和工作中用到的 ES6 ,它是 JavaScript 歷史上的一個分水嶺,它泛指在2015年更新標準以后的標準,涵蓋了上面列舉到的三條標準。它被廣義的認為是“下一代的JavaScript語言”。
關(guān)于語法提案的批準流程
任何人都可以向標準聯(lián)盟提案,要求修改語言的標準。
一項提案升級到標準需要渡五次劫,每次都要需要通過聯(lián)盟的嚴格審核:
- Stage 0 - Strawman (展示階段)
- Stage 1 - Proposal (征求意見階段)
- Stage 2 - Draft (草案階段)
- Stage 3 - Candidate (候選人階段)
- Stage 4 - Finished (定案階段)
一般來講,如果可以渡劫到第三個階段 -- 也就是 Stage 2 階段,基本在下一個標準更新就會納入到正式的標準里面。
下一篇文章將會介紹如何在一個項目中使用ES6語法。