1,iterator 迭代器是es6提出的一種新的遍歷機制,目的是讓各種資料結構可方便地被訪問。可迭代物件由symbol.iterator實現,用symbol.iterator作為物件的屬性,鍵symbol.iterator的值是個函式,函式的執行返回乙個陣列的迭代器,可見 迭代器物件與symbol.iterator之間的關係。symbol.iterator標識著迭代器。
2, 遍歷迭代器, 可用 for...of...,for...of...是es6用來遍歷迭代器的一種工具。for...of...不同於for...in...,for...in...用於遍歷物件的屬性,for...of...用於遍歷物件的值。如:
var testarr = [4, 5, 7, 3]; //可迭代物件,es6已經為組數實現了可迭代
for(var key in testarr)
//控制台輸出:
//0//1
//2//3
for(var val of testarr)
//控制台輸出:
//4//5
//7//3
var testarr = [4, 5, 7, 3];
var iterator = testarr[symbol.iterator]();
//iterator是個陣列的迭代器物件:array iterator {}
//...
iterator.next();
//這個時候遍歷完成,返回物件的done屬性為true
////有一點可以注意的是:當iterator沒有遍歷完成之前,向陣列新增的元素,可由iterator.next訪問,
//但一旦iterator完成了遍歷後,新增的元素無法被iterator訪問,但可生成乙個新的iterator從頭遍歷;
iterator = testarr[symbol.iterator]();
iterator.next();
//5 陣列長度
...iterator.next();
iterator.next(); //iterator已經遍歷完成了;
////還有一點需要注意的是: 若是元素新增在陣列的前面即arr.shift,則會影響當前的iterator指標的指向;
//貌似指標往後移動了;可能跟記憶體儲存有關,為什麼會這樣?將是個新的知識點;
4,目前實現迭代器的物件有 array、map、set、string等但不包括 object物件。
5,其他文件
generator
symbol
es6內容總結 三 迭代器
迭代器 生成器1.迭代器 迭代器 iterator 是一種介面,為各種不同的資料結構提供統一的訪問機制,任何資料結構只要部署iterator 介面,就可以完成遍歷操作。原生具備 iterator 介面的資料 可用for of 遍歷 array arguments setmap string type...
ES6的迭代器和生成器
在es6之前,遍歷陣列都需要使用for迴圈,通過變數來跟蹤陣列的索引。如果多個迴圈巢狀就需要追蹤多個變數,複雜度會大大增加,也容易產生錯用迴圈變數的bug。es6 引入了乙個全新的迭代器的概念,它提供一種方法能夠順序訪問乙個聚合物件中的各個元素,而不需要暴露該物件的內部表現。es6 對迭代器物件的定...
es6 在迭代器中獲取非同步的值
由於迭代器在主線程中執行,所以我們普通 所以無法王成兩個yield的同步操作,下面我們完成同步操作,就是把yield2的操作在子執行緒王成 例子 function main2 fn const list main2 function console.log finish.dd return dd 注...