迭代器
迭代器对象,拥有next()
方法,会返回有个结果对象。该结果对象有两个属性:1.对应下个值的value 2.一个布尔值done,该布尔值表示没有更多值可供使用。
迭代器持有一个指向集合位置的内部指针,每当调用next()方法,迭代器就会返回相应的下一个值。
*如下为一个迭代器的实现:
function creatInterator(arr) {
this.i = 0;
return {
next: function () {
let done = i >= arr.length
return {
done: done,
value: done ? undefined : arr[i++]
}
}
}
}
使用该迭代器:
let it1 = creatInterator([1, 2, 3]);
console.log(it1.next())
console.log(it1.next())
console.log(it1.next())
console.log(it1.next())
{ value: 1, done: false }
{ value: 2, done: false }
{ value: 3, done: false }
{ value: undefined, done: true }
生成器
对于生成器,就是可以返回一个迭代器的函数
function* creatInterator2() {
yield function(x){
console.log(2*x)
return 3*x
}(9);
yield 1;
yield 3;
}
使用该生成器:
var it2 = creatInterator2();
console.log(it2.next())
console.log(it2.next())
console.log(it2.next())
console.log(it2.next())
18
{ value: 27, done: false }
{ value: 1, done: false }
{ value: 2, done: false }
{ value: undefined, done: true }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。