JavaScript - 数组"未定义"错误

qua*_*ity 2 javascript arrays loops

我遇到了这个简单的代码问题,我无法弄清楚.而不是在控制台中打印整个数组,我收到消息"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]);
}
Run Code Online (Sandbox Code Playgroud)

nnn*_*nnn 8

JavaScript数组索引从0开始,而不是1.该.push()方法在数组的末尾添加一个元素,在空数组的情况下(就像你的循环开始时那样)将是数组元素0.

您的环插入值1数组索引0,该值2在数组索引1,和依此类推,直到所述值10在数组索引9.

您的每个console.log(ar[i])语句都试图从高于最高元素索引的索引中记录一个值,并且这些元素将始终是undefined.因此控制台将值记录undefined十次.

您可以像这样记录数组的最后一个元素:

console.log(ar[ar.length-1]);
Run Code Online (Sandbox Code Playgroud)

或者在您(现在)知道i将比使用的索引高一个的情况下.push():

console.log(ar[i-1]);
Run Code Online (Sandbox Code Playgroud)