歡迎來到深度探索 ES6!在這個(gè)新的周系列里,我們將探索 ECMAScript 6。這是一種 JavaScript 語言即將到來的新版本。ES6 包含了很多新的語言功能,且這些語言功能使得 JS 更加強(qiáng)大更富有表現(xiàn)力。在接下來的幾周時(shí)間里,我們將會(huì)一個(gè)一個(gè)地了解這些新功能。但是在我們了解細(xì)節(jié)的東西之前,我們值得花一點(diǎn)時(shí)間來討論一下什么是 ES6 以及你期望能得到什么。
JavaScript 編程語言是由 ECMAScript 名下的 ECMA 進(jìn)行標(biāo)準(zhǔn)化制定的( ECMA 是和 W3C 一樣的標(biāo)準(zhǔn)化組織 )。除此之外,ECMAScript 可如下定義:
其沒有定義與 HTML 、CSS 或者 Web API 交互的內(nèi)容,比如 DOM ( 文檔對(duì)象模型 )。那些都是在單獨(dú)的標(biāo)準(zhǔn)中定義的。 ECMAScript 不僅在瀏覽器環(huán)境中的涵蓋了 JS 的所有方面,其在非瀏覽器環(huán)境中也涵蓋了 JS ,例如 node.js 。
上周, ECMAScript 語言規(guī)范的最終草案,第 6 版,被提交給 ECMA 大會(huì)進(jìn)行審查。這意味著什么呢?
這意味著這個(gè)夏天,對(duì)于核心的 JavaScript 編程語言,我們將有一個(gè)新的標(biāo)準(zhǔn)。
這是一個(gè)大新聞。新的 JS 語言不是每天都可能出現(xiàn)的。 上一個(gè)版本,ES5,可以追溯到 2009 年。從那時(shí)起,ES 標(biāo)準(zhǔn)委員會(huì)就一直致力于 ES6 的制定直至今日。
ES6 是語言的一次重大的升級(jí)。同時(shí),你的 JS 代碼也可以繼續(xù)工作。ES6 被設(shè)計(jì)為可以最大程度兼容現(xiàn)有的代碼。事實(shí)上,很多瀏覽器已經(jīng)支持豐富的 ES6 的功能,同時(shí)實(shí)現(xiàn)工作也正在進(jìn)行中。這就意味著你所有的 JS 代碼已經(jīng)可以在那些實(shí)現(xiàn)一些 ES6 功能的瀏覽器里面運(yùn)行!如果你到現(xiàn)在還沒有看到任何兼容性問題,你可能永遠(yuǎn)也不會(huì)碰到這些問題了。
ECMAScript 標(biāo)準(zhǔn)的先前的版本分別編號(hào)為 1,2,3 和 5。
第四版本發(fā)生了什么?第 4 版的 ECMAScript 曾是在計(jì)劃之中的,并且事實(shí)上大量的工作也已經(jīng)完成了。但由于它過于的繁瑣,其最終被廢棄了。 ( 例如,它在靜態(tài)類型系統(tǒng)中對(duì)泛型和類型推斷有一個(gè)復(fù)雜的選擇。)
ES4 是有爭議的。當(dāng)標(biāo)準(zhǔn)委員會(huì)最終停止繼續(xù)制定時(shí),該委員會(huì)成員同意出版一個(gè)相對(duì)溫和的 ES5 ,然后繼續(xù)工作以制定更多的有較大幅度改進(jìn)的新功能。這個(gè)直接通過談判達(dá)成的協(xié)議被稱為“和諧(Harmony)”,這也是為什么 ES5 規(guī)范包含這兩句話:
ECMAScript 是一個(gè)充滿活力的語言且其語言的演化還不完整。在未來的 ECMAScript 的版本中將有較大提升的技術(shù)的聲明。
這種說法也可以被看作是委員會(huì)給出的一個(gè)承諾。
ES5 在 2009 年對(duì)語言進(jìn)行了更新,其介紹了 Object.create( ), Object.defineProperty( ), getter 和 setter 方法??,strict 模式和 JSON 對(duì)象。我已經(jīng)使用了所有的這些功能,而且我喜歡 ES5 對(duì)語言做出的貢獻(xiàn)。但是, 這些功能中的任何一種都沒有對(duì)我寫 JS 代碼的方式產(chǎn)生巨大的影響。對(duì)我來說其最重要的創(chuàng)新,很可能是新的數(shù)組方法:.MAP,filter 等等。
然而,ES6 是決然不同的。它是多年和諧工作的產(chǎn)物。 同時(shí),它是新的語言和庫功能的寶庫,其是迄今為止 JS 的最實(shí)質(zhì)性的升級(jí)。 其新功能涵蓋面很廣,從那些很受歡迎的能帶來便利的功能(如箭頭的功能和簡單的字符串插值),到能帶來頭腦風(fēng)暴的概念(如代理和生成器)。
ES6 將改變你寫 JS 代碼的方式。
本系列旨在向你展示 ES6 如何通過檢查其新功能來給JavaScript程序員提供新的寫代碼體驗(yàn)。
我們將以一個(gè)典型的“功能缺失”作為開始?!肮δ苋笔А笔俏以谶^去的十年的時(shí)間內(nèi)一直渴望能從 JavaScript 那看到的。所以,讓我們一起去探索 ES6 迭代器和新的 for-of 循環(huán)。