以下javascript片段进入无限循环。这是为什么?
var playerChoice=prompt("Choose paper or rock or scissors");
while (playerChoice !=="paper" || playerChoice !=="rock" || playerChoice !== "scissors"){
playerChoice=prompt("Choose paper or rock or scissors");
}
答案 0 :(得分:4)
因为当做出新选择时,它将始终匹配至少两个条件,并且由于您已使用OR (||
) operator,因此将继续循环。您需要使用AND (&&
) operator代替:
var playerChoice=prompt("Choose paper or rock or scissors");
while (playerChoice !=="paper" && playerChoice !=="rock" && playerChoice !== "scissors"){
playerChoice=prompt("Choose paper or rock or scissors");
}
现在当做出有效选择时,仍然满足3个内部条件中的两个,但由于最后一个条件不符合,因此整个条件将评估为false
并且循环将不会执行。
答案 1 :(得分:2)
您需要使用&&
。如果选择是有效选择之一,则需要退出循环
while (playerChoice != "paper" && playerChoice != "rock" && playerChoice != "scissors") {
playerChoice = prompt("Choose paper or rock or scissors");
}
演示:Fiddle
在您的情况下,假设playerChoice
为paper
,但在评估您的条件时playerChoice !=="rock"
为真,并且因为您已使用||
,如果任何条件为真,则循环将被执行
答案 2 :(得分:0)
你正在使用OR你应该使用的AND,无论是输入Rock,Paper还是Scissors,你的两个条件都将评估为TRUE,这样你就可以再次绕圈,又一次又一次......