0

我正在学习 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?

谢谢!

4

0 回答 0