0

我已经包含了我今天犯的 codeacademy 错误的屏幕截图。我正在尝试创建一个比较函数,该函数随机选择一个介于 0 和 1 之间的数字(纸、剪刀或石头),该数字输入两个选项并根据选项 1 与选项 2 的比较返回获胜者。

第一部分是评论,但它解释了原始的剪刀石头功能是如何构建的

这是代码:

/*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";
}*/

var compare = function (choice1, choice2) {if (choice1 === choice2) return("The result is a tie!");  
if (choice1 < 0.34) 
if(choice2 ==="scissors");
    return("rock wins");
} else if(choice2 ==="paper");{
    return("paper wins");
};    
};

它告诉我第 15 行(else if 行)有一个意外的标记 else

当我删除 else 部分时,它给了我另一个语法错误,说明关于令牌 if 的相同内容。我被困在我的语法的哪一部分是关闭的以及如何修复它上。

4

3 回答 3

0

检查下面关于分号相关错误的评论。

var compare = function (choice1, choice2) {
  if (choice1 === choice2) return("The result is a tie!");  

  if (choice1 < 0.34) {

    if(choice2 === "scissors") { // remove ; here
      return("rock wins");
    } else if (choice2 === "paper") { // remove ; here
      return("paper wins");
    } // remove ; here

  } // add another else => what happens when choice1 >= 0.34 (not a rock)
};

使用所需的else块,完整的功能将如下所示:

var compare = function (choice1, choice2) {
  if (choice1 === choice2) return("The result is a tie!");  

  if (choice1 < 0.34) { // rock

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

  } else if (choice <= 0.67) { // paper

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

  } else { // scissors

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

  }
};

编辑
这只是为了帮助您克服对分号的混淆(如果有的话)。;通常,通过放置最后一个右花括号,函数定义不需要在其主体完成后具有 a}

function compare (choice1, choice2) {
  // ...
}

相反,当我们为变量赋值时,语句以分号结束。

var name = "John Doe";

因此,当我们将两者结合起来时,我们定义了一个函数,然后在需要使用分号关闭的赋值语句中使用它。因此,语法:

var compare = function (choice2, choice2) {
    // ...
};
于 2013-05-28T23:54:20.920 回答
0
function compare(choice1, choice2) {
  if (choice1 === choice2) {
    return "The result is a tie!";
  }

  if (choice1 < 0.34) {
    if (choice2 === "scissors") {
      return "rock wins";
    } else if (choice2 === "paper") {
      return "paper wins";
    }
  }
}
于 2013-05-28T23:55:56.637 回答
0

我有一种感觉,这与===陈述;有关if(),无论哪种方式,这是比较它们的更好方法。

function compare(a,b)
{
    if(a==b)return "draw";
    switch(a)
    {
        case "rock":return (b=="scissors"?a:b)+" wins";
        case "paper":return (b=="rock"?a:b)+" wins";
        case "scissors":return (b=="paper"?a:b)+" wins";
    }
}
console.log(compare("scissors","paper"));
于 2013-05-28T23:45:37.990 回答