ES6 for of迴圈和迭代器使用細節

2022-08-28 09:39:12 字數 1349 閱讀 9851

se5之前我們可以用for迴圈來遍歷陣列,se5為陣列引進了新的方法foreach(),方便了很多,但是該方法不能夠通過break或者return返回外層函式。

arr.foreach(function(value))
es6定義了乙個更好的遍歷陣列的方法for-of迴圈,該方法的強大在於可以遍歷任何具有迭代器的物件,例如陣列、nodelist物件、map和set物件。還可用於遍歷字串,將其視為一系列的unicode字元來遍歷,即中文也算乙個字元。

遍歷陣列

function outputarr(var arr)

}

遍歷nodelist

(function()

})();

遍歷set

var set = new set(array);

for( var arr of set)

遍歷map,需要用到se6解構的方法。

var map = new map();

map.set("aa",1);

map.set("bb",2);

for(var [name, value] of map)

遍歷字串

var str = "abc哈哈";

for(var tmp of str)

// a

// b

// c

// 哈

// 哈

深入理解迭代器物件

for-of迴圈首先呼叫集合的[symbol.iterator]()方法,該方法返回乙個新的迭代器物件,如自身,但該物件要具有乙個.next()方法。for每迴圈一次就呼叫這個.next()方法。該方法返回乙個物件,done屬性用來判斷迴圈是否結束,value屬性就是迭代的值。最簡單的例子如下。

function ite(),

next:function():;

} }}(function()

}())

注意:迭代器物件一定要有有symbol.iterator和next這兩個方法,不然會判斷這不是乙個迭代器,symbol是se6的新型別,該型別的值是與任何值都不同,用來避免重名的問題。火狐執行結果0,1,2。

迭代器還有可選的.return()和.throw(exc)方法。如果for-of迴圈過早退出會呼叫.return()方法,如用異常、return、break觸發.return()方法。所以.return()方法可以用來處理一些釋放記憶體或資源的工作,而對於.throw()方法,for-of迴圈永遠不會呼叫它。

這兩個方法通常用來處理生成器,在講生成器的時候會由具體說明。

迭代器和 for of 迴圈

1.for迴圈 支援break continue return等 for var index 0 index myarray.length index 2 foreach 不支援break continue return false相當於continue myarray.foreach functi...

ES6新特性 Iterator和for of迴圈

迭代過程 獲取迭代器 指向當前資料結構的起始位置 通過物件的某些方法返回迭代器物件。如 多次呼叫iterator.next 向下迭代指向下乙個位置。當done為true時遍歷結束。如要重新迭代,需要重新獲取迭代器 從第1步重新開始 string array set map dom元素 開發中。obj...

ES6入門之Iterator和for of

遍歷器 iterator 就是這樣一種機制。它是一種介面,為各種不同的資料結構提供統一的訪問機制。任何資料結構只要部署iterator介面,就可以完成遍歷操作 即依次處理該資料結構的所有成員 作用 iterator的遍歷過程 1 建立乙個指標物件,指向當前資料結構的起始位置。也就是說,遍歷器物件本質...