许多编程语言使用'for x in'的语法来迭代列表/数组。
它也存在于JavaScript中。但是,以下代码:
var arr = [5, 6, 9, 10];
for (var i in arr) {
console.log(i);
}
输出数组'arr'的索引,而不是数组本身的元素(与其他编程语言不同)。
我的问题是为什么?或者这种行为的JavaScript逻辑是什么?
答案 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历史的早期 - 近二十年前)作为迭代这些属性的方式。碰巧在数组的情况下,索引对应于属性。