2016-05-09 77 views
0

我可以用var computerChoice = Math.random();做到这一点......并将该变量转换为石头,纸张或剪刀......但现在我无法获得变量“优胜者”来更改,以便打印出结果。它只是打印出'未定义'。帮帮我?更改JavaScript变量的功能?

var choice1 = userChoice; 
var choice2 = computerChoice; 


var winner = "undefined"; 


var compare = function (choice1, choice2) {//start function 

    if (choice1 === choice2) { 
     winner = "Tie game!"; 


    } else if (choice1 === "rock") { 
     if (choice2 === "scissors") { 
      winner = "rock wins"; 
     } else { 
      winner = "paper wins"; 
     } 
    } else if (choice1 === "paper") { 
     if (choice2 === "rock") { 
      winner = "paper wins"; 
     } else { 
      winner = "scissors wins"; 
     } 
    } else { 
     if (choice2 === "paper") { 
      winner = "scissors wins"; 
     } else { 
      winner = "rock wins"; 
     } 
    } 

}//end function 


confirm("You chose: " + userChoice + "\nSystem: " + computerChoice + "\nOutcome: " + winner); 


compare(userChoice,computerChoice); 

</script> 
+1

您必须在调用'confirm'之前调用'compare'更好。 –

+0

请使用开关,而不是ifs它会使您的代码更容易阅读 – Dalorzo

回答

2

这是因为在显示它之前没有改变它。致电compare之前您致电confirm,因为compare是更改winner的功能。

compare(userChoice, computerChoice); 
confirm("You chose: " + userChoice + "\nSystem: " + computerChoice + "\nOutcome: " + winner); 
0

您应该改变函数调用的顺序。

compare(userChoice,computerChoice); 
confirm("You chose: " + userChoice + "\nSystem: " + computerChoice + "\nOutcome: " + winner); 
0

你可以把“确认”的“比较”功能块内,并删除所有这些全局变量

选择1,userChoice的; choice2,computerChoice;

 var compare = function (choice1, choice2) {//start function 

     var winner; //you don't need to specify 'undefined' 

     if (choice1 === choice2) { 
      winner = "Tie game!"; 


     } else if (choice1 === "rock") { 
      if (choice2 === "scissors") { 
       winner = "rock wins"; 
      } else { 
       winner = "paper wins"; 
      } 
     } else if (choice1 === "paper") { 
      if (choice2 === "rock") { 
       winner = "paper wins"; 
      } else { 
       winner = "scissors wins"; 
      } 
     } else { 
      if (choice2 === "paper") { 
       winner = "scissors wins"; 
      } else { 
       winner = "rock wins"; 
      } 
     } 

confirm("You chose: " + choice1+ "\nSystem: " + choice2+ "\nOutcome: " + winner); 

    }//end function 

请记住您的变量当地人的范围比全局