Javascript 为什么可以';我不能迭代这个数组吗?

Javascript 为什么可以';我不能迭代这个数组吗?,javascript,arrays,Javascript,Arrays,我是JavaScript新手,我不知道为什么这段代码没有输出 function printArray(a) { for (var key in a) { console.log(a[key]); } } var a = new Array(10); printArray(a); 有什么问题吗?像这样的空插槽数组上没有可枚举属性。此外,您几乎不想使用for(In)循环来检查数组的索引 您应该使用常规的for循环,或者Array.prototype.forEach(

我是JavaScript新手,我不知道为什么这段代码没有输出

function printArray(a) {
    for (var key in a) {
        console.log(a[key]);
    }
}
var a = new Array(10);
printArray(a);

有什么问题吗?

像这样的空插槽数组上没有可枚举属性。此外,您几乎不想使用
for(In)
循环来检查数组的索引

您应该使用常规的
for
循环,或者
Array.prototype.forEach()
(当然,如果数组有值)

函数打印数组(a){
对于(变量i=0;i

请记住,并非所有目标平台都支持
Array.prototype.forEach()

空插槽阵列上没有类似的可枚举属性。此外,您几乎不想使用
for(In)
循环来检查数组的索引

您应该使用常规的
for
循环,或者
Array.prototype.forEach()
(当然,如果数组有值)

函数打印数组(a){
对于(变量i=0;i

请记住,并非所有目标平台都支持
Array.prototype.forEach()

for
循环是可行的。
.forEach()
不会为实际不存在的成员调用回调。它跳过了这些。是的,循环的
是最好的解决方案。最好的解决方案是在数组中包含元素。@sixfingeredman这是真的。我想说的是如何在数组上迭代。我会说得更清楚:)for
循环的
是一条路要走。
.forEach()
不会为实际不存在的成员调用回调。它跳过了这些。是的,循环的
是最好的解决方案。最好的解决方案是在数组中包含元素。@sixfingeredman这是真的。我想说的是如何在数组上迭代。我会说得更清楚:)
function printArray(a) {
    for (var i = 0; i < a.length; i++) {
        console.log(a[i]);
    }
}
// or
function printArray(a) {
    a.forEach(function(i) {
        console.log(i);
    });
}