真的很困惑,因为我没有错误,但我看不出我的代码中的哪一部分产生了这个:
rock
scissors
"scissors wins"
我已经完成了一个console.log来查看结果,所以我知道这是错误的部分,但我现在不记得我的代码中的位置。
代码是:
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(userChoice);
console.log(computerChoice);
var compare = function(choice1,choice2) {
if (choice1 === choice2) {
return "The result is a tie!";
}
if (choice1 === "paper");
{
if (choice2 === "rock")
{
return "paper wins";
}
else (choice2 === "scissors")
{
return "scissors wins";
}
}
if (choice1 === "scissors");
{
if (choice2 === "rock")
{
return "rock wins";
}
else (choice2 === "paper")
{
return "scissors wins";
}
}
if (choice1 === "rock");
{
if (choice2 === "scissors")
{
return "rock wins";
}
else (choice2 === "paper")
{
return "paper wins";
}
}
};
compare(userChoice,computerChoice);
知道哪一点正在做吗?
干杯!
答案 0 :(得分:3)
if (choice1 === "paper");
由于分号,始终输入下一个块
{
if (choice2 === "rock")
{
return "paper wins";
}
在这里你有else
而不是else if
,所以它会忽略条件并返回“剪刀胜利”
else (choice2 === "scissors")
{
return "scissors wins";
}
}
答案 1 :(得分:2)
如果不需要分号,你已经在几个地方完成了这项工作
if (choice1 === "paper"); // <--
答案 2 :(得分:0)
你将;
放在if
之后,你不应该。
如果您放置;
,那么if
的范围在条件之后结束,之后执行剩余的代码,就像它只是一个范围定义一样。
if (choice1 === "paper");
应该是
if (choice1 === "paper")