while循环适用于重复次数不确定的任务,先判断条件再执行,需确保条件动态变化以避免死循环,常见于读取用户输入、处理队列及简单轮询等场景。

当任务重复次数不确定时,while 循环是最直接的选择:它先判断条件,条件为真就执行循环体,反复检查直到条件不成立为止。
核心写法:先判断,再执行
语法很简单:
while (条件表达式) {
// 条件为 true 时执行的代码
// 必须在循环体内修改影响条件的变量,否则容易死循环
}
关键点:条件必须动态变化,否则会无限运行。比如用 i++、arr.pop()、input !== 'quit' 等让条件最终变为 false。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
常见适用场景与写法
-
读取用户输入直到满足要求
比如让用户不断输入数字,直到输入负数才停止:
let input; while (input === undefined || input >= 0) { input = parseInt(prompt("请输入一个数字(输入负数退出)")); } console.log("退出循环,输入的是:" + input); -
处理数组或队列,直到清空
不关心长度,只关心“还有没有”:
const queue = [1, 2, 3, 4]; while (queue.length > 0) { const item = queue.shift(); // 每次移除第一个 console.log("处理:" + item); } -
等待某个异步状态就绪(配合简单轮询)
注意:实际项目中更推荐用事件或 Promise,但简单脚本中可临时用:
let dataReady = false; while (!dataReady) { if (window.myData && window.myData.loaded) { dataReady = true; } else { // 小暂停避免卡死(仅示例,生产环境慎用) await new Promise(r => setTimeout(r, 10)); } }
避坑提醒
- 忘记更新循环变量 → 死循环(最常见错误)
- 条件初始即为 false → 循环体一次都不执行(这是正常行为,不是 bug)
- 在循环中修改了被判断的值但逻辑有误 → 循环提前退出或卡住
- 用 while 处理已知长度的数组(如
for (let i = 0; i )→ 虽然能用,但不如 for 清晰,不推荐
和 do...while 的区别
while 是「先判后做」,do...while 是「先做后判」——后者至少执行一次。如果任务必须至少运行一遍(比如首次确认操作),选 do...while;否则优先用 while。
立即学习“Java免费学习笔记(深入)”;

















