如何在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
相关产品推荐
相关产品推荐

