You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS中while循环使用含continue的if条件时浏览器无法加载页面

问题根因

代码存在逻辑错误,触发了无限死循环,直接阻塞浏览器主线程,导致页面无法正常加载、热重载功能失效,和浏览器兼容性、continue关键字本身无关。

死循环触发逻辑

你的while循环执行流程存在漏洞:

  • 初始循环变量w = 10,循环判定规则为w <= 15时持续执行循环体
  • 循环体内先打印当前w值,再判断如果w == 13就执行continue
  • continue的核心作用是直接跳过当前循环剩余的所有代码,立刻跳转回循环条件判断位置,开启下一轮循环
  • 当w自增到13时,会触发if分支执行continue,分支后面的w++自增语句被直接跳过
  • 此时w的值永远停留在13,下一轮循环判定13 <= 15永远成立,会重复执行「打印13→触发continue→跳过自增」的流程,无限循环卡死线程。

为什么for循环没有问题

for循环的变量自增逻辑写在循环头部,哪怕循环体内触发continue,JS引擎也会先执行头部的自增表达式,再进入下一轮条件判断,不会出现循环变量不更新的情况,因此不会触发死循环。

修正方案

写while循环搭配continue时,必须保证所有触发continue的分支,都不会跳过循环控制变量的更新逻辑,两种常见正确写法如下:

  1. 在触发continue的分支内提前完成变量自增
let w = 10;
while(w<=15){
    console.log(w)
    if(w==13){
        w++; // 跳转下一轮前先更新变量值,避免卡死
        continue;
    }
    w++
};
  1. 把变量自增逻辑放到循环条件位置,从结构上避免漏写
let w = 10;
// 条件判断完成后立刻执行自增,不受循环体内continue影响
while(w <= 15){
    if(w == 13){
        w++;
        console.log('跳过值13')
        continue;
    }
    console.log(w)
    w++
};

额外提示:你提供的HTML代码存在结构不规范问题,<head>标签只能作为<html>的直接子元素,不能嵌套在<body>内部,该问题不会触发JS死循环,但不符合HTML编写规范,建议修正。

内容的提问来源于stack exchange,提问作者user19361752

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:03:25