ECMAScript 6.0於2015 年 6 月正式發佈了,成爲JavaScript 語言的下一代標準。ES6增長的語言特性解決了哪些問題,會給開發者哪些便利,是本文主要探討的問題。es6
ES5對字符的處理有限,沒法很好地處理碼點大於0xFFFF
的字符。正則表達式
ES6在string
原生方法中支持碼點大於0xFFFF
的字符,取得碼點或是遍歷,均可以直接操做;而且對字符不一樣的表示方法作了統一化。編程
在正則表達式裏新增\u
\s
修飾符,使得正則對特殊字符的匹配不須要開發者額外處理。promise
ES6 前異步編程的解決方式:數據結構
ES6提供了原生的Promise對象,統一了用法和標準。異步
缺點async
Generator 函數形式上與普通函數無異,特徵有二模塊化
function
關鍵字與函數名之間有一個星號;yield
表達式,來代表函數執行的狀態。意義:異步編程
能夠在 Generator 函數運行的不一樣階段,調整函數行爲。包括從外部向內部注入不一樣的值,控制返回和拋出錯誤。函數
(ES2017 標準引入)
從理解上來講, async
函數至關於把Generator 函數的星號(*
)替換成async
,將yield
替換成await
。
但相比較generate而言,內置執行器,有更易於理解的語義。
async
函數返回一個 Promise 對象,可使用then
方法添加回調函數。async
函數內部return
語句返回的值,會成爲then
方法回調函數的參數。
當函數執行的時候,一旦遇到await
就會先返回,等到異步操做完成,再接着執行函數體內後面的語句。
好比,ES6 將全局方法parseInt()和parseFloat(),移植到Number對象上面。 逐步減小全局性方法,使得語言逐步模塊化。
增長let
, const
的變量聲明方式,不存在變量提高,不容許重複聲明,使語言使用更加嚴謹。
使得變量的做用域更利於管理,也使得當即執行函數表達式再也不必要了。
讓this綁定定義時所在的做用域,而不是指向運行時所在的做用域,也使得表達更加簡潔。
ES6推出了模版字符串,使得多行字符串及夾雜變量的字符串寫起來更加方便。
對象增長屬性名錶達式與簡潔表示法。
增長遍歷器機制,爲各類不一樣的數據結構提供統一的訪問機制。
增長解構的語法,取值更直觀方便。
增長class關鍵字來定義類,過去,生成實例對象的傳統方法是經過構造函數。再也不和傳統面嚮對象語言有大的差別。且支持extends。
引入Proxy
對象,能夠攔截某些操做並實現自定義行爲。
引入 Rflect
對象,能夠獲取默認操做,能夠將默認操做從處理程序轉發到目標。
symbol 是一種基本數據類型 ,提供一種機制,保證每一個屬性的名字都是獨一無二,從根本上防止屬性名的衝突。
ES6提供了更多的原生方法,避免了開發者重複造輪子。如字符串的查找。
Number.EPSILON
等數值方法,使得對數值操做易於在精度方面進行控制。對尾遞歸進行優化,賦予javscript運行復雜度更高的方法的能力。
參考