JavaScript函数预期返回随机值却始终输出相同结果问题
问题原因
你在全局作用域声明computerSelection变量时,仅执行了一次computerPlay()生成随机值,后续全程复用该固定值,不会重新生成随机结果。game()函数中没有重新调用computerPlay()的逻辑,自然每次调用playRound都拿到相同的参数。
修复方案
将computerSelection的生成逻辑移到每轮对局前执行,每一轮都单独调用一次computerPlay()获取新的随机值,不要复用全局声明的固定变量。修正后代码如下:
function computerPlay() { const plays = ["rock", "paper", "scissors"]; return plays[Math.floor(Math.random() * plays.length)]; }; function playRound(playerSelection, computerSelection) { if (playerSelection.toLowerCase() === 'rock' && computerSelection === 'paper') { console.log('paper beat rock') return ('paper beats rock') } else if (playerSelection.toLowerCase() === 'rock' && computerSelection === 'rock') { console.log('its a tie, try again!') return ('its a tie, try again!') } else if (playerSelection.toLowerCase() === 'rock' && computerSelection === 'scissors') { console.log('rock beats scissors') return ('rock beats scissors') } else { console.log('wut') } }; function game() { const playerSelection = "Rock"; // 每轮对局前重新生成电脑的选择 playRound(playerSelection, computerPlay()); playRound(playerSelection, computerPlay()); }; // 调用测试 game();
内容的提问来源于stack exchange,提问作者rachel
相关产品推荐
相关产品推荐

