You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript另一函数中多次调用指定函数 解决单次执行问题

问题根因

  • game()函数循环内直接执行return,首次循环就终止函数运行,导致playRound()仅执行一次
  • 全局仅初始化一次computerSelection,即使循环可正常执行,每轮电脑出拳也不会变化
  • playRound()的判断逻辑错误,playerSelection === playerSelection恒为真,完全没有匹配玩家出拳的规则校验

修复后代码

function playRound(playerSelection, computerSelection) {
  console.log(`你的选择是:${playerSelection}`);
  console.log(`电脑的选择是:${computerSelection}`);

  if (playerSelection === computerSelection) return "平局";

  const winConditions = {
    rock: 'scissors',
    scissors: 'paper',
    paper: 'rock'
  };

  if (winConditions[playerSelection] === computerSelection) {
    return `你赢了!${playerSelection} 击败 ${computerSelection}`;
  }

  return `你输了!${computerSelection} 击败 ${playerSelection}`;
}

function computerPlay() {
  const choices = ["rock", "paper", "scissors"];
  return choices[Math.floor(Math.random() * choices.length)];
}

function game() {
  let playerScore = 0;
  let computerScore = 0;
  // 此处固定玩家出拳为rock,可后续替换为用户动态输入逻辑
  const playerSelection = "ROck".toLowerCase();

  for (let i = 0; i < 3; i++) {
    // 每轮重新生成电脑出拳
    const computerSelection = computerPlay();
    const roundResult = playRound(playerSelection, computerSelection);
    console.log(`第${i+1}轮结果:${roundResult}`);

    if (roundResult.includes('你赢了')) playerScore++;
    if (roundResult.includes('你输了')) computerScore++;
  }

  if (playerScore > computerScore) return `最终赛果:你获胜,总比分 ${playerScore} : ${computerScore}`;
  if (playerScore < computerScore) return `最终赛果:电脑获胜,总比分 ${playerScore} : ${computerScore}`;
  return `最终赛果:双方平局,总比分 ${playerScore} : ${computerScore}`;
}

console.log(game());

内容的提问来源于stack exchange,提问作者mattangel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 19:15:03