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