不太清楚如何说出这个问题。
当我这样做时
function reverseArray(array) {
var arr = [];
for(i = 0; i <= array.length; i++)
arr.unshift(array[i]);
return arr;
}
然后用console.log(reverseArray(["A", "B", "C"]));
调用它我的输出是:
[undefined, "C", "B", "A"]
但是当我在for循环中从array.length中减去1时,就像这样
function reverseArray(array) {
var arr = [];
for(i = 0; i <= array.length - 1; i++)
arr.unshift(array[i]);
return arr;
}
我完全得到了我的期望,即:["C", "B", "A"]
是什么给出了?
答案 0 :(得分:3)
因为数组索引从0到长度为1,所以当i<=array.length
变为i
array.length
时,您使用array[i]
的循环将是未定义的。
因此,在for循环中,您需要i=0; i<array.length
function reverseArray(array) {
var arr = [];
for (i = 0; i < array.length; i++)
arr.unshift(array[i]);
return arr;
}
console.log(reverseArray(["A", "B", "C"]));
&#13;
答案 1 :(得分:1)
您传递的array
变量(例如["A", "B", "C"]
)长度为3项。
你的病情
for(i = 0; i <= array.length; i++)
将迭代4次而不是3次。
当它查找array[3]
时,没有任何内容,因此undefined
已移位。
答案 2 :(得分:1)