javascript - 数组移出和插入时产生无限循环

标签 javascript arrays infinite-loop

为什么下面的代码会导致无限循环?

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/

相关文章:

java - 二维数组,查找数组中重复次数最多的数字

python退出无限while循环并出现KeyboardInterrupt异常

c++ - 在c++中读取文件时fstream无限循环

javascript - 使用 .prototype 和 __proto__ 创建子类

javascript - 运行音频可以在桌面上运行,但不能在移动设备上运行

Ruby Koans about_array_assignment - 非平行与平行分配歧视

c - 为什么 goto 'label' 会重复 'label:' 之前的语句?

javascript - 从快速服务器传递变量以 react 应用程序

javascript - Defer 没有更快地加载页面

c - Pthreads数组 block 分布