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
相关产品推荐
相关产品推荐

