mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
edit generator
This commit is contained in:
parent
78641c9cd2
commit
a55a68cbb1
@ -4,7 +4,7 @@
|
||||
|
||||
所谓Generator,简单说,就是一个内部状态的遍历器,即每调用一次遍历器,内部状态发生一次改变(可以理解成发生某些事件)。ES6引入了generator函数,作用就是可以完全控制内部状态的变化,依次遍历这些状态。
|
||||
|
||||
ES6的generator函数有两个特征。一是,function关键字后面有一个星号;二是,函数体内部使用yield语句,定义遍历器的每个成员(即不同的内部状态)。
|
||||
generator函数就是普通函数,但是有两个特征。一是,function关键字后面有一个星号;二是,函数体内部使用yield语句,定义遍历器的每个成员(即不同的内部状态)。
|
||||
|
||||
```javascript
|
||||
|
||||
@ -58,7 +58,7 @@ hw.next()
|
||||
|
||||
Generator函数使用iterator接口,每次调用next方法的返回值,就是一个标准的iterator返回值:有着value和done两个属性的对象。其中,value是yield语句后面那个表达式的值,done是一个布尔值,表示是否遍历结束。
|
||||
|
||||
Generator函数的本质,其实是使用yield语句暂停执行它后面的操作,当调用next方法时,再继续往下执行,直到遇到下一个yield语句,并返回该语句的值。如果没有再遇到新的yield语句,就一直运行到函数结束或者直到return语句为止。
|
||||
Generator函数的本质,其实是提供一种可以暂停执行的函数。yield语句就是暂停标志,next方法遇到yield,就会暂停执行后面的操作,并将紧跟在yield后面的那个表达式的值,作为返回对象的value属性的值。当下一次调用next方法时,再继续往下执行,直到遇到下一个yield语句。如果没有再遇到新的yield语句,就一直运行到函数结束,将return语句后面的表达式的值,作为value属性的值,如果该函数没有return语句,则value属性的值为undefined。
|
||||
|
||||
yield语句与return语句有点像,都能返回紧跟在语句后面的那个表达式的值。区别在于每次遇到yield,函数暂停执行,下一次再从该位置继续向后执行,而return语句不具备位置记忆的功能。
|
||||
|
||||
|
@ -61,4 +61,17 @@ for (var n of it) {
|
||||
}
|
||||
|
||||
```
|
||||
在ES6中,数组本身就具有iterator接口。
|
||||
|
||||
```javascript
|
||||
|
||||
const arr = ['red', 'green', 'blue'];
|
||||
|
||||
for(let v of arr) {
|
||||
console.log(v);
|
||||
}
|
||||
\\ red
|
||||
\\ green
|
||||
\\ blue
|
||||
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user