我不知道为什么这不起作用。如果我在提示符中输入"否",我会再次得到相同的提示,这意味着 do 循环再次执行,因为 while 语句返回 true。但是,根据我的逻辑,当给出答案"否"时,while 语句应返回 false 并结束 do 循环。当(答案 != "是")为真且(答案 != "否")为假时,具有一个真操作数和一个假操作数的 "and" 运算符不应该返回 false (true && false == false)吗?我在这里做错了什么?其他一切都有效。
do {
var answer = prompt("Do you want dinner? Yes or No.");
} while (answer != "Yes" && "No");
if (answer == "Yes") {
alert("Great, there is food in the fridge!"); }
else {
alert("Ok. I will ask again later."); }
while 条件是错误的。第二部分将永远是正确的。
试试这个:
while (answer != "Yes" && answer != "No");
function logAnswer(answer) {
console.log(answer != "Yes" && "No");
}
logAnswer("Wub") --> false && true --> false
logAnswer("Yes") --> false && true --> false
logAnswer("No") --> true && true --> true
&& "No"
会将字符串"No"评估为真实。应该对answer
有两个评价。就我个人而言,我认为OR运算符在这里可能会读得更好。
while (!(answer == "Yes" || answer == "No")) // OR operator
while (answer != "Yes" && answer != "No") // AND operator
您的状况表格是错误的。
do {
var answer = prompt("Do you want dinner? Yes or No.");
} while (answer != "Yes" && answer != "No");
if (answer == "Yes") {
alert("Great, there is food in the fridge!"); }
else {
alert("Ok. I will ask again later."); }
您必须在&&
的两边编写一个完整的测试。 "No"
将始终评估为true
.
while (answer != "Yes" && answer != "No")