ES6 簡(jiǎn)介
1. 前言
本節(jié)我們將什么是 ES5 ?什么是 ES6 ?為什么要學(xué)習(xí) ES6 ?以及 ES6 與 ES5 之間的關(guān)系。本教程會(huì)通過(guò)在 ES5 中使用的知識(shí)點(diǎn),對(duì)應(yīng)的引出在 ES6 的知識(shí)點(diǎn),深入淺出講解 ES6 為什么會(huì)被引入?以及它背后的思想。
2. 什么是 ES5
ECMAScript 5 是 2009 年發(fā)布的 ECMAScript 的標(biāo)準(zhǔn),由于第四版添加的內(nèi)容過(guò)于復(fù)雜,便被廢棄了。ES5 主要新增了嚴(yán)格模式,還有對(duì)數(shù)組和對(duì)象新增了一些方法,擴(kuò)展了 JS 底層編寫(xiě)的能力。如:Vue 中的數(shù)據(jù)偵測(cè)就是使用 ES5 中的 Object.defineProperty
方法來(lái)實(shí)現(xiàn)的。
3. 什么是 ES6
ES6 是 ECMAScript 6
的簡(jiǎn)稱(chēng),是于 2015 年 6 月正式發(fā)布的 JavaScript 語(yǔ)言的標(biāo)準(zhǔn),正式名為 ECMAScript 2015(簡(jiǎn)稱(chēng) ES2015)。它的目標(biāo)是使得 JavaScript 語(yǔ)言可以用來(lái)編寫(xiě)復(fù)雜的大型應(yīng)用程序,成為企業(yè)級(jí)開(kāi)發(fā)語(yǔ)言。同時(shí) ES6 增加了很多 API 極大地拓展了 JavaScript 的功能,使他更像一門(mén)編程語(yǔ)言,可以承擔(dān)更多的事。
ES6 因?yàn)槭?2015 年發(fā)布的,也稱(chēng)作 ES2015,對(duì)應(yīng)的版本是 ES6,后面的命名方式以此類(lèi)推。ES6 從起草到正式發(fā)布,經(jīng)過(guò)了一個(gè)很漫長(zhǎng)的時(shí)間。從 2000 年 ES4 開(kāi)始醞釀的時(shí)候就已經(jīng)開(kāi)始了,由于 ES4 添加的 API 過(guò)多,導(dǎo)致這個(gè)版本沒(méi)有通過(guò),后來(lái) ES5 就直接發(fā)布了。但是 ES4 提出的很多內(nèi)容也被 ES6 所繼承,因此,ES6 制定的起點(diǎn)其實(shí)是 2000 年。
ES5 到 ES6 的演變其實(shí)經(jīng)過(guò)了漫長(zhǎng)的時(shí)間,而且 ES6 也算是 ECMAScript 的一個(gè)分水嶺,它做了很多工作,修補(bǔ)了 ES5 之前 JavaScrept 存在的各種缺陷,并添加了很多新的功能,盡量能使得 JavaScript 成為一個(gè)更高級(jí)的,能承擔(dān)更大型項(xiàng)目的語(yǔ)言。
Tips: 在后面的文章中,我們所說(shuō)的 ES5 統(tǒng)稱(chēng) ES6 之前的所有 ECMAScript 的特性,ES6 則是 ES6 之后的版本內(nèi)容。從 2015 年發(fā)布的 ECMAScript6 之后每年 ECMAScript 都會(huì)正式發(fā)布一個(gè)版本 ECMAScript。所以很多特性不能直接在瀏覽器中使用,需要借助 babel 這樣的工具,把 ES6 的語(yǔ)法轉(zhuǎn)換成 ES5,這樣瀏覽器才能識(shí)別。
4. 為什么學(xué)習(xí) ES6
ES5 不能滿(mǎn)足前端的復(fù)雜度,無(wú)論是 jQuery 這樣的庫(kù),還是像 Vue 和 React 這樣的框架,都在使用一些降級(jí)的方案來(lái)解決現(xiàn)有的問(wèn)題,所以 ES6 的引入就是為了解決 ES5 以前存在的各種問(wèn)題。另外,ES6 是一個(gè)大換血的版本,也是一個(gè)分水嶺,標(biāo)志著 JavaScript 向著更高的方向發(fā)展。ES6 也是對(duì) ES5 的增強(qiáng)和升級(jí)。
- 主流的瀏覽器都已經(jīng)全面支持 ES6;
- 行業(yè)內(nèi)較新的前端框架都已經(jīng)全面使用 ES6 的語(yǔ)法;
- 微信小程序,uni-app 等都是基于 ES6 的語(yǔ)法;
- 從就業(yè)出發(fā),現(xiàn)在公司基本都在使用新的語(yǔ)法,增加必備技能獲得更好的offer。
以上都是學(xué)習(xí) ES6 的場(chǎng)景,也是大勢(shì)所趨。
5. 版本說(shuō)明
從 2015 年 6 月正式發(fā)布的 ES2015(簡(jiǎn)稱(chēng) ES6) 語(yǔ)言的標(biāo)準(zhǔn)后,每年 6 月都會(huì)對(duì) ECMAScript 進(jìn)行版本迭代,本系列文章也是對(duì) ES6 及以后更新的內(nèi)容做系統(tǒng)性的講解,目前的版本已經(jīng)到了 ES2019(簡(jiǎn)稱(chēng) ES10)。
添加語(yǔ)言的新特性,增加類(lèi)和模塊化的語(yǔ)法,其他特性包括迭代器,Python 風(fēng)格的生成器和生成器表達(dá)式,箭頭函數(shù),二進(jìn)制數(shù)據(jù),新增內(nèi)置數(shù)據(jù)結(jié)構(gòu)(Map),增加了集合概念(Set),異步的解決方案(promise,async/await),使用 reflect 和 proxy 取代 Object 的部分功能更加細(xì)化了語(yǔ)言層面的部分。
另外,還增加了異步循環(huán),生成器,新的正則表達(dá)式特性和 rest/spread 等語(yǔ)法。
6. 學(xué)習(xí)基礎(chǔ)
本教程是 JavaScript 的延伸和進(jìn)階課程,所以學(xué)習(xí)本教程需要一些前置知識(shí),主要有以下幾個(gè)要求:
- 了解 JavaScript 的基本語(yǔ)法;
- 有過(guò)一定的項(xiàng)目經(jīng)驗(yàn);
- 對(duì) ECMAScript 的規(guī)范有一定的了解。
7. 小結(jié)
本節(jié)主要介紹了ES5、ES6 的內(nèi)容,需要注意以下幾點(diǎn):
-
JavaScript 不算是一門(mén)純正的編程語(yǔ)言,它是一個(gè)集合,是由 ECMAScript、DOM 和 BOM 組合而成的,ECMAScript 才是 JavaScript 在 Web 編程中的核心。
-
ES6 是一個(gè)分水嶺,提供了很多超前的特性,不能直接在瀏覽器中使用,需要借助轉(zhuǎn)換器,把 ES6 語(yǔ)法轉(zhuǎn)換成 ES5 或者更低的版本才能在瀏覽器中運(yùn)行。