循环条件必须在循环体内被修改且终将为false,否则会导致死循环;需避免依赖异步或外部不可控状态,并建议添加最大迭代次数作为保护机制。

关键在于循环条件必须能在循环体内被改变,且最终能变为 false。
确保循环变量在循环体内更新
while 循环只检查条件表达式,不会自动修改任何变量。如果循环变量(比如 i)始终不变,条件就永远成立。
- 错误写法:let i = 0; while (i —— i 没变,无限打印 0
- 正确写法:let i = 0; while (i —— 每次迭代后 i 增加 1,最终跳出
检查初始值和终止条件是否逻辑自洽
初始值与条件方向要匹配,否则循环一次都不会执行,或根本停不下来。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 比如 let i = 10; while (i > 0) { console.log(i); i-- } 是安全的;但若写成 i++ 就会一直增大,永不停止
- 再如 let str = "hello"; while (str.length > 0) { str = str.slice(1); } —— 字符串每次缩短,长度终将归零
避免在条件中依赖外部不可控状态
如果条件依赖异步操作、用户输入或全局变量,而这些没被及时更新,就容易卡住。
- 不要这样:while (!dataLoaded) { /* 等待 fetch 完成 */ } —— JS 是单线程,这会阻塞整个页面,fetch 永远没机会回调
- 应改用 Promise 或 async/await,或用事件监听代替轮询
调试时加保护性退出机制
开发阶段可加最大迭代次数,防止意外死循环拖垮浏览器。
- let i = 0; const max = 1000; while (i
- 一旦发现输出超过预期(比如刷屏),立刻检查变量变化路径
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










