【发布时间】:2016-03-12 04:13:39
【问题描述】:
我测试了以下代码:
arr = [3, 5, 7];
arr.foo = "hello";
arr["boo"] ="moo"
for (i in arr) {
console.log(i);
}
for (i of arr) {
console.log(i);
}
for .. in 获取 all 数组的属性。
for (i in arr) {
console.log(i);
}
返回:
0
1
2
foo
boo
但是对于 .. of 并没有得到所有的值
for (i of arr) {
console.log(i);
}
返回:
3
5
7
造成这种差异的技术原因是什么?为什么这种明显的不一致被接受为默认行为?
【问题讨论】:
-
为什么会它们是一样的?它们是两个不同的运算符,对两种不同的行为很有用。
-
@Bergi 这篇文章很好地涵盖了我的一些观点。
-
@EduardFlorinescu:我看不出你在说什么 :-)
for of不会枚举所有属性值,它会迭代元素——对于数组来说,它只是数组元素。 -
@sphanley 我从来没有说过或暗示相同,你可以看看如果你阅读我提到属性与值的标题,我会期待类似的行为,但我并没有在任何地方暗示相同。