在另一个函数内调用函数

时间:2015-09-10 20:16:08

标签: javascript

我试图在playFiveTimes函数中调用getWinner函数,每次我尝试测试我的代码时都会给出一个错误,上面写着:“playerMove undefined”或者如果我尝试输入“rock”它会说是未定义的同样。在这一点上我完全迷失了。任何帮助将不胜感激。

'use strict';

function getInput() {
  console.log("Please choose either 'rock', 'paper', or 'scissors'.")
  return prompt();
}

function randomPlay() {
  var randomNumber = Math.random();
  if (randomNumber < 0.33) {
    return "rock";
  } else if (randomNumber < 0.66) {
    return "paper";
  } else {
    return "scissors";
  }
}

function getPlayerMove(move) {
  if (!move) {
    move = getInput();
  }
  return move;
}

function getComputerMove(move) {
  if (!move) {
    move = getInput();
  }
  return move;
}

function getWinner(playerMove, computerMove) {
  var winner;
  if (playerMove === computerMove) {
    return ("It's a tie!");
  } else if (playerMove === "rock") {
    if (computerMove === "paper") {
      return "paper wins";
    } else {
      return "rock wins";
    }
  } else if (playerMove === "paper") {
    if (computerMove === "rock") {
      return "paper wins";
    } else {
      return "scissors wins";
    }
  } else if (playerMove === "scissors") {
    if (computerMove === "paper") {
      return "scissors wins";
    } else {
      return "rock wins";
    }
  }
  return winner;
}

function playToFive() {
  console.log("Let's play Rock, Paper, Scissors");
  var playerWins = 0;
  var computerWins = 0;
  // Write code that plays 'Rock, Paper, Scissors' until either the player or the computer has won five times.
  while ((playerWins < 5) && (computerWins < 5)) {
    getWinner();
    if (playerWins) {
      playerWins += 1
    } else {
      computerWins += 1
    }
  }

  console.log("Player chose " + playerMove + " while computer chose " + computerMove);
  console.log("The score is currently " + playerWins + " to " + computerWins + "\n");
  return [playerWins, computerWins];
}
console.log(playToFive());

3 个答案:

答案 0 :(得分:0)

您正在调用没有参数的函数。它需要两个参数,如您所指定的function getWinner(playerMove, computerMove) {...}。因此,在函数调用中提供两个参数,即getWinner('rock', 'paper')。该程序只做你所说的。您无法在没有参数的情况下调用getWinner()并期望得到结果。

其次,同一函数中的变量winner没有用处。你根本不使用它,除非在没有赢家的情况下返回它。这是违反直觉的。

第三,您永远不会在playerMove函数中定义computerMoveplayToFive(),也不会为它们分配值。

调试和检查代码有助于您轻松地了解这些事实。

答案 1 :(得分:0)

您的脚本在此行崩溃:

console.log("Player chose " + playerMove + " while computer chose " + computerMove);

在你的playToFive()函数中,因为playerMovecomputerMove变量是未定义的,但你试图将它强制转换为字符串。您需要在使用之前定义变量。

这就是“playerMove undefined”错误的原因,但你也应该检查你的程序的逻辑,就像之前Brett和Ivern所说的那样

答案 2 :(得分:-2)

我认为BIGGEST错误在函数内部执行函数,请尝试:

if(playerMove ===“rock”)| (computerMove ===“paper”){       返回“纸胜”; }

我可能有用的东西。 “|”意思是,你可能知道,但我不确定