迭代器与Generator函数

迭代

迭代对象

可被迭代的对象 - 实现了[Symbol.iterator]方法

迭代语句

for...in:以原始插入的顺序 迭代对象的可枚举属性
for...of:拥有迭代器的可迭代对象

迭代器实现原理

[Symbol.iterator] 

obj[Symbol.iterator] = function(){
let values = Object.values(obj);
let index = 0;
return {
next(){
if(index < values.length){
return {
value: values[index++], //循环的值
done: false //循环是否完成
}else{
return {
done: true;
}
}
}
}
}

Generator 函数

一是,function命令与函数名之间有一个星号
二是,函数体内部使用yield语句,定义遍历器的每个成员

Generator 语法

function* fn() {
yield 1;
yield 2;
yield 3;
}

let g = gen();

自执行Generator函数

co函数:自动化generator函数调用器
posted @ 2021-11-09 18:54  忘川酒  阅读(21)  评论(0编辑  收藏  举报