JavaScript中,迭代器是一个函数对象,它存在于可迭代对象的原型链中,可以通过可迭代对象的生成方法Symbol.iterator来访问。然后使用next()方法实现迭代访问。
next()方法返回2个属性值:value表示当前迭代的值,done是一个布尔值表示迭代是否结束
JavaScript中的Iterator迭代器初步理解-QUI-Notes

JavaScript内置可迭代对象

  • Array
  • string
  • Set
  • Map
  • 类数组对象

let aa = new String("123123")
console.log(aa)
let it = aa[Symbol.iterator]()
console.log(it.next()); //{value: '1', done: false}

迭代协议

  • a.可迭代协议-一个对象本身或原型链上存在一个可以通过Symbol.iterator调用的iterator属性,那么这个对象就是可迭代对象
  • b.迭代器协议-定义了迭代器的迭代方式,调用next()方法,返回对应结构


生成器

生成器允许我们创建一个可以自动维护自己的状态的迭代函数,它是可迭代对象也是迭代器。

  • a.生成器通过 function* 创建,和普通函数相比它多了一个 * ,调用生成器函数时它不会执行任何代码,仅会返回一个叫 Generator 的迭代器.
  • b.生成器函数中可以书写yield 表达式用来定义函数的内部状态, Generator会指向这个状态。

//生成器函数
function* test(){
	console.log(12312)
	yield 'a'
	yield 'b'
}
test(); //直接运行迭代器函数不会执行

let its = test();//通过next()调用迭代器
console.log(its.next());//12312  {value: 'a', done: false}
console.log(its.next()); //{value: 'b', done: false}
console.log(its.next()); //{value: undefined, done: true}

这样就又学了一个没用的知识点,学了也不一定用的到,哈哈哈!