生成器函数里的return和yield有啥区别?
我在学生成器函数,看到既能用yield也能用return,但不太明白它们到底有啥不同。比如下面这段代码:
function* gen() {
yield 1;
return 2;
yield 3;
}
const g = gen();
console.log(g.next()); // { value: 1, done: false }
console.log(g.next()); // { value: 2, done: true }
为啥第二个next()就直接结束(done变成true)了?而且后面的yield 3根本没执行。是不是return会立刻终止生成器?那它和普通函数的return行为一样吗?
试试这个例子更清楚:
所以记住:yield是暂停,return是彻底结束。困死了...