// ================== 迭代器 ======================
function makeRangeIterator() {
let iterator = {
value: "1",
done: false,
next: function () { return iterator2 }
}
const iterator2 = {
value: "2",
done: false,
next: function () { return iterator3 }
}
const iterator3 = {
value: "3",
done: false,
next: function () { return iteratorDone }
}
const iteratorDone = {
done: true,
next: function () { return iteratorDone }
}
return {
next: function () {
const result = iterator
iterator = iterator.next()
return result
}
}
}
let it = makeRangeIterator();
console.log(it.next()) // {value: 0, done: false}
console.log(it.next()) // {value: 1, done: false}
console.log(it.next()) // {value: 2, done: false}
console.log(it.next()) // {"done":true}
console.log('================================')
// ================== 生成器 ======================
function* generator(end = Infinity) {
yield '1';
yield '2';
yield '3';
}
var a = generator(3)
console.log(a.next()) // {value: 0, done: false}
console.log(a.next()) // {value: 1, done: false}
console.log(a.next()) // {value: 2, done: false}
console.log(a.next()) // {"done":true}
console