为什么下面的代码会导致无限循环?
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
while (arr.length > 0) {
console.log(arr.shift());
arr.push(arr.shift());
}
最佳答案
循环中做的最后一件事是向数组添加一个项目,这意味着数组长度始终至少为 1。即,arr.length > 0
始终计算为 正确
。
编辑:添加示例以显示发生的情况。最终,当数组中没有任何内容时,arr.shift()
的计算结果为 undefined
,然后将 undefined
推回到数组中,使数组的长度为 1 个元素长。请参阅下面的控制台输出。
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let i = 0;
while (arr.length > 0 && i < 50) {
arr.shift();
arr.push(arr.shift());
console.log(arr);
i = i + 1;
}
关于javascript - 数组移出和插入时产生无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54256246/