1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

Update generator.md

阮大神,近日在阅读ES6这本书的时候,发现Generator中关于yield*和for...of的关系描述的不是特别准确,因此加上了几句话,读者读起来的时候会更清晰些。
This commit is contained in:
李海龙 2016-07-14 12:47:26 +08:00 committed by GitHub
parent 33dcfcd5f1
commit 0490d0b32f

View File

@ -821,7 +821,7 @@ for(let value of delegatingIterator) {
上面代码中,`delegatingIterator`是代理者,`delegatedIterator`是被代理者。由于`yield* delegatedIterator`语句得到的值是一个遍历器所以要用星号表示。运行结果就是使用一个遍历器遍历了多个Generator函数有递归的效果。
`yield*`语句等同于在Generator函数内部部署一个`for...of`循环。
`yield*`后面的Generator函数没有`return`语句等同于在Generator函数内部部署一个`for...of`循环。
```javascript
function* concat(iter1, iter2) {
@ -841,7 +841,7 @@ function* concat(iter1, iter2) {
}
```
上面代码说明,`yield*`不过是`for...of`的一种简写形式,完全可以用后者替代前者。
上面代码说明,`yield*`后面的Generator函数没有`return`语句时,不过是`for...of`的一种简写形式,完全可以用后者替代前者。反之,则需要用'var value=yield* Generator函数'的形式获取'return'语句的值。
如果`yield*`后面跟着一个数组,由于数组原生支持遍历器,因此就会遍历数组成员。