英文:Jason Orendorff
譯者:bubkoo的部落格(@問崖的崖)
網址:http://bubkoo.com/2015/06/14/es6-in-depth-an-introduction/
點選“閱讀原文”可檢視本文網頁版
歡迎來到深入解析 ES6 系列,本系列將探討 JavaScript 即將面世的新版本 — ECMAScript 6。ES6 包含許多新特性,這使得 JavaScript 語言更強大和更具表現力,接下來的每週我們將逐一揭開 ES6 的神秘面紗。在開始之前,我們值得花幾分鐘時間來談談什麼是 ES6 或者你期待它是什麼樣的。
什麼是 ECMAScript
JavaScript 語言的標準是由 ECMA(類似 W3C 的標準化組織)制定,並命名為 ECMAScript,除其他事項外,ECMAScript 還定義了:
- 語法規則 — 解析規則、關鍵字、宣告、運運算元等
- 變數型別 — 布林、數字、字串、物件等
- 原型和繼承機制
- 包含內建物件和方法的標準庫 — JSON、Math、陣列方法、遍歷物件的方法等
ECMAScript 並沒有定義處理 HTML 和 CSS 的相關標準,也就是說並沒有定義這些 Web API,如 DOM(檔案物件模型),這些都被定義在單獨的標準中。ECMAScript 規範不僅存在於瀏覽器端,還包括非瀏覽器端,如 NodeJS。
新規範
就在上週,第 6 版 ECMAScript 規範的最終草案提交給了 ECMA 審查,這意味著什麼呢?
這意味著,這個新規範將在今年夏天與大家正式見面。
這將是歷史性的一刻,新的 JS 規範不是每天都會降臨,上個版本 — ES5 出現於 2009 年,從那時起,ES 標準委員會就開始著手製定 ES6 規範。
ES6 是該語言的重大升級,與此同時,你的 JS 程式碼也將繼續正常執行,ES6 將最大相容現有程式碼。事實上,許多瀏覽器已經實現了 ES6 的某些新特性,這意味著,你的 JS 程式碼已經在實現了某些 ES6 新特性的瀏覽器中運行了。如果現在你的程式碼沒有出現任何相容性問題,那麼以後也不會。
關於版本號
以前的 ECMAScript 版本號分別是 1、2、3 和 5。
那麼,第 4 版到哪裡去了呢?實際上,第 4 版也在計劃之列,並完成了大量工作,但由於想法過於大膽(比如,它制定了一個非常複雜的基於泛型和型別推斷的靜態型別系統),而最終不得不被廢棄掉。
其實 ES4 是有爭議的,當標準委員會停止制定 ES4 規範時,委員會成員同意釋出一個相對溫和的 ES5,然後繼續制定一些更實質性的新特性,這就是為什麼在 ES5 的規範中包含下麵這句話:
ECMAScript 是一個充滿活力的語言,語言本身的進化並不完整,在未來的版本中將進行一些重大的技術改進。
這句話可以被視為一種承諾。
兌現承諾
在 2009 年釋出的 ES5 中,引入了Object.create()、Object.defineProperty()、getter、setter、嚴格樣式和 JSON 物件。我用過所有這些特性,我也很欣賞 ES5 為這門語言所做的改進,但這並沒有對我的編碼方式產生巨大影響。對我來說,最重要的創新莫過於那些陣列的新方法,如.map()和.filter()等。
然而,ES6 是不同的,這是多年“和諧”工作的結晶,也是 JS 歷史上從來沒有過的實質性的升級。這些新特性包括從簡單的箭頭函式、字串插值到複雜的代理、Generator 函式等。
ES6 改變了我們編寫 JS 程式碼的方式。
本系列將逐步展示 ES6 的這些新特性,並介紹如何使用這些新特性。
我們將從一個典型的人們期待了數十年的“缺失功能”開始,所以,下週我們一起來看看 ES6 的迭代器(Iterator)和新的 for-of 迴圈。