gpt4 book ai didi

javascript - 为什么 javascript 生成器函数的 yield 语句返回 .next() 的参数?

转载 作者:数据小太阳 更新时间:2023-10-29 05:24:46 29 4
gpt4 key购买 nike

我偶然发现了 generator functions on MDN令我困惑的是以下示例:

function* logGenerator() {
console.log(yield);
console.log(yield);
console.log(yield);
}

var gen = logGenerator();

// the first call of next executes from the start of the function
// until the first yield statement
gen.next();
gen.next('pretzel'); // pretzel
gen.next('california'); // california
gen.next('mayonnaise'); // mayonnaise

我不明白的是,为什么作为 console.log 参数的 yield 语句返回传递给 .next()< 的参数 生成器的方法。发生这种情况是因为空的 yield 必须返回 .next() 方法的第一个参数的值吗?

我还尝试了更多示例,这些示例似乎证实了上述说法,例如:

gen.next(1,2,3); // the printed value is 1, the 2 and 3 are ignored
// and the actual yielded value is undefined

还有没有办法在生成器函数体内访问 .next() 方法的更多参数?

我注意到的另一件事是,当 yield 语句将这些值返回到 console.log 时,它们实际上并没有作为生成器的输出产生。我必须说我觉得它很困惑。

最佳答案

好问题。我认为阅读有关 .next() 方法的 MDN 最有帮助。您可以在生成器函数本身中定义要传递的值(即 yield 1)或通过 next() 传递值,方法是像 gen.下一个(1)

next() 方法本身返回一个对象,具有属性 value 和一个 bool 值 done 表示生成器函数是否完成(即用尽可用输出,现在将仅输出 undefined 值)。

也就是说,有两种方法可以访问/传递

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/next

关于javascript - 为什么 javascript 生成器函数的 yield 语句返回 .next() 的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45702352/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com