ES6(ECMAScript 6)是即將到來的新版本JavaScript語言的標準,代號harmony(和諧之意,顯然沒有跟上我國的步伐,咱們已經進入中國夢版本了)。上一次標準的制訂仍是2009年出臺的ES5。目前ES6的標準化工做正在進行中,預計會在14年12月份放出正式敲定的版本。但大部分標準已經就緒,且各瀏覽器對ES6的支持也正在實現中javascript
一,箭頭表達式(lambda表達式)java
咱們知道在JS中回調是常常的事,而通常回調又以匿名函數的形式出現,每次都須要寫一個function,甚是繁瑣。當引入箭頭操做符後能夠方便地寫回調了。請看下面的例子。es6
var array = [1, 2, 3];
//傳統寫法
array.forEach(function(v, i, a) {
console.log(v);
});
//ES6
array.forEach((v,i) => {console.log(v);console.log(i)});
二.類的支持web
ES6中添加了對類的支持,引入了class關鍵字(其實class在JavaScript中一直是保留字,目的就是考慮到可能在之後的新版本中會用到,如今終於派上用場了)。JS自己就是面向對象的,ES6中提供的類 實際上只是JS原型模式的包裝。如今提供原生的class支持後,對象的建立,繼承更加直觀了,而且父類方法的調用,實例化,靜態方法和構造函數等概念都更加形象化。promise
class Animal { //ES6中新型構造器 constructor(name) { this.name = name; } //實例方法 sayName() { console.log('My name is '+this.name); } } //類的繼承 class Programmer extends Animal { //extends 繼承於 constructor(name) { //直接調用父類構造器進行初始化 super(name); } program() { console.log("I'm coding..."); } } //測試咱們的類 var animal=new Animal('dummy'), wayou=new Programmer('wayou'); animal.sayName();//輸出 ‘My name is dummy’ wayou.sayName();//輸出 ‘My name is wayou’ wayou.program();//輸出 ‘I'm coding...’
三.默認參數值瀏覽器
如今能夠在定義函數的時候指定參數的默認值了,而不用像之前那樣經過邏輯或操做符來達到目的了。異步
function sayHello(name){
//傳統的指定默認參數的方式
var name=name||'dude';
console.log('Hello '+name);
}
//運用ES6的默認參數
function sayHello2(name='dude'){
console.log(`Hello ${name}`);
}
sayHello();//輸出:Hello dude
sayHello('Wayou');//輸出:Hello Wayou
sayHello2();//輸出:Hello dude
sayHello2('Wayou');//輸出:Hello Wayou
四.let和const關鍵字函數
能夠把let當作var,只是它定義的變量被限定在了特定範圍內才能使用,而離開這個範圍則無效。const則很直觀,用來定義常量,即沒法被更改值的變量。測試
for (let i=0;i<2;i++){
console.log(i);//輸出: 0,1
}
再如:
function example(){
let a=1; //此a的做用域僅限於 example方法
console.log(a)
}
五.promisesthis
Promises是處理異步操做的一種模式,以前在不少三方庫中有實現,好比jQuery的deffered 對象。當你發起一個異步請求,並綁定了.when(), .done()等事件處理程序時,其實就是在應用promise模 式。
//建立promise var promise = new Promise(function(resolve, reject) { // 進行一些異步或耗時操做 if ( /*若是成功 */ ) { resolve("Stuff worked!"); } else { reject(Error("It broke")); } }); //綁定處理程序 promise.then(function(result) { // .then方法中有2個回掉。第一個爲成功回掉,第二個爲失敗回掉。若是promise執行的是resolve則執行成功回掉,若是是reject,則執行失敗回掉 //promise成功的話會執行這裏 console.log(result); // "Stuff worked!" }, function(err) { //promise失敗會執行這裏 console.log(err); // Error: "It broke" });
以上5個是最新最經常使用的es6新特性