From bfa6c119c115e29f883804e67ff90f6efcecedda Mon Sep 17 00:00:00 2001 From: Geng Shuang <937493108@qq.com> Date: Wed, 11 Jan 2017 15:26:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E5=99=A8=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E8=B0=83=E7=94=A8=20next=20=E6=96=B9=E6=B3=95=E4=BC=A0?= =?UTF-8?q?=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `next`方法可以带一个参数,该参数就会被当作上一个`yield`语句的返回值 --- docs/generator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/generator.md b/docs/generator.md index 2089208..dc9a57e 100644 --- a/docs/generator.md +++ b/docs/generator.md @@ -234,7 +234,7 @@ g.next() // { value: 1, done: false } g.next(true) // { value: 0, done: false } ``` -上面代码先定义了一个可以无限运行的Generator函数`f`,如果`next`方法没有参数,每次运行到`yield`语句,变量`reset`的值总是`undefined`。当`next`方法带一个参数`true`时,当前的变量`reset`就被重置为这个参数(即`true`),因此`i`会等于-1,下一轮循环就会从-1开始递增。 +上面代码先定义了一个可以无限运行的Generator函数`f`,如果`next`方法没有参数,每次运行到`yield`语句,变量`reset`的值总是`undefined`。当`next`方法带一个参数`true`时,上一次的变量`reset`就被重置为这个参数(即`true`),因此上一次的`i`会等于-1,下一轮循环就会从-1开始递增。 这个功能有很重要的语法意义。Generator函数从暂停状态到恢复运行,它的上下文状态(context)是不变的。通过`next`方法的参数,就有办法在Generator函数开始运行之后,继续向函数体内部注入值。也就是说,可以在Generator函数运行的不同阶段,从外部向内部注入不同的值,从而调整函数行为。