我正在学习 YDKJS 中的生成器,它解释了迭代器的工作原理,例如:
var something = (function(){
var nextVal;
return {
// needed for `for..of` loops
[Symbol.iterator]: function(){ return this; },
// standard iterator interface method
next: function(){
if (nextVal === undefined) {
nextVal = 1;
}
else {
nextVal = (3 * nextVal) + 6;
}
return { done:false, value:nextVal };
}
};
})();
something.next().value; // 1
something.next().value; // 9
something.next().value; // 33
something.next().value; // 105
我理解这很好。然后它演示了如何使用for..of
循环,以便iterator
可以使用本机循环语法自动使用标准,例如:
for (var v of something) {
console.log( v );
// don't let the loop run forever!
if (v > 500) {
break;
}
}
// 1 9 33 105 321 969
我理解它的要点,但是只有value
回来而不是整个对象,包括done: false
?
谢谢!