Discuss / JavaScript / 不知道为何,上文中的for (x of fib(5)) 只能输出:0 1 1 2,无3..

不知道为何,上文中的for (x of fib(5)) 只能输出:0 1 1 2,无3..

Topic source

_MagicalLu

#1 Created at ... [Delete] [Delete and Lock User]

同问,而且要是把最后的return a改为yield a的话,for of的结果又是0 1 1 2 3了

function* fib(max) {
    var
        t,
        a = 0,
        b = 1,
        n = 1;
    while (n < max) {
        yield a;
        t = a + b;
        a = b;
        b = t;
        n ++;
    }
    return a;
}

这里n = 1,也就是说循环从1开始然后再到5,总共循环4遍,所以只显示4个啊. 让n = 0或者使用do while语句就是输出5个了.


  • 1

Reply