死循环
快速摘要
循环的退出条件永远不会满足,导致程序卡在循环里出不来,最终卡死或被强制终止。
为什么发生
循环变量没有正确更新,条件永远为真
循环条件写错,例如
while (i > 0)但i一直在增大浮点数累加误差导致条件永远达不到
最小示例
✗ 错误代码
let i = 0;
while (i < 10) {
console.log(i);
// 忘了 i++
}✓ 修复代码
let i = 0;
while (i < 10) {
console.log(i);
i++;
}循环体里忘了 i++,i 永远是 0,条件 i < 10 永远为真。补上 i++ 即可。
如何诊断
程序卡住或超时,怀疑是死循环
在循环体内打印循环变量,观察它是否在向退出条件靠近
检查循环条件和循环变量的更新语句是否正确
如何修复
确保循环变量在每次迭代中都向退出条件变化
修正循环条件,使其能在某个时刻变为假
作为兜底,加入最大迭代次数限制并主动
break
如何预防
写循环时先想清楚退出条件,再写循环体
对不确定的循环加最大迭代次数保护