为什么'for array>中的x不能按预期工作?

时间:2016-12-25 12:13:30

标签: javascript

许多编程语言使用'for x in'的语法来迭代列表/数组。

它也存在于JavaScript中。但是,以下代码:

var arr = [5, 6, 9, 10];
for (var i in arr) {
    console.log(i);
}

输出数组'arr'的索引,而不是数组本身的元素(与其他编程语言不同)。

我的问题是为什么?或者这种行为的JavaScript逻辑是什么?

2 个答案:

答案 0 :(得分:1)

您要查找的是 for(i of arr)。这将迭代数组并给出 i 数组中每个元素的值。

Here's the documentation for it

或者,如果您想使用 for(i in arr),您可以将数组元素称为 arr[i],因为在这种情况下,i 只是索引。

这是所有情况的片段。

var arr = [5, 6, 9, 10];
console.log('let i of arr, log i:');
for (let i of arr) {
  console.log(i);
}
console.log('let i in arr, log i:');
for (let i in arr) {
  console.log(i);
}
console.log('let i in arr, log arr[i]:');
for (let i in arr) {
  console.log(arr[i]);
}

答案 1 :(得分:0)

  

我的问题是为什么?或者这种行为的JavaScript逻辑是什么?

大致相同的原因+表示加法而不是减法。换句话说,因为它是指定的意思。

Javascript包含具有属性的对象,并且包含此功能(从JS历史的早期 - 近二十年前)作为迭代这些属性的方式。碰巧在数组的情况下,索引对应于属性。