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();
用一个全局变量接收,才会记录次数。这样直接调用的话每次的结果都是第一次的返回值,因为第一个值是0嘛
fib(5)会返回一个新的generator对象,所以fib(5).next()其实是在新对象上next()方法
因为每次都是一个新的对象
Sign in to make a reply
奶黄包丸子
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}