在JavaScript中,使用yield时可以向其传递值。例如:
function* foo() {
const result = yield;
console.log(The result is ${result}
);
}
const iterator = foo(); iterator.next(); // 第一次调用next()返回{ done: false, value: undefined } iterator.next(4); // 第二次调用next()返回{ done: true, value: undefined }, 并在控制台打印"The result is 4"
在上面的示例中,我们调用了两次next()。第一次调用next()返回一个未定义的值,因为我们没有向yield传递任何值。第二次调用next()时,我们向其传递了值4,这个值被赋值给了变量result。
在执行完yield语句后,控制流程回到了生成器函数中的下一行代码,并在控制台打印出了result的值。
需要注意的是,第一次调用next()时,生成器函数并没有开始执行,因此不能向yield传递任何值。