我无法弄清楚这里有什么不对,我试图遍历整个阵列,但它停在'c'处。
function foo() {
var temp = ['e', 'm', 'o', 'c', 'l', 'e', 'W'];
for (var i = 0; i < temp.length; i++) {
console.log(temp.pop());
}
}
foo() // => welc
答案 0 :(得分:1)
它只用了一半时间,因为当你使用pop()
时,它会自动缩短长度。 for
循环检查每个循环完成时的长度。而是使用:
function foo() {
var temp = ['e', 'm', 'o', 'c', 'l', 'e', 'W'];
for (;temp.length > 0;) {
console.log(temp.pop());
}
}
你根本不需要柜台。所以我们甚至可以将其切换到while
循环。
function foo() {
var temp = ['e', 'm', 'o', 'c', 'l', 'e', 'W'];
while (temp.length > 0) {
console.log(temp.pop());
}
}
答案 1 :(得分:0)
当你在for循环中弹出temp时,你正在改变temp的长度
答案 2 :(得分:0)
pop()
方法删除数组的最后一个元素,并返回该元素,并使用它更改该数组的长度。
在你的循环中。您正在增加i
并减少数组长度。所以它将来自:
0(i) < 7 (array length)
至
3(i) < 4 (array length)
(这是您的c
)
i
将为4
,数组长度为3
。 因此,在您的情况下,您可以在console.log
temp[i]
中使用,以迭代所有数组。
function foo() {
var temp = ['e', 'm', 'o', 'c', 'l', 'e', 'W'];
for (var i = 0; i < temp.length; i++) {
console.log(temp[i]);
}
}
答案 3 :(得分:0)
pop()
减小了数组的大小。你的代码是这样运行的(L是数组长度,我是索引)。
L I
W 6 0
e 5 1
l 4 2
c 3 3
因此当索引不再小于数组长度(i < temp.length
)时循环停止。
或许改变为:
for (var i = temp.length; temp.length > 0; i--) {
console.log(temp.pop());
}