我无法理解这段简单的代码。 我没有在控制台中打印整个数组,而是收到消息“10 undefined”。尽管如果我将“var i”设置为 0 或以下,那么一切都很好,我会得到一个从该数字到 10 的完整列表。
当“i”设置为大于 0 的数字时,为什么这不起作用? 用 chrome 拍了一张我的控制台的照片来展示它的样子:
var ar = [];
for (var i = 1; i <= 10; i++) {
ar.push(i);
console.log(ar[i]);
}
最佳答案
JavaScript 数组索引从 0 开始,而不是 1。.push()
method在数组的末尾添加一个元素,在空数组的情况下(就像你的循环开始时的那样)将是数组元素 0。
您的循环在数组索引 0
处插入值 1
,在数组索引 1
处插入值 2
,依此类推,直到数组索引 9
处的值 10
。
您的每个 console.log(ar[i])
语句都试图从比最高元素索引高一个的索引中记录一个值,并且这些元素将始终为 undefined
。因此控制台记录值 undefined
十次。
您可以像这样记录数组的最后一个元素:
console.log(ar[ar.length-1]);
或者在您(现在)知道 i
将比 .push()
使用的索引高一个的情况下:
console.log(ar[i-1]);
关于JavaScript - 数组 "undefined"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28933486/