深入淺出ES6(一):ES6是什么
編者按:ECMAScript 6離我們越來越近了,作為它最重要的方言,Javascript也即將迎來語法上的重大變革,InfoQ特開設“深入淺出ES6”專欄,來看一下ES6將給我們帶來哪些新內容。本專欄文章來自 Mozilla Web開發者博客 ,由作者授權翻譯并發布。
歡迎來到ES6深入淺出!JavaScript的新版本離我們越來越近,我們將通過每周一節的系列課程一起探索ECMAScript 6新世界。ES6中包含了許多新的語言特性,它們將使JS變得更加強大,更富表現力。在接下來的幾周內,我們將一一深入了解它們。但在我們開始詳細學習之 前,我認為十分有必要花幾分鐘講解一下ES6到底是什么,以及你可以從中學到什么!
ECMAScript發生了什么變化?
編程語言JavaScript是ECMAScript的實現和擴展,由ECMA(一個類似W3C的標準組織)參與進行標準化。ECMAScript定義了:
- 語言語法 – 語法解析規則、關鍵字、語句、聲明、運算符等。
- 類型 – 布爾型、數字、字符串、對象等。
- 原型和繼承
- 內建對象和函數的 標準庫 – JSON 、 Math 、 數組方法 、 對象自省方法 等。
ECMAScript標準不定義HTML或CSS的相關功能,也不定義類似DOM(文檔對象模型)的 Web API ,這些都在獨立的標準中進行定義。ECMAScript涵蓋了各種環境中JS的使用場景,無論是瀏覽器環境還是類似 node.js 的非瀏覽器環境。
新標準
上周,ECMAScript語言規范第6版最終草案提請Ecma大會審查,這意味著什么呢?
這意味著在今年夏天, 我們將迎來最新的 JavaScript 核心語言標準 。
這無疑是一則重磅新聞。早在2009年,上一版ES5剛剛發布,自那時起,ES標準委員會一直在緊鑼密鼓地籌備新的JS語言標準——ES6。
ES6是一次重大的版本升級,與此同時,由于ES6秉承著最大化兼容已有代碼的設計理念,你過去編寫的JS代碼將繼續正常運行。事實上,許多瀏覽 器已經支持部分ES6特性,并將繼續努力實現其余特性。這意味著,在一些已經實現部分特性的瀏覽器中,你的JS代碼已經可以正常運行。如果到目前為止你尚 未遇到任何兼容性問題,那么你很有可能將不會遇到這些問題,瀏覽器正飛速實現各種新特性。
版本號6
ECMAScript標準的歷史版本分別是1、2、3、5。
那么為什么沒有第4版?其實,在過去確實曾計劃發布提出巨量新特性的第4版,但最終卻因想法太過激進而慘遭廢除(這一版標準中曾經有一個極其復雜的支持泛型和類型推斷的內建靜態類型系統)。
ES4飽受爭議,當標準委員會最終停止開發ES4時,其成員同意發布一個相對謙和的ES5版本,隨后繼續制定一些更具實質性的新特性。這一明確的協商協議最終命名為“Harmony”,因此,ES5規范中包含這樣兩句話:
ECMAScript是一門充滿活力的語言,并在不斷進化中。
未來版本的規范中將持續進行重要的技術改進。
這一聲明許下了一個未來的承諾。
兌現承諾
2009年發布的改進版本ES5,引入了 Object.create() 、 Object.defineProperty() 、 getters 和 setters 、 嚴格模式 以及 JSON 對象。我已經使用過所有這些新特性,并且我非常喜歡ES5做出的改進。但事實上,這些改進并沒有深入影響我編寫JS代碼的方式,對我來說最大的革新大概就是新的 數組 方法: .map() 、 . filter() 這些。
但是,ES6并非如此!經過持續幾年的磨礪,它已成為JS有史以來最實質的升級,新的語言和庫特性就像無主之寶,等待有識之士的發掘。新的語言特 性涵蓋范圍甚廣,小到受歡迎的語法糖,例如箭頭函數(arrow functions)和簡單的字符串插值(string interpolation),大到燒腦的新概念,例如代理(proxies)和生成器(generators)。
ES6將徹底改變你編寫JS代碼的方式!
這一系列旨在向你展示如何仔細審閱ES6提供給JavaScript程序員的這些新特性。
我們將從一個經典的“遺漏特性”說起,十年來我一直期待在JavaScript中看到的它。所以從現在起就加入我們吧,一起領略一下ES6迭代器(iterators)和新的for-of循環!