我的首个项目:石头剪刀布JavaScript代码无法运行,请求排查
问题分析与修复方案
错误1:错误使用parseInt处理用户输入
你用parseInt(prompt("input rock paper or scissors"))处理用户输入,但用户输入的是字符串(比如"rock"),parseInt会把非数字字符串转换成NaN,导致playerSelection的值是NaN,和computerSelection的字符串永远无法匹配,所有条件都不触发。
修复: 去掉parseInt,直接获取用户输入,同时统一转成小写,避免大小写不匹配的问题:
let playerSelection = prompt("input rock paper or scissors").toLowerCase();
错误2:平局分支无返回值
在playRound函数的平局条件里,你只执行了console.log("its a tie"),但没有返回值,导致平局时console.log(playRound(...))会输出undefined。
修复: 将平局的console.log改为return:
if (playerSelection == computerSelection) { return "its a tie"; }
完整修复后的代码
function playRound(playerSelection, computerSelection) { if (playerSelection == computerSelection) { return "its a tie"; } else if (playerSelection == "rock" && computerSelection == "paper") { return "you lose"; } else if (playerSelection == "rock" && computerSelection == "scissors") { return "you win"; } else if (playerSelection == "paper" && computerSelection == "scissors") { return "you lose"; } else if (playerSelection == "paper" && computerSelection == "rock") { return "you win"; } else if (playerSelection == "scissors" && computerSelection == "rock") { return "you lose"; } else if (playerSelection == "scissors" && computerSelection == "paper") { return "you win"; } } let playerSelection = prompt("input rock paper or scissors").toLowerCase(); let computerSelection = Math.random(); if (computerSelection < 0.34) { computerSelection = "rock"; } else if (computerSelection <= 0.67) { computerSelection = "paper"; } else { computerSelection = "scissors"; } console.log(playRound(playerSelection, computerSelection));
内容的提问来源于stack exchange,提问作者eret 007
相关产品推荐
相关产品推荐

