【问题标题】:Javascript Syntax Error - if/else statementJavascript 语法错误 - if/else 语句
【发布时间】:2014-05-31 09:25:21
【问题描述】:

这是我的第一个问题,如果我的问题没有清楚地显示出来,我们深表歉意。我收到 if/else 语句的“else”部分的错误消息。我在出现错误的行的右侧评论了大约一半的代码。不知道语法有什么问题。

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("Computer: " + computerChoice);
var compare = function(choice1, choice2) {
 if(choice1 === choice2) 
 return "The result is a tie!";
};
else if(choice1==="rock")  //GETTING ERROR MESSAGE
     if(choice2==="scissors");
         {return "rock wins";
     }
     else {
         return"paper wins";  //GETTING ERROR MESSAGE
     }
}
else if(choice1==="paper") {   //GETTING ERROR MESSAGE
     if(choice2==="rock"); 
     {
    return "paper wins";
     }
     else {
     return "scissors wins";
     }
}
 else if(choice1==="scissors") {
      if(choice2==="paper")
      return "scissors wins";
 }
      else {
     return "rock wins" }
     }

【问题讨论】:

  • 看起来你在第一个 else if 之后缺少一个 {
  • 控制台会告诉你语法是否有问题
  • @Mr.Alien “我收到错误消息”有点暗示 OP 已经知道控制台。
  • 变量choose1 和choose2 在当前上下文中不存在。您已经关闭了错误前一行的函数。移动 ”;”最后。
  • @Juhana 比他缺乏关于这些错误的研究信息,据我所知,与 PHP 错误相比,JavaScript 错误太友好了 :)

标签: javascript if-statement syntax


【解决方案1】:

您的代码散落有语法和结构错误。例如,这个:

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

您在变量中声明了一个函数,然后在该声明后面加上else 块。 else 块需要跟随 if 块。您不能只开始else 声明语句。从语法上到逻辑上,这毫无意义。它应该是该函数中if 块的一部分吗?那你为什么关闭这个功能?这将破坏它之后的几乎所有东西。

或者这个:

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

为什么if 条件句后面有分号?

我敢打赌,这些花括号也不会在整个代码中正确排列。您肯定希望缩进您的代码以使其更具人类可读性,以便您可以遵循您正在创建的结构。分号终止语句,不要把它们放在任何地方。和if/else 块成对出现。

逐步了解您试图表达和构建的逻辑。这段代码非常不清楚你想要做什么。

【讨论】:

  • “你声明了一个函数……”不,这是一个函数表达式。 :-)
  • @RobG:好吧,也许我的术语已经关闭了。它是一个函数,它只是一个存储在变量中而不是明确声明的函数。我知道的唯一区别是提升。但是compare后面的语句是一个可执行函数。