如何使用while循环跳过指定值并解决无限循环问题
问题根因
代码运行异常的核心原因有两点:
- 无限循环:当变量
w等于12时,continue语句会直接跳过本次循环剩余的所有代码,位于判断分支后的w++自增逻辑永远不会被执行,w的值始终停留在12,循环终止条件w <= 15永远成立,无法退出循环。 - 逻辑顺序错误:原代码先执行
console.log(w)输出,再判断是否要跳过12,即使解决死循环问题,12也会被正常打印,不符合跳过该值输出的需求。
修正方案
调整循环内代码的执行顺序:将值判断逻辑移到输出语句之前,同时保证触发continue前一定会更新循环变量w,避免死循环。
修正后的核心脚本代码:
let w = 10; while (w <= 15) { if (w == 12) { w++; // 先更新循环变量,再跳过后续逻辑 continue; } console.log(w); w++; }
运行后控制台将按顺序输出10、11、13、14、15,完全符合需求。
如果想从写法上规避这类continue导致的死循环问题,更推荐使用for循环实现:for循环的自增表达式会在每次循环体执行结束(包括触发continue跳过剩余代码的场景)后自动执行,不会出现变量不更新的问题,代码更简洁:
for (let w = 10; w <= 15; w++) { if (w === 12) continue; console.log(w); }
内容的提问来源于stack exchange,提问作者user19361752
相关产品推荐
相关产品推荐

