有人可以解释我在这个JavaScript中的错误吗?

时间:2014-01-06 14:31:40

标签: javascript

真的很困惑,因为我没有错误,但我看不出我的代码中的哪一部分产生了这个:

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);

知道哪一点正在做吗?

干杯!

3 个答案:

答案 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")