'And' 似乎在 'true and false' 时返回 'true'(当答案 == b 时,答案 != a && b 返回 true)

  • 本文关键字:true 答案 返回 And and false javascript
  • 更新时间 :
  • 英文 :


我不知道为什么这不起作用。如果我在提示符中输入"否",我会再次得到相同的提示,这意味着 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")

最新更新