我的功能无法重启的原因是什么?

What is the reason my function wont restart?

本文关键字:是什么 重启 功能 我的      更新时间:2023-09-26

一切都很好,但当我试图重新运行该功能时,它被卡在警报框上,我做错了什么,有人能解释为什么会发生这种情况吗?您可以查看代码中的注释,以查看出现此问题的区域

var userChoice = prompt("Do you choose rock, paper or scissors?");
 var computerChoice = Math.random();
    if (computerChoice < 0.34) {
            computerChoice = "rock";
        } else if(computerChoice <= 0.67) {
            computerChoice = "paper";
        } else {
            computerChoice = "scissors";
        } console.log("Computer: " + computerChoice);
        var compare = function(choice1,choice2){
            if (choice1 === choice2){
                return "The result is a tie!";
           }else if (choice1 === "rock"){
             if(choice2 === "scissors"){
                 return("rock wins");
             }else{
                return("paper wins");   
             }
           }else if (choice1 === "paper"){
                if(choice2 === "rock"){
                    return("paper wins");
                }else{
                    return("scissors wins");
                }
           }else if(choice1 === "scissors"){
               if(choice2 === "rock"){
                   return("rock wins");
               }else{
                   return("scissors wins");
               }
           }else if (choice1 != "rock"&&"paper"&&"scissors"){
                    alert("not a viable input,please try again");
                    compare(userChoice,computerChoice);
    //calling the function here makes the alert box repeatedly pop up
           }
        };
        compare(userChoice,computerChoice);

您可以设置一个标志并将所有内容放入while循环中。

var finished = false;
var compare = function (choice1, choice2) {
   if (choice1 === choice2) {
       finished = true;
       return "The result is a tie!";
   } else if (choice1 === "rock") {
       if (choice2 === "scissors") {
       finished = true;
       return ("rock wins");
    } else {
       finished = true;
       return ("paper wins");
    }
} else if (choice1 === "paper") {
    if (choice2 === "rock") {
        finished = true;
        return ("paper wins");
    } else {
        finished = true;
        return ("scissors wins");
    }
} else if (choice1 === "scissors") {
    if (choice2 === "rock") {
        finished = true;
        return ("rock wins");
    } else {
        finished = true;
        return ("scissors wins");
    }
} else if (choice1 != "rock" && "paper" && "scissors") {
    alert("not a viable input,please try again");
    finished = false;
    //compare(userChoice, computerChoice); This causes recursion. Not necessary.
}
};
while (!finished) {
   var userChoice = prompt("Do you choose rock, paper or scissors?");
   var computerChoice = Math.random();
if (computerChoice < 0.34) {
    computerChoice = "rock";
} else if (computerChoice <= 0.67) {
    computerChoice = "paper";
} else {
    computerChoice = "scissors";
}
console.log("Computer: " + computerChoice);
alert(compare(userChoice, computerChoice));
}

看看这个小提琴http://jsfiddle.net/7p94axhp/