function getComputerChoice(randomLetterGen) {
function randomLetterGen() {
function randomNumGen() {
return Math.floor(Math.random() * 3);
}
let word = "rps";
return word.charAt(randomNumGen());
}
let cpuInput;
if (randomLetterGen() == "r") {
cpuInput = "rock";
} else if (randomLetterGen() == "p") {
cpuInput = "paper";
} else if (randomLetterGen() == "s") {
cpuInput = "scissors";
}
return cpuInput;
}
console.log(getComputerChoice());
每次调用 randomLetterGen() 时,它都会独立生成一个新的随机字母。 因此,当您在 if 语句中多次调用它时,每次可能会得到不同的结果,从而导致在没有条件匹配时出现未定义的可能性。
function getComputerChoice() {
function randomLetterGen() {
function randomNumGen() {
return Math.floor(Math.random() * 3);
}
let word = "rps";
return word.charAt(randomNumGen());
}
let cpuInput = randomLetterGen(); // Call randomLetterGen() once and store the result
if (cpuInput === "r") {
return "rock";
} else if (cpuInput === "p") {
return "paper";
} else if (cpuInput === "s") {
return "scissors";
}
}
console.log(getComputerChoice());
此外,当 Math.random()*3 小于 2 时,您不会看到未定义的选项,这是因为 randomLetterGen() 函数可能返回“r”、“p”或“s”,这意味着if 条件之一匹配,您将得到有效结果。