Skip to content

Commit 4960a18

Browse files
committed
Symbol列为单独的章节
1 parent be427eb commit 4960a18

File tree

6 files changed

+497
-406
lines changed

6 files changed

+497
-406
lines changed

docs/iterator.md

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -298,14 +298,35 @@ let arr = ['b', 'c'];
298298
let arr = [...iterable];
299299
```
300300

301-
**(3)其他场合**
301+
**(3)yield* **
302302

303-
以下场合也会用到默认的iterator接口,可以查阅相关章节。
303+
yield*后面跟的是一个可遍历的结构,它会调用该结构的遍历器接口。
304+
305+
```javascript
306+
let generator = function* () {
307+
yield 1;
308+
yield* [2,3,4]; //use an iterable, is looped, and added as yields
309+
yield 5;
310+
};
311+
312+
var iterator = generator();
313+
314+
iterator.next() // { value: 1, done: false }
315+
iterator.next() // { value: 2, done: false }
316+
iterator.next() // { value: 3, done: false }
317+
iterator.next() // { value: 4, done: false }
318+
iterator.next() // { value: 5, done: false }
319+
iterator.next() // { value: undefined, done: true }
320+
```
321+
322+
**(4)其他场合**
323+
324+
由于数组的遍历会调用遍历器接口,所以任何接受数组作为参数的场合,其实都调用了遍历器接口。下面是一些例子。
304325

305-
- yield*
306326
- Array.from()
307-
- Map(), Set(), WeakMap(), WeakSet()
308-
- Promise.all(), Promise.race()
327+
- Map(), Set(), WeakMap(), WeakSet()(比如`new Map([['a',1],['b',2]])`
328+
- Promise.all()
329+
- Promise.race()
309330

310331
## 原生具备Iterator接口的数据结构
311332

docs/let.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ if (true) {
113113
有些“死区”比较隐蔽,不太容易发现。
114114

115115
```javascript
116-
function bar(x=y, y=2) {
116+
function bar(x = y, y = 2) {
117117
return [x, y];
118118
}
119119

0 commit comments

Comments
 (0)