介紹for of迴圈

2021-08-15 12:41:55 字數 1373 閱讀 5256

for-of是在es6乙個新的迴圈,取代了for-in和foreach()迴圈。

使用它迴圈可迭代的物件,

array,

map,

set,

string,

typedarray,

函式的 arguments 物件

nodelist 物件

const iterable = ['a', 'b'];

for (const x of iterable)

// a b

break或continue在for-of迴圈內也可以使用:

for (const x of ['a', '', 'b'])

// a

在迴圈訪問陣列時,訪問這個元素及其索引(of之前的方括號表示我們正在使用解構):

const arr = ['a', 'b'];

for (const [index, element] of arr.entries()) . $`);

}// 0 a 1 b

該of子句的運算元必須是可迭代的。這意味著如果您想要遍歷普通物件則需要輔助函式。如果值是類似於陣列的,可以通過array.from()以下方式將其轉換為陣列:

const arraylike = ;

for (const x of arraylike)

for (const x of array.from(arraylike))

如果用const宣告迭代變數,則將為每次迭代建立新的引用(儲存空間)。這可以在下面的**片段中看到,我們elem通過箭頭函式儲存當前的引用。之後,您可以看到箭頭功能不共享相同的引用elem,它們都有不同的引用。

const arr = ;

for (const elem of [0, 1, 2])

console.log(arr.map(f => f())); // [0, 1, 2]

如果你var宣告了迭代變數,那麼看看情況是不同的。現在所有的箭頭函式都指向相同的引用elem。

const arr = ;

for (var elem of [0, 1, 2])

console.log(arr.map(f => f())); // [2, 2, 2]

我們只看到for-of宣告乙個迭代的變數,迭代變數也可以是現有的變數,物件屬性和陣列元素。

你可以迭代乙個現有的變數:

let x;

for (x of ['a', 'b'])

你也可以迭代乙個物件屬性:

const obj = {};

for (obj.prop of ['a', 'b'])

你可以迭代乙個陣列元素:

const arr = ;

for (arr[0] of ['a', 'b'])

遍歷器 for of 迴圈

for.of 作為遍歷所有資料結構的統一的方法。但不能直接遍歷物件,因為沒有 symbol.iterator 遍歷器介面 所以可用 object.keys object.values 去轉一道,轉成陣列就可以用了。或者給obj symbol.iterator function ary.key 拿到陣...

遍歷器與 for of 迴圈

iterator 的作用 iterator 遍歷器 迭代器 for 1,2 foreach new set foreach iterator 也是用來遍歷的 尋找 iterator const it 1 2 symbol.iterator 使用 iterator const it 1 2 symbo...

迭代器和 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...