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

JavaScript do while循环无限执行:密码校验器持续死循环如何解决?

问题根因

你的代码出现无限循环的核心问题是while后的判断逻辑存在两处语法+逻辑错误:

  • 条件中|| "joel"属于不完整判断:非空字符串在JavaScript的布尔隐式转换中结果为true,因此无论你输入什么内容,整个循环条件最终都会返回true,循环永远不会终止。
  • 逻辑运算符使用错误:你需要实现的是「输入既不是jude也不是joel时继续循环」,对应的逻辑运算符应该是&&(逻辑与),而非||(逻辑或)。如果使用逻辑或,即便你输入了正确的其中一个密码,也会因为不符合另一个密码的判断导致条件仍然成立,循环继续。

修正后代码

{
  let password;
  do {
    password = prompt("Enter the code");
  } while (password.toLowerCase() !== "jude" && password.toLowerCase() !== "joel");
}

更易维护的写法

如果后续需要增加更多有效密码,可以用数组的includes方法简化判断逻辑,避免重复写判断条件:

{
  let password;
  const validPasswords = ["jude", "joel"];
  do {
    password = prompt("Enter the code");
  } while (!validPasswords.includes(password.toLowerCase()));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:00:00