【发布时间】:2016-01-03 19:56:03
【问题描述】:
我正在尝试节点 4.1.2 中的新 Set 对象,我看到 values、keys 和 entries 方法都总是返回空对象。例如:
var x = new Set
x.add(1)
x.add(2)
x.values() // returns {}
这是预期的行为吗?我无法想象它是。
【问题讨论】:
-
x.values()不是迭代器吗?如果你.next().value它会发生什么? -
嘿,
x.values().next().value似乎有效。这就引出了一个问题:为什么 javascript 有迭代器?既然它有迭代器,为什么它们不在for(x in y)循环中工作? -
因为你现在用
for ( let z of x ) {console.log(z);} -
啊,我明白了。实际上并不是“你现在使用 ..
of..”——for..in的使用根本没有改变。相反,for..of是一种新的结构,它迭代值而不是键,并且由于迭代器没有键,in没有任何东西可以循环。我仍然认为他们最好远离迭代器的概念。
标签: javascript node.js ecmascript-6