es6再回顧 info深刻理解es6

迭代器和for-of循環

es5使用內建的forEach方法來遍歷數組javascript

arr.foreach(function(value){html

  console.log(value);java

});es6

這段代碼看起來簡潔,但這種方法有一個小缺陷:你不能使用break語句中斷循環,也不能使用return語句返回到外層函數。數組

 

es6  for-of 能夠正確響應break、continue和return語句數據結構

for-of能夠用來幹什麼for (var value of myArray) { console.log(value); }

for-in循環用來遍歷對象屬性。函數

for-of循環用來遍歷數據—例如數組中的值。ui

for-of循環也支持字符串遍歷,它將字符串視爲一系列的Unicode字符來進行遍歷:es5

它一樣支持Map和Set對象遍歷。spa

for (var [key, value] of phoneBookMap) { console.log(key + "'s phone number is: " + value); }

var map=new Map([['a',1],['b',2]]);

for (var [key, value] of map) {
console.log(key + "'s phone number is: " + value);
}
VM1833:2 a's phone number is: 1
VM1833:2 b's phone number is: 2

Map:Map結構提供了「值—值」的對應,是一種更完善的Hash結構實現。若是你須要「鍵值對」的數據結構,Map比Object更合適。它相似於對象,也是鍵值對的集合,可是「鍵」的範圍不限於字符串,各類類型的值(包括對象)均可以看成鍵。

//1.
var map = new Map();
map.set('one', 1);
map.set('two', 2);
map.set('three', 3);
//...

//2. var map = new Map([['one',1], ['two', 2], ['three', 3]]);


ES6生成器(Generators)



咱們稱之爲生成器函數,它與普通函數有不少共同點,可是兩者有以下區別:
  • 普通函數使用function聲明,而生成器函數使用function*聲明。

模板字符串

反撇號(`)基礎知識

ES6引入了一種新型的字符串字面量語法,咱們稱之爲模板字符串(template strings)。除了使用反撇號字符 ` 代替普通字符串的引號 ' 或 " 外,它們看起來與普通字符串並沒有二致。在最簡單的狀況下,它們與普通字符串的表現一致:




context.fillText(`Ceci n'est pas une chaîne.`, x, y);
 

五.不定參數和默認參數




es6數據類型
  • Undefined 未定義
  • Null 空值
  • Boolean 布爾類型
  • Number 數字類型
  • String 字符串類型
  • Object 對象類型

ES6引入了一種新的原始數據類型Symbol,表示獨一無二的值

 





var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10

上面代碼中,變量i是var聲明的,在全局範圍內都有效。因此每一次循環,新的i值都會覆蓋舊值,致使最後輸出的是最後一輪的i的值。而使用let則不會出現這個問題。

 
var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 6




箭袋中的新羽

ES6中引入了一種編寫函數的新語法

// ES5 var selected = allJobs.filter(function (job) { return job.isSelected(); }); // ES6 var selected = allJobs.filter(job => job.isSelected());

當你只須要一個只有一個參數的簡單函數時,可使用新標準中的箭頭函數,它的語法很是簡單:標識符=>表達式。你無需輸入functionreturn,一些小括號、大括號以及分號也能夠省略。

 

若是要寫一個接受多重參數(也可能沒有參數,或者是不定參數、默認參數參數解構)的函數,你須要用小括號包裹參數list。

// ES5 var total = values.reduce(function (a, b) { return a + b; }, 0); // ES6 var total = values.reduce((a, b) => a + b, 0);


 
關於Map:http://www.cnblogs.com/sker/p/5520392.htmlhttp://www.cnblogs.com/dagaoxiaozheng/p/6605981.html
相關文章
相關標籤/搜索