我正在尝试运行此功能,直到玩家或计算机赢得 5 次为止。如果没有 while 循环,它会运行一次并且一切正常。一旦我添加了一个 while 循环,该函数仍然只运行一次,它给我一个未定义的返回。

function playToFive() {
  console.log('Let\'s play Rock Paper Scissors');
  var playerWins = 0;
  var computerWins = 0;
  while (playerWins === 5 || computerWins === 5) {
    if (humanVsMachine === 'player') {
      playerWins += 1;
    } else if (humanVsMachine === 'computer') {
      computerWins += 1;
    }
    return [playerWins, computerWins];
  }
}

console.log(playToFive());

最佳答案

while(playerWins === 5 || computerWins === 5)

您的 while 循环实际上永远不会执行,因为您正在检查相等性并且 playerWinscomputerWins 最初都是 0

您可能正在寻找更像这样的条件:
while(playerWins < 5 && computerWins < 5)

请注意,我们使用的是逻辑 AND && 而不是逻辑 OR || 。这是因为你不想一直循环直到他们都赢了。逻辑 OR 意味着即使计算机赢了而玩家没有赢,我们也会继续循环。只有其中一个条件需要为真,整个语句才能为真。

当我们使用逻辑 AND 时,如果其中一个为假(意思是,如果只有一个玩家已经赢得了 5 场胜利),那么我们将按我们应该的那样跳出循环。

下一个问题是你的 while 循环中有一个 return 语句,所以在第一次执行之后,即使还没有达到 5 场胜利,它也会返回玩家获胜和计算机获胜的数组。

您应该将 return 语句放在循环之后,以便您运行循环 5 次,然后在有人获胜后返回。

最后,由于您还没有提供其余的代码,我不确定 humanVsMachine 是否真的被定义了;如果您在函数之外定义了它,那么您就可以开始了。

关于javascript - 无法让我的函数多次运行并破坏我的代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30381523/

10-12 14:47
查看更多