不确定为什么这似乎仅适用于回复"是"(或"是" /"是") - 任何帮助将不胜感激。对此很新!
var yesNo = window.prompt("Are you from Earth?");
var lowerYesNo = yesNo.toLowerCase();
while (lowerYesNo != ("yes" || "no")){
yesNo = window.prompt("Please answer with \"Yes\" or \"No\". Are you from Earth?");
lowerYesNo = yesNo.toLowerCase();
}
switch (lowerYesNo){
case "yes":
window.alert("I thought so!");
break;
case "no":
window.alert("Capture the alien!!!");
break;
default:
window.alert("I don't know how you got this to display!");
}
答案 0 :(得分:2)
"yes" || "no"
返回“yes”,因为它是一个“truthy”值,因此返回||
的第一个操作数。
如果要与两个值进行比较,则需要将其拆分为两个单独的比较:
while (lowerYesNo != "yes" && lowerYesNo != "no")) {
//...
答案 1 :(得分:0)
正确的写作方式是
while (lowerYesNo !== 'yes' && lowerYesNo !== 'no') {
// ...
}
答案 2 :(得分:0)
答案 3 :(得分:0)
你可能想做的是:
while (!(lowerYesNo == "yes" || lowerYesNo == "no")){
...
与
相同while (lowerYesNo != "yes" && lowerYesNo != "no"){
...
同时,请注意:
(x || y) // this expression will return x, if x is truthy otherwise y
和
(x && y) // this expression will return x, if x is falsy, otherwise it returns y
因此,你问题中的循环等同于:
while (lowerYesNo != "yes"){
... // you must say "yes" else you're stuck in here.
}
答案 4 :(得分:-1)
是的它可以,但它需要是一个完整的表达
while( expression1 || expression2)
所以在你的情况下,它将是
while (lowerYesNo != "yes" || lowerYesNo != "no")
虽然在这种情况下已经指出过你可能想要使用&&,因为你只是在尝试打印消息时(不是,而不是否)
答案 5 :(得分:-1)
因为评价表达式
"yes" || "no"
结果
"yes"
根据javascript规则评估"或"操作