【发布时间】:2021-07-11 20:52:51
【问题描述】:
为什么直接在生成器上调用 next() 时得到不同的结果,而不是在分配了相同生成器值的变量上得到不同的结果?
所有代码/输出如下。
下面是生成器,加上变量声明/赋值:
function* gen() {
yield 1;
yield 2;
yield 3;
};
let genVar = gen();
第一个代码sn-p:
let first = genVar.next();
console.log(first);
second = genVar.next();
console.log(second);
第一个代码sn-p的输出:
{ value: 1, done: false }
{ value: 2, done: false }
第二个代码sn-p:
let one = gen().next();
console.log(one);
two = gen().next();
console.log(two);
第二个代码sn-p的输出:
{ value: 1, done: false }
{ value: 1, done: false }
目前我最好的猜测是这与按值/引用分配有关吗?
【问题讨论】:
-
区别不在于变量与调用表达式作为
.next()调用目标。只是在第二个例子中你调用了gen()两次,创建了两个不同的生成器对象。
标签: javascript generator next