我正在阅读JavaScript Generators,我对以下计划有疑问。
首先it.next()
如何将"Hello"
作为输出?如果有人一步一步详细解释它,那就太好了。
function* foo(x) {
var y = x * (yield "Hello"); // <-- yield a value!
return y;
}
var it = foo(6);
var res = it.next(); // first `next()`, don't pass anything
console.log(res.value); // "Hello"
res = it.next(7); // pass `7` to waiting `yield`
console.log(res.value); // 42
答案 0 :(得分:0)
我将逐步解释它:
第1步:您创建了一个名为foo
Step2 :您已将生成器函数分配给一个名为它的变量,并传递了值6(分配值x = 6)。
Step3 :您正在生成器对象上调用next
函数。魔术在这里发生。它将开始执行功能,直到找不到第一个yield
。一旦到达第一个yield
,它将停止执行并返回值。