編者按:ECMAScript 6離咱們愈來愈近了,做爲它最重要的方言,Javascript也即將迎來語法上的重大變革,InfoQ特開設「深刻淺出ES6」專欄,來看一下ES6將給咱們帶來哪些新內容。本專欄文章來自Mozilla Web開發者博客,由做者受權翻譯併發布。node
歡迎來到ES6深刻淺出!JavaScript的新版本離咱們愈來愈近,咱們將經過每週一節的系列課程一塊兒探索ECMAScript 6新世界。ES6中包含了許多新的語言特性,它們將使JS變得更增強大,更富表現力。在接下來的幾周內,咱們將一一深刻了解它們。但在咱們開始詳細學習以前,我認爲十分有必要花幾分鐘講解一下ES6究竟是什麼,以及你能夠從中學到什麼!程序員
編程語言JavaScript是ECMAScript的實現和擴展,由ECMA(一個相似W3C的標準組織)參與進行標準化。ECMAScript定義了:es6
ECMAScript標準不定義HTML或CSS的相關功能,也不定義相似DOM(文檔對象模型)的Web API,這些都在獨立的標準中進行定義。ECMAScript涵蓋了各類環境中JS的使用場景,不管是瀏覽器環境仍是相似node.js的非瀏覽器環境。編程
上週,ECMAScript語言規範第6版最終草案提請Ecma大會審查,這意味着什麼呢?數組
這意味着在今年夏天,咱們將迎來最新的JavaScript核心語言標準。瀏覽器
這無疑是一則重磅新聞。早在2009年,上一版ES5剛剛發佈,自那時起,ES標準委員會一直在緊鑼密鼓地籌備新的JS語言標準——ES6。併發
ES6是一次重大的版本升級,與此同時,因爲ES6秉承着最大化兼容已有代碼的設計理念,你過去編寫的JS代碼將繼續正常運行。事實上,許多瀏覽器已經支持部分ES6特性,並將繼續努力實現其他特性。這意味着,在一些已經實現部分特性的瀏覽器中,你的JS代碼已經能夠正常運行。若是到目前爲止你還沒有遇到任何兼容性問題,那麼你頗有可能將不會遇到這些問題,瀏覽器正飛速實現各類新特性。編程語言
ECMAScript標準的歷史版本分別是一、二、三、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循環!