JavaScript初学者遇到意外错误

时间:2016-09-17 18:12:00

标签: javascript

我通过代码学院学习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":
            }
    }


};

3 个答案:

答案 0 :(得分:3)

在那里删除分号:

else if (choice1 === "scissors");

请正常缩进你的代码。

答案 1 :(得分:1)

不要在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";
}

当您需要将变量与几个不同的值进行比较时,开关语句是一种很好的编码方式。

返回选择2 ===“摇滚”? “摇滚胜利”:“剪刀获胜”; 是一个三元语句,用于评估 choice2 ===“rock”,如果是,则返回“摇滚胜利”,否则,它将返回“剪刀胜利”

答案 2 :(得分:-1)

此外,在最终的return语句中将完整冒号更改为半冒号。