[JavaScript] yield与yield*

ES6的yield*可以用来yield其他iterable
例如:数组,字符串,或者arguments对象,generator对象。

function* gen1(){
    yield 3;
    yield 4;
}

function* gen2(){
    yield* [1,2];
    yield* "ab";
    yield* gen1();
}

var g=gen2();
console.log(g.next().value);    //1
console.log(g.next().value);    //2
console.log(g.next().value);    //"a"
console.log(g.next().value);    //"b"
console.log(g.next().value);    //3
console.log(g.next().value);    //4

注:
如果yield*后面不是iterable会报错。

你可能感兴趣的:([JavaScript] yield与yield*)