当我使用 --harmony
选项启动 Node v0.11.14 REPL 并尝试 for-of 循环时,我得到:
> for (var i of [3, 4, 5]) console.log(i);
TypeError: undefined is not a function
对于集合也是如此。但它与生成器一起工作得很好:
> function* Counter() { var n=3; while (n < 7) { yield n++; } }
> var c = new Counter();
> for (var i of c) console.log(i);
3
4
5
6
虽然第一个例子来自 ecmascript wiki page是:
for (word of ["one", "two", "three"]) {
alert(word);
}
MDN page和 Traceur docs包含相同的示例。我无法用谷歌搜索“for-of in nodejs”。它真的应该在 Node 中工作吗?还是我遗漏了一些东西?
for .. of
和可迭代对象在 v8 中单独实现。看起来在与 Node 0.11.14 捆绑的 v8 中,您只能将其与生成器一起使用。
您可以查看obj[Symbol.iterator]
属性来查看对象是否可迭代,它应该是一个函数。在我使用 v8 3.29.93 构建的 Node 中,一切都按预期工作。因此,您可能必须等待下一个 0.11 版本(或 0.12)。
我是一名优秀的程序员,十分优秀!