省略一下Exploring ES6的这段代码

时间:2018-12-20 19:56:48

标签: javascript

帮我绕过这个例子:

function* genFuncWithReturn() {
    yield 'a';
    yield 'b';
    return 'The result';
}
function* logReturned(genObj) {
    const result = yield* genObj;
    console.log(result); // (A)
}

结果:

> [...logReturned(genFuncWithReturn())]
The result
[ 'a', 'b' ]

所以,我的问题是为什么首先生成return语句,然后第二产生递归生成器语句?

1 个答案:

答案 0 :(得分:3)

[...logReturned(...)]在终止后的 中产生新的数组。并且在之前 logReturned终止之前,它会调用logReturned

也许这种ASCII艺术有助于理解流程:

console.log(result)