You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无限循环输出数组元素时首元素仅首次出现?

问题原因分析

你的代码之所以首次遍历后不再输出第一个元素,核心是没搞清楚for循环的完整执行顺序:

先看你的代码:

li = [1, 2, 3, 4, 5]
for (i=0; i<li.length; i++) {
  console.log(li[i])
  if (i+1 == li.length) {
    i = 0
  }
}

for循环的执行流程是固定的四步循环:

    1. 初始化变量(仅第一次执行)
    1. 判断i < li.length,成立则进入循环体
    1. 执行循环体内的所有代码
    1. 执行循环头的i++,然后回到步骤2

对应你的代码执行细节:

  • 第一次遍历到i=4时,打印5,此时触发if条件,把i手动设为0
  • 循环体执行完后,for循环会自动执行i++,i直接变成1
  • 下一次循环从i=1开始,打印2;之后每次循环到i=4时,你把i设为0,紧接着又会执行i++变成1,永远跳不到i=0的状态,自然不会再输出1

要修复的话,只需要把i设为-1,这样执行i++后i刚好变成0,下一次循环就能输出1:

li = [1, 2, 3, 4, 5]
for (i=0; i<li.length; i++) {
  console.log(li[i])
  if (i+1 == li.length) {
    i = -1
  }
}

内容的提问来源于stack exchange,提问作者Abraam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 16:25:01