Skip to content

Commit 938c0cb

Browse files
committed
docs(generator): edit yield
1 parent c108637 commit 938c0cb

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

docs/generator.md

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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
147147
var 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

Comments
 (0)