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