迭代
迭代对象
可被迭代的对象 - 实现了[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函数调用器