JavaScript - Build "Rock, Paper, Scissors"


#1

Hello, I'm getting this error: SyntaxError: Unexpected token {

Here's the script.js

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 win";
}
}
else (choice1 === "scissors") {
if (choice2 === "rock") {
return "rock wins";
}
else {
return "scissors win";
}
}
};

compare(userChoice, computerChoice);


#2

Hi @metallicm,

Please see the code sample below, it is simply indented for viewing purposes.
You just had on tiny gremlin, you had an else in place of an else if.

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 win";
        }
    }
    else if (choice1 === "scissors") { //you need an else if here
        if (choice2 === "rock") {
            return "rock wins";
        }
        else {
            return "scissors win";
        }
    } 
};

compare(userChoice, computerChoice);

#3

Thanks for your timely reply. I know now that the else doesn't take any conditions AND we can execute code without it.