generator(生成器)是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次。
和 Python 中的生成器一样,所以算是一次复习。不过由于至今还没有运用过生成器,还不算真正掌握。
用生成器写一个计数器
function* create_counter(max) {
var id = 0;
while (id < max) yield id++;
}
a = create_counter(5) // create_counter {[[GeneratorStatus]]: "suspended"}
a.next() // {value: 0, done: false}
a.next() // {value: 1, done: false}
a.next() // {value: 2, done: false}
...
a.next() // {value: 4, done: true}
我们也可以利用 for of 语句来循环调用这个函数
for (var i of create_counter(5)) {
console.log(i);
}
//0
//1
//2
//3
//4
网友评论