Javascript “And”在“true And false”时显示为返回“true”(当answer==b时,answer!=a&&b返回true)

Javascript “And”在“true And false”时显示为返回“true”(当answer==b时,answer!=a&&b返回true),javascript,Javascript,我不明白为什么这不起作用。如果在提示中输入No,则会再次收到相同的提示,这意味着do循环会再次执行,因为while语句返回true。然而,根据我的逻辑,当回答No时,while语句应该返回false并结束do循环。什么时候回答!=是的,回答正确!=No为false,具有一个真操作数和一个假操作数的and运算符不应该返回false true&&false==false吗?我这里出了什么错?其他一切都可以 do { var answer = prompt("Do you want dinner?

我不明白为什么这不起作用。如果在提示中输入No,则会再次收到相同的提示,这意味着do循环会再次执行,因为while语句返回true。然而,根据我的逻辑,当回答No时,while语句应该返回false并结束do循环。什么时候回答!=是的,回答正确!=No为false,具有一个真操作数和一个假操作数的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");
&&No将把字符串No计算为truthy。答案应该有两个评估。就我个人而言,我认为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."); }

您必须在&&的两侧编写一个完整的测试。“否”将始终评估为“真”


是和否有什么作用?@PHPglue否,回答!=当答案为“是”或“否”时,Yes&&No的计算结果为false@PHPglue这也是我的想法。但在实践中,当答案为“是”时,它的计算结果似乎为false,但当答案为“否”时,它的计算结果为true&&运算符不能用于列出替代值以根据!=。您的while条件回答!=Yes&&No就像回答!=Yes&&No.@Jordan Yes&&No的计算结果为No,但您的代码不包含Yes&&No作为子表达式,只包含answer!=是&否。
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."); }
while (answer != "Yes" && answer != "No")