Skip to content

迭代器

在 JavaScript 中,迭代器(Iterator)是一种对象,它提供了一种标准方式来遍历某个集合中的所有元素。迭代器对象必须实现一个名为 next() 的方法,用于返回包含两个属性的对象:value 表示当前元素的值,done 表示是否已经到达集合的末尾。

js
let colors = ['red', 'green', 'blue']
let iterator = colors[Symbol.iterator]()

console.log(iterator.next()) // 输出 { value: "red", done: false }
console.log(iterator.next()) // 输出 { value: "green", done: false }
console.log(iterator.next()) // 输出 { value: "blue", done: false }
console.log(iterator.next()) // 输出 { value: undefined, done: true }

for...of

可以用于遍历可迭代对象中的每一个元素,例如数组、字符串、Set、Map、生成器函数等。在循环开始时,会获取 iterable (Symbol.iterator 属性执行结果) 对象的迭代器,并依次取出对象中的每个元素。

js
let colors = ['red', 'green', 'blue']

for (let color of colors) {
  console.log(color)
}
// 输出
// red
// green
// blue

for...of 和 for...in

  • for...of 常用于遍历数组,也可以遍历包含迭代器属性 [Symbol.iterator] 的对象;
  • for...in 常用于遍历对象可枚举属性,包括继承属性;