0

今日作成した codeacademy エラーのスクリーンショット画像を含めました。2 つの選択肢を入力し、choice1 と choice2 の比較に基づいて勝者を返す、0 と 1 (紙、はさみ、または石) の間の数字をランダムに選択する比較関数を作成しようとしています。

最初の部分はコメントですが、元の紙はさみロック機能がどのように構築されたかを説明しています

コードは次のとおりです。

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

  }
};

編集
これは、セミコロンに関する混乱を克服するのに役立つだけです。通常、関数定義は;、最後の閉じ中かっこを置くことによって本体が完成した後}

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

逆に、変数に値を代入する場合、ステートメントはセミコロンで終了します。

var name = "John Doe";

したがって、2 つを組み合わせると、関数を定義し、それをセミコロンを使用して閉じる必要がある代入ステートメントで使用します。したがって、構文は次のとおりです。

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 に答える