@@ -108,9 +108,9 @@ setTimeout(function () {
108108}, 2000 );
109109```
110110
111- 上面代码中,函数` f ` 如果是普通函数,在为变量` generator ` 赋值时就会执行。但是,函数` f ` 是一个Generator函数 ,就变成只有调用` next ` 方法时,函数` f ` 才会执行。
111+ 上面代码中,函数` f ` 如果是普通函数,在为变量` generator ` 赋值时就会执行。但是,函数` f ` 是一个 Generator 函数 ,就变成只有调用` next ` 方法时,函数` f ` 才会执行。
112112
113- 另外需要注意,` yield ` 语句不能用在普通函数中,否则会报错 。
113+ 另外需要注意,` yield ` 语句只能用在 Generator 函数里面,用在其他地方都会报错 。
114114
115115``` javascript
116116(function (){
@@ -141,7 +141,7 @@ for (var f of flat(arr)){
141141}
142142` ` `
143143
144- 上面代码也会产生句法错误,因为` forEach` 方法的参数是一个普通函数,但是在里面使用了` yield ` 语句(这个函数里面还使用了` yield * ` 语句,这里可以不用理会,详细说明见后文 )。一种修改方法是改用` for ` 循环。
144+ 上面代码也会产生句法错误,因为` forEach` 方法的参数是一个普通函数,但是在里面使用了` yield ` 语句(这个函数里面还使用了` yield * ` 语句,详细介绍见后文 )。一种修改方法是改用` for ` 循环。
145145
146146` ` ` javascript
147147var arr = [1 , [[2 , 3 ], 4 ], [5 , 6 ]];
@@ -167,21 +167,25 @@ for (var f of flat(arr)) {
167167另外,` yield ` 语句如果用在一个表达式之中,必须放在圆括号里面。
168168
169169` ` ` javascript
170- console .log (' Hello' + yield ); // SyntaxError
171- console .log (' Hello' + yield 123 ); // SyntaxError
170+ function * demo () {
171+ console .log (' Hello' + yield ); // SyntaxError
172+ console .log (' Hello' + yield 123 ); // SyntaxError
172173
173- console .log (' Hello' + (yield )); // OK
174- console .log (' Hello' + (yield 123 )); // OK
174+ console .log (' Hello' + (yield )); // OK
175+ console .log (' Hello' + (yield 123 )); // OK
176+ }
175177` ` `
176178
177- ` yield ` 语句用作函数参数或赋值表达式的右边 ,可以不加括号。
179+ ` yield ` 语句用作函数参数或放在赋值表达式的右边 ,可以不加括号。
178180
179181` ` ` javascript
180- foo (yield ' a' , yield ' b' ); // OK
181- let input = yield ; // OK
182+ function * demo () {
183+ foo (yield ' a' , yield ' b' ); // OK
184+ let input = yield ; // OK
185+ }
182186` ` `
183187
184- ### 与Iterator接口的关系
188+ ### 与 Iterator 接口的关系
185189
186190上一章说过,任意一个对象的` Symbol .iterator ` 方法,等于该对象的遍历器生成函数,调用该函数会返回该对象的一个遍历器对象。
187191
0 commit comments