韩小韩的baklib

Javascript迭代器

2021-08-11 18

我们都知道可以用 for...of... 来循环可迭代对象,例如循环

Array
Arguments
Map
Set
String
TypedArray
NodeList

迭代器的工作原理

  • 创建一个指针,指向当前数据结构的起始位置
  • 第一次调用对象next方法,指针自动指向数据结构的第一个成员
  • 接下来不断调用next,指针一直往后移动,直到指向最后一个成员
  • 每调用一次next方法返回一个包含value和done属性的对象

为什么Object不可以被迭代

let arr = [1, 2, 3]
let obj = {
    a: 1,
    b: 2,
    c: 3
}
for(let val of arr) {
    console.log(val)
}
for(let val of obj) {
    console.log(val)
}

打印输出即会报:obj is not iterable(obj不是一个可迭代对象、obj不可被迭代)