Javascript while循环条件

时间:2015-05-06 09:19:18

标签: javascript

以下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"); 
 } 

3 个答案:

答案 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

在您的情况下,假设playerChoicepaper,但在评估您的条件时playerChoice !=="rock"为真,并且因为您已使用||,如果任何条件为真,则循环将被执行

答案 2 :(得分:0)

你正在使用OR你应该使用的AND,无论是输入Rock,Paper还是Scissors,你的两个条件都将评估为TRUE,这样你就可以再次绕圈,又一次又一次......