書籍地址:http://es6.ruanyifeng.com/javascript
1.let和const命令java
新增let命令,用來聲明變量,用法和var相似。var聲明在一個函數聲明做用域裏有效,let聲明在一個區塊做用域裏有效。 var聲明有「變量提高」的現象,let聲明不能在變量聲明以前使用會報語法錯誤。es6
let語法實際爲javascript新增了區塊做用域的概念。現有的區塊做用域是經過自執行的匿名函數來模擬的。正則表達式
const也是用來聲明變量,但聲明的是常量,一旦聲明,學量的值將不能改變。數組
2.數組和對象的解構賦值函數
用途不少,具體見文檔編碼
3.字符串的擴展url
codePointAt 做用和charCodeAt相似,對於Unicode編碼大於0xFFFF的字符(即須要4個字節存儲的字符)能夠正確的解析。spa
正則表達式新添加u修飾符,用來正確處理編碼大於0xFFFF的字符。.net
正則表達式新添加y修飾符,與g修飾符相似,只不過匹配必須從第一個字符開始,做用和^和g同時使用。
字符串實例新增contains(),starWith(),endWith(),repeat()。
模板字符串中能夠嵌入變量,拼接字符串比較好用
4.數值的擴展
提供了二進制和八進制數值的寫法,分別以0b和0o開發
parseInt和parseFloat由全局方法移值到Number對象上。
Math提供了許多數學方法
5.數組的擴展
提供簡潔寫法,容許直接經過現有數組生成新數組,這被稱爲數組推導
提供三個新的方法——entries(),keys()和values()——用於遍歷數組。
Array.observe(),Array.unobserve() 這兩個方法用於監聽(取消監聽)數組的變化,指定回調函數。
6.對象的擴展
Object.assign方法用來將源對象(source)的全部可枚舉屬性,複製到目標對象(target)。它至少須要兩個對象做爲參數,第一個參數是目標對象,後面的參數都是源對象。只要有一個參數不是對象,就會拋出TypeError錯誤。
容許定義對象時,用表達式做爲對象的屬性名。在寫法上,要把表達式放在方括號內。
原生提供Proxy構造函數,用來生成proxy實例對象。所謂Proxy,能夠理解成在目標對象以前,架設一層「攔截」,外界對該對象的訪問,都必須先經過這層攔截,能夠被過濾和改寫。
Object.observe(),Object.unobserve().Object.observe方法用來監聽對象的變化。一旦監聽對象發生變化,就會觸發回調函數。Object.unobserve方法用來取消監聽。
7.函數的擴展
容許使用「箭頭」(=>)定義函數。
引入rest參數(...變量名),用於獲取函數的多餘參數,這樣就不須要使用arguments對象了。rest參數搭配的變量是一個數組,該變量將多餘的參數放入數組中。
擴展運算符(spread)是三個點(...)。將一個數組轉爲用逗號分隔的參數序列。該運算符主要用於函數調用。
8.Promise對象
原生提供了Promise對象。
9.class和Moudle
引入了類的概念,使用關鍵字class能夠定義一個類;class之間經過extends實現繼承
實現了模塊功能,模塊功能有兩個關鍵字:export和import。export用於用戶自定義模塊,規定對外接口;import用於輸入其餘模塊提供的功能,同時創造命名空間(namespace),防止函數名衝突。