Your code returned 'rock wins' instead of 'undefined' when the inputs are scissors and paper


#1

Hi could someone please help, I keep getting the error message "Your code returned 'rock wins' instead of 'undefined' when the inputs are scissors and paper". I have scanned my code over and over, as well as other threads.

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";
    }
};
compare(userChoice,computerChoice);

#2

@salemm101,

Have a close look at

if(choice2 === "rock");

For the execution of the compare-function
Please read
http://www.codecademy.com/forum_questions/559dcb4be39efe550f00006b
and concentrate on:

  • the creation of the compare function
  • the truth-table
  • the build of the IF ELSE-IF statement structure as part of the compare FUNCTION-BODY
  • the execution of the compare function (keeping in mind that the return statement is used )

#3

I would be keen to find an answer to this too as it keeps happening to me. I tried asking the Codecademy team online and they weren't sure either?!


#4

@leonhard.wettengmx.n
Already pointed out where it goes wrong. And here is an explanation why this semicolon may cause problems:

Also the error message isn't that useless as it tells you for which inputs you get an error or unexpected result.
Also consider using jsbeautifier.org or format the code to make it more readable.