Discuss / JavaScript / 为什么我的next返回的一直是一样的值

为什么我的next返回的一直是一样的值

Topic source

function* fib(max) {

    var

        t,

        a = 0,

        b = 1,

        n = 0;

    while (n < max) {

        yield a;

        [a, b] = [b, a + b];

        n ++;

    }

    return;

}

fib(5).next()

{value: 0, done: false}

fib(5).next()

{value: 0, done: false}

fib(5).next()

{value: 0, done: false}

fib(5).next();

{value: 0, done: false}

fib(5).next();

{value: 0, done: false}

fib(5).next();

{value: 0, done: false}

用一个全局变量接收,才会记录次数。这样直接调用的话每次的结果都是第一次的返回值,因为第一个值是0嘛

fib(5)会返回一个新的generator对象,所以fib(5).next()其实是在新对象上next()方法

因为每次都是一个新的对象


  • 1

Reply