以下JavaScript代码为何陷入无限循环?如何修复该问题
问题分析与修复方案
无限循环原因
- 每次进入
for(;;)循环时,都会重新执行let i = index,导致i始终被初始化为10,完全没在上一次循环的结果基础上递减。 - 执行
i -= jump后,i的值变为8,此时判断i === jump(也就是8等于2)永远不成立,break语句永远不会触发,循环会一直无限运行。
修复方案
把i的初始化语句移到循环外部,让它能在每次循环中持续递减:
let index = 10; let jump = 2; // 将i的初始化放到循环外,确保每次循环基于上一次的结果更新 let i = index; for (;;) { console.log(i); i -= jump; if (i === jump) { break; } }
修复后,i会从10开始,每次减2:10 → 8 → 6 → 4 → 2,当i等于jump(2)时,触发break终止循环,不会再无限运行。
内容的提问来源于stack exchange,提问作者Mohammed
相关产品推荐
相关产品推荐

