【问题标题】:Forever Do While Loop Javascript永远做 While 循环 Javascript
【发布时间】:2021-11-18 03:26:00
【问题描述】:

这段代码不断循环。我正在使用 do..while 循环创建一个简单的密码检查器但是.. 它不断循环和循环任何帮助将不胜感激。谢谢

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

【问题讨论】:

  • 因为你没有做任何事情来停止循环,让它们相等,它会停止

标签: javascript loops passwords do-while


【解决方案1】:

这个:

password.toLowerCase() !== "jude" || "joel"

实际上并不是您认为的那样。它将始终计算为 true,因为 "joel" 在强制为布尔值时为 true(请参阅 TruthyFalsy 值)。

演示:

const str = "joel";

if (str) {
  console.log("true!");
} else {
  console.log("false!");
}

您必须再次进行比较:

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

由于您只检查小写密码是否相等(MikeM 指出),您也可以将提示转换为小写后的结果分配给password。这意味着我们只需要转换为小写一次:

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

或者更好的是,将有效密码存储在一个数组中并检查它是否包含密码:

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

【讨论】:

  • 我发现这里的 do while 在满足条件后仍在循环。我可以通过使用break; 一段时间来避免它。
  • 现在工作!我太专注于测试有效密码而没有意识到这是原因!谢谢!
【解决方案2】:

另一种避免 do while 的方法是使用带有 break; 的 while。

let password;
while (true) {
    password = prompt("Enter the code");
    if (["jude", "joel"].includes(password.toLowerCase())) {
        break;
    }
}

【讨论】:

    猜你喜欢
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多