Skip to content

Commit 4a9d568

Browse files
authored
fix: 优化翻译
1 parent 5f11b9c commit 4a9d568

File tree

1 file changed

+12
-12
lines changed
  • 1-js/12-generators-iterators/1-generators

1 file changed

+12
-12
lines changed

1-js/12-generators-iterators/1-generators/article.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# Generator
1+
# generator
22

33
常规函数只会返回一个单一值(或者不返回任何值)。
44

5-
Generator 可以按需一个接一个地返回("yield")多个值。它们可与 [iterable](info:iterable) 完美配合使用,从而可以轻松地创建数据流。
5+
generator 可以按需一个接一个地返回("yield")多个值。它们可与 [iterable](info:iterable) 完美配合使用,从而可以轻松地创建数据流。
66

7-
## Generator 函数
7+
## generator 函数
88

99
要创建一个 generator,我们需要一个特殊的语法结构:`function*`,即所谓的 "generator function"。
1010

@@ -18,7 +18,7 @@ function* generateSequence() {
1818
}
1919
```
2020

21-
Generator 函数与常规函数的行为不同。在此类函数被调用时,它不会运行其代码。而是返回一个被称为 "generator object" 的特殊对象,来管理执行流程。
21+
generator 函数与常规函数的行为不同。在此类函数被调用时,它不会运行其代码。而是返回一个被称为 "generator object" 的特殊对象,来管理执行流程。
2222

2323
我们来看一个例子:
2424

@@ -98,9 +98,9 @@ alert(JSON.stringify(three)); // {value: 3, *!*done: true*/!*}
9898
但是通常更倾向于第一种语法,因为星号 `*` 表示它是一个 generator 函数,它描述的是函数种类而不是名称,因此 `*` 应该和 `function` 关键字紧贴一起。
9999
```
100100
101-
## Generator 是可迭代的
101+
## generator 是可迭代的
102102
103-
当你看到 `next()` 方法,或许你已经猜到了 generator 是 [可迭代(iterable)](info:iterable)的。(译注:`next()` 是 iterator 的必要方法)
103+
当你看到 `next()` 方法,或许你已经猜到了 generator 是 [可迭代(iterable)](info:iterable)的。
104104
105105
我们可以使用 `for..of` 循环遍历它所有的值:
106106
@@ -215,19 +215,19 @@ alert( [...range] ); // 1,2,3,4,5
215215
- 它具有 `.next()` 方法
216216
- 它以 `{value: ..., done: true/false}` 的形式返回值
217217

218-
当然,这不是巧合。Generator 被添加到 JavaScript 语言中是有对 iterator 的考量的,以便更容易地实现 iterator。
218+
当然,这不是巧合。generator 被添加到 JavaScript 语言中是有对 iterator 的考量的,以便更容易地实现 iterator。
219219

220220
带有 generator 的变体比原来的 `range` 迭代代码简洁得多,并且保持了相同的功能。
221221

222-
```smart header="Generator 可以永远产出(yield)值"
222+
```smart header="generator 可以永远产出(yield)值"
223223
在上面的示例中,我们生成了有限序列,但是我们也可以创建一个生成无限序列的 generator,它可以一直产出(yield)值。例如,无序的伪随机数序列。
224224
225225
这种情况下肯定需要在 generator 的 `for..of` 循环中添加一个 `break`(或者 `return`)。否则循环将永远重复下去并挂起。
226226
```
227227

228-
## Generator 组合
228+
## generator 组合
229229

230-
Generator 组合(composition)是 generator 的一个特殊功能,它允许透明地(transparently)将 generator 彼此“嵌入(embed)”到一起。
230+
generator 组合(composition)是 generator 的一个特殊功能,它允许透明地(transparently)将 generator 彼此“嵌入(embed)”到一起。
231231

232232
例如,我们有一个生成数字序列的函数:
233233

@@ -312,7 +312,7 @@ for(let code of generateAlphaNum()) {
312312
alert(str); // 0..9A..Za..z
313313
```
314314

315-
Generator 组合(composition)是将一个 generator 流插入到另一个 generator 流的自然的方式。它不需要使用额外的内存来存储中间结果。
315+
generator 组合(composition)是将一个 generator 流插入到另一个 generator 流的自然的方式。它不需要使用额外的内存来存储中间结果。
316316

317317
## "yield" 是一条双向路
318318

@@ -472,7 +472,7 @@ g.next(); // { value: undefined, done: true }
472472

473473
## 总结
474474

475-
- Generator 是通过 generator 函数 `function* f(…) {…}` 创建的。
475+
- generator 是通过 generator 函数 `function* f(…) {…}` 创建的。
476476
- 在 generator(仅在)内部,存在 `yield` 操作。
477477
- 外部代码和 generator 可能会通过 `next/yield` 调用交换结果。
478478

0 commit comments

Comments
 (0)