Skip to content

Commit 0051af0

Browse files
committed
Merge branch 'gh-pages' of github.com:ruanyf/es6tutorial into gh-pages
2 parents 1ff6639 + faefd42 commit 0051af0

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

docs/iterator.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ function makeIterator(array) {
6969
```javascript
7070
var it = idMaker();
7171

72-
it.next().value // '0'
73-
it.next().value // '1'
74-
it.next().value // '2'
72+
it.next().value // 0
73+
it.next().value // 1
74+
it.next().value // 2
7575
// ...
7676

7777
function idMaker() {
@@ -108,9 +108,9 @@ interface IterationResult {
108108

109109
Iterator 接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即`for...of`循环(详见下文)。当使用`for...of`循环遍历某种数据结构时,该循环会自动去寻找 Iterator 接口。
110110

111-
一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是”可遍历的“(iterable)。
111+
一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是“可遍历的”(iterable)。
112112

113-
ES6 规定,默认的 Iterator 接口部署在数据结构的`Symbol.iterator`属性,或者说,一个数据结构只要具有`Symbol.iterator`属性,就可以认为是“可遍历的”(iterable)。`Symbol.iterator`属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。至于属性名`Symbol.iterator`,它是一个表达式,返回`Symbol`对象的`iterator`属性,这是一个预定义好的、类型为 Symbol 的特殊值,所以要放在方括号内(参见 Symbol 一章)。
113+
ES6 规定,默认的 Iterator 接口部署在数据结构的`Symbol.iterator`属性,或者说,一个数据结构只要具有`Symbol.iterator`属性,就可以认为是“可遍历的”(iterable)。`Symbol.iterator`属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。至于属性名`Symbol.iterator`,它是一个表达式,返回`Symbol`对象的`iterator`属性,这是一个预定义好的、类型为 Symbol 的特殊值,所以要放在方括号内(参见Symbol一章)。
114114

115115
```javascript
116116
const obj = {
@@ -444,13 +444,13 @@ str // "hi"
444444
`Symbol.iterator`方法的最简单实现,还是使用下一章要介绍的 Generator 函数。
445445

446446
```javascript
447-
var myIterable = {};
448-
449-
myIterable[Symbol.iterator] = function* () {
450-
yield 1;
451-
yield 2;
452-
yield 3;
453-
};
447+
let myIterable = {
448+
[Symbol.iterator]: function* () {
449+
yield 1;
450+
yield 2;
451+
yield 3;
452+
}
453+
}
454454
[...myIterable] // [1, 2, 3]
455455

456456
// 或者采用下面的简洁写法
@@ -465,8 +465,8 @@ let obj = {
465465
for (let x of obj) {
466466
console.log(x);
467467
}
468-
// hello
469-
// world
468+
// "hello"
469+
// "world"
470470
```
471471

472472
上面代码中,`Symbol.iterator`方法几乎不用部署任何代码,只要用 yield 命令给出每一步的返回值即可。
@@ -573,7 +573,7 @@ for (let a of arr) {
573573
}
574574
```
575575

576-
上面代码表明,`for...in`循环读取键名,`for...of`循环读取键值。如果要通过`for...of`循环,获取数组的索引,可以借助数组实例的`entries`方法和`keys`方法参见《数组的扩展》章节
576+
上面代码表明,`for...in`循环读取键名,`for...of`循环读取键值。如果要通过`for...of`循环,获取数组的索引,可以借助数组实例的`entries`方法和`keys`方法参见《数组的扩展》一章)
577577

578578
`for...of`循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟`for...in`循环也不一样。
579579

0 commit comments

Comments
 (0)