Javascript Can';t退出do while循环
我正在制作一个简单的石头、布、剪刀,我可以通过浏览器控制台玩。使用do/while循环,我会提示选择三个可接受的选项之一“石头”、“布”或“剪刀”。只要玩家输入这3个可接受选项中的一个,do/while循环就会终止。问题是它没有Javascript Can';t退出do while循环,javascript,loops,infinite-loop,do-while,Javascript,Loops,Infinite Loop,Do While,我正在制作一个简单的石头、布、剪刀,我可以通过浏览器控制台玩。使用do/while循环,我会提示选择三个可接受的选项之一“石头”、“布”或“剪刀”。只要玩家输入这3个可接受选项中的一个,do/while循环就会终止。问题是它没有 function playerPlay(){ let choice; do{ choice = prompt("Rock, paper or scissors?").toLowerCase(); console
function playerPlay(){
let choice;
do{
choice = prompt("Rock, paper or scissors?").toLowerCase();
console.log(choice);
console.log(choice !== "rock" || choice !== "paper" || choice !== "scissors");
console.log(choice === "rock" || choice === "paper" || choice === "scissors");
} while (choice !== "rock" || choice !== "paper" || choice !== "scissors");
return choice;
}
playerPlay();
我一直在尝试使用console.log进行调试,但发现播放器提示的选择似乎工作正常(请参见下面的屏幕截图),而且:
while(choice!=“rock”| | choice!=“paper”| | choice!=“剪刀”)
你的条件总是正确的,因为价值不是石头,不是纸,也不是石头,因为它不可能都是石头。用&&代替| |。while(选项!=“石头”| |选项!=“纸”| |选项!=“剪刀”)
你的条件总是正确的,因为价值不是石头,不是纸,也不是石头,因为它不可能都是石头。请使用&&而不是| |。您应该使用
&&
运算符而不是|
运算符
i、 而不是这个
while (choice !== "rock" || choice !== "paper" || choice !== "scissors");
用这个
while (choice !== "rock" && choice !== "paper" && choice !== "scissors");
这样做的原因是,如果
choice
采用任何值[rock
,paper
,剪刀
],我们希望程序退出。在|
运算符中,如果任何条件的计算结果为真,则循环将继续;在&&
运算符中,如果任何条件的计算结果为假,则循环将退出。因此,如果choice取了列出的任何一个值,则条件将计算为false,然后整个条件将计算为false。您应该使用&&
运算符,而不是|
运算符
i、 而不是这个
while (choice !== "rock" || choice !== "paper" || choice !== "scissors");
用这个
while (choice !== "rock" && choice !== "paper" && choice !== "scissors");
这样做的原因是,如果
choice
采用任何值[rock
,paper
,剪刀
],我们希望程序退出。在|
运算符中,如果任何条件的计算结果为真,则循环将继续;在&&
运算符中,如果任何条件的计算结果为假,则循环将退出。因此,如果choice接受列出的任何值,则条件将计算为false,然后整个条件将计算为false。问题在于while条件,您的程序将在while循环上堆叠,直到他获得false条件
while (choice !== "rock" || choice !== "paper" || choice !== "scissors")
使用| |(OR)逻辑运算符,您将在无限循环中进行堆栈。
您需要做的是更改为&(AND)运算符,如下所示:
while (choice !== "rock" && choice !== "paper" && choice !== "scissors")
问题是在while条件下,您的程序将堆栈在while循环上,直到他得到一个false条件
while (choice !== "rock" || choice !== "paper" || choice !== "scissors")
使用| |(OR)逻辑运算符,您将在无限循环中进行堆栈。
您需要做的是更改为&(AND)运算符,如下所示:
while (choice !== "rock" && choice !== "paper" && choice !== "scissors")
您无法提供满足退出条件的输入。如果
选项
是“石头”
,那么它将不是“纸”
或“剪刀”
,因此或通过。您想要&&
取而代之-您想要在没有选择的情况下重复循环。或者while([“石头”、“布”、“剪刀”].indexOf(选择)<0)
如果你想获得“花式”。使用更新的方法,例如![“石头”、“布”、“剪刀”]。包括(选项)
,而不是。indexOf(选项)<0
的可读性稍好。您无法提供满足退出条件的输入。如果选项
是“石头”
,那么它将不是“纸”
或“剪刀”
,因此或通过。您想要&&
取而代之-您想要在没有选择的情况下重复循环。或者while([“石头”、“布”、“剪刀”].indexOf(选择)<0)
如果你想获得“花式”。使用更新的方法,例如![“石头”、“布”、“剪刀”]。包括(选项)
,而不是。indexOf(选项)<0
更便于阅读