JavaScript初学者遇到意外错误

JavaScript初学者遇到意外错误,javascript,Javascript,我通过代码学院学习JavaScript,目前正在创建一个简单的石头、布、剪刀游戏。然而,我被一条小错误消息难住了,它说有一个意想不到的关键字:else。我已经对这一小块代码进行了几十次的梳理,但似乎找不到错误,所以我想也许有一双新的眼睛可以发现我做错了什么 var compare = function(choice1, choice2) { if(choice1 === choice2) { return "The result is a tie!"; }

我通过代码学院学习JavaScript,目前正在创建一个简单的石头、布、剪刀游戏。然而,我被一条小错误消息难住了,它说有一个意想不到的关键字:else。我已经对这一小块代码进行了几十次的梳理,但似乎找不到错误,所以我想也许有一双新的眼睛可以发现我做错了什么

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 === "scissors");

请正常缩进代码。

不要在if表达式后加分号:

if (choice1 === "paper");
分号表示语句的结尾

另外,更好的编码方法是使用开关

switch (choice1) {
    case choice2:
        return "tie";
    case "rock":
        return choice2 === "scissors" ? "rock wins" : "paper wins";
    case "paper":
        return choice2 === "rock" ? "paper wins" : "scissors wins";
    case "scissors":
        return choice2 === "rock" ? "rock wins" : "scissors wins";
}
当您需要将一个变量与几个不同的值进行比较时,switch语句是一种很好的编码方式


返回选项2==“摇滚乐”?“石头赢”:“剪刀赢”;是一个计算choice2==“rock”的三元语句,如果为真,则返回“rock wins”,否则返回“剪刀赢”。

此外,在最终返回语句中,将全号改为分号。

顺便说一句,
返回“剪刀赢”时有一个输入错误:
应该以
结尾而不是:`。一旦你解决了当前的问题,它实际上也可能导致你的问题或另一个问题。