【发布时间】:2018-04-24 14:36:09
【问题描述】:
我正在尝试编写一个可以将列表或生成器作为输入的函数。比如这个函数:
function x(l) {
for (let i of l) {
console.log(i);
}
for (let i of l) {
console.log(i);
}
}
如果我这样运行:
x([1,2,3])
它将显示:
1
2
3
1
2
3
现在我想使用生成器作为输入:
function *y() {
yield 5
yield 6
yield 7
}
这些不起作用:
x(y())
x(y)
输出是:
5
6
7
undefined
我需要做什么才能让它发挥作用?
在Java方面,上面的函数y是一个Generator,y()是一个Iterator。 [1,2,3] 是一个列表,在 Java 中,列表是生成器。但是 javascript for 循环需要一个 iterator,这意味着它无法重新启动。这似乎是 javascript 中的一个缺陷,即 for 循环适用于迭代器而不是生成器。
【问题讨论】:
标签: javascript ecmascript-6 iterator generator