我正在尝试使用javascript运行一个超级简单的程序,但我无法理解这个问题。好的,我的代码:
var answer = prompt("Are we there yet?");
while(answer != "yes" || answer != "yeah") {
var answer = prompt("Are we there yet?");
}
alert("Yes! We made it!");
问题是,当我在浏览器上运行此操作并键入"yes"
或"yeah"
时,除非我将逻辑运算符从OR(||
)更改为AND,否则提示方法会一直显示(&&
)。
不应该使用OR(||
)吗?我只是说这两个答案中的任何一个都没问题,警报可以运行吗?
我知道这是非常基本的东西,这可能是一个愚蠢的错误,但我只是一个初学者试图解决这个问题。
先谢谢。
答案 0 :(得分:5)
您的陈述
answer != "yes" || answer != "yeah"
如果第一个或第二个条件为真,则为真。在您的情况下,无论answer
中的文本如何,其中一个条件始终为真。例如:
answer="yes"
则第二个条件为真answer="yeah"
则第一个条件为真answer="whatever"
则两个条件均为真您需要使用的是&&
:
var answer = prompt("Are we there yet?");
while(answer != "yes" && answer != "yeah") {
var answer = prompt("Are we there yet?");
}
alert("Yes! We made it!");
只有满足两个条件时才会出现这种情况。例如:
answer="yes"
则第一个条件为假,第二个条件为真。总体结果是错误的,你离开了循环。answer="yeah"
则第一个条件为真且第二个条件为假。总体结果是错误的,你离开了循环。answer="whatever"
则两个条件都为真且循环重复。答案 1 :(得分:1)
实际上你的状况检查是错误的。
这是您的代码段
var answer = prompt("Are we there yet?");
while(answer != "yes" || answer != "yeah") {
var answer = prompt("Are we there yet?");
}
alert("Yes! We made it!");
在上面的代码片段中,条件将始终为true,无论是"是"或者"是的"。你用(||)OR运算符绑定两个条件检查。
(||)OR操作是: -
true || true = true
true || false = true
false || true = true
false || false = false
所以, (回答!="是)|| (回答!="是啊")总是要么你输入("是","是啊"或其他一些值)。
只有当条件返回false时,while循环才会中断,但在上面的情况下,它始终为true。所以它会创造无限循环。
试试这个: -
var answer = prompt("Are we there yet?");
while(answer != "yes" && answer != "yeah") {
var answer = prompt("Are we there yet?");
}
alert("Yes! We made it!");
由于(&&)AND操作行为,一旦在提示中给出任何值("是"或"是"),这将打破无限循环。
(&&)AND操作行为: -
true && false = false
false && true = false
false && false = false
true && true = true
一旦条件包含任何值,条件就会中断("是"或"是啊")
答案 2 :(得分:0)
它需要是一个“和”因为要获得循环,你需要答案既不是“是”也不是“是”。如果测试是为了平等而不是不平等,那么你可以使用“或”。
答案 3 :(得分:0)
为什么不用递归来做这件事,为了更容易理解的条件,JsFiddle
var answer = prompt("Are we there yet?");
func();
function func() {
if (answer == "yes" || answer == "yeah") {
alert("Yes! We made it!");
} else {
answer = prompt("Are we there yet?");
func();
}
}