【发布时间】:2016-04-06 17:06:57
【问题描述】:
我正在尝试了解 js 中的 do/while 循环和逻辑运算符。我的问题是当将 if/else if/else 语句嵌入到 do 部分时,它会不断循环警报。此外,如果我键入除了罕见、中等或完全完成之外的任何内容,它会进入 else if 语句而不是 else 语句,即使我已经为 else if 语句指定了中等或完全完成。我哪里错了?任何帮助将不胜感激。
谢谢。
var food;
var steak;
food = prompt("Hey what type of food do you want to eat? We have steak, chicken, legumes, kangaroo or pufferfish?","Select your choice here.").toUpperCase();
switch (food) {
case 'STEAK':
alert ("Sure no problem, how would you like your steak done?");
steak = prompt("Would you like your steak done rare, medium or well-done?").toUpperCase();
do {
if (steak === "RARE") {
alert ("You eat the rare steak");
}
else if (steak === "MEDIUM"||"WELL-DONE") {
alert("You eat your steak and it's good.");
}
else {
alert("Sorry didn't catch that.");
steak = prompt("Choose rare, medium or well-done.");
}
} while (steak !== "RARE" || "MEDIUM" || "WELL-DONE");
break;
}
【问题讨论】:
-
if (steak === "MEDIUM"||"WELL-DONE")这样的语法在 JavaScript 中是行不通的。您必须单独进行每个比较。例如。if (steak === "MEDIUM" || steak === "WELL-DONE") -
@j08691 已经指出了您需要如何进行比较。无限循环的原因是
"any string"是真实的,即。比较与while (steak !== "RARE" || true || true)相同,这始终是正确的。
标签: javascript infinite-loop do-while