我的javascript比较函数的语法有问题

时间:2013-05-28 23:32:32

标签: javascript function compare syntax-error

我已经包含了我今天制作的codeacademy错误的截图图片。我正在尝试创建一个比较函数,随机选择0到1之间的数字(纸张,剪刀或摇滚),输入两个选项并根据choice1与choice2的比较返回获胜者。

第一部分是评论,但它解释了原始剪纸摇滚功能是如何构建的

以下是代码:

/*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 line)

当我擦除else部分时,它给了我另一个语法错误,说明了令牌的相同内容。我停留在语法的哪一部分关闭以及如何解决它。

3 个答案:

答案 0 :(得分: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"));

答案 1 :(得分: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");
    }

  }
};

修改
这只是为了帮助你克服分号的混淆,如果有的话。通常,函数定义不需要在其主体完成后通过放置最后一个大括号;来获得}

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

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

var name = "John Doe";

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

var compare = function (choice2, choice2) {
    // ...
};

答案 2 :(得分: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";
    }
  }
}