我正在测试我的 playRound() 函数,但没有通过 console.log 输出收到所需的结果。输出始终是 if 语句的初始返回。
我已经将playerChoice的全局变量初始化为一个字符串,即“rock”。
我已经验证 getComputerChoice() 函数的输出会从数组中生成随机选择,即布、石头或剪刀,使用 console.log(getComputerChoice())。
但是,当我调用 playRound() 函数时,我仅收到 if 语句“It’s a tie”的初始返回。
const playerSelection = "rock"
const computerSelection = getComputerChoice();
console.log(playRound());
function getComputerChoice() {
const choice = ["paper", "rock", "sissors"];
return choice[Math.floor(Math.random() * 3)];
}
function playRound(playerSelection, computerSelection) {
if (playerSelection === computerSelection) {
return "It is a tie!";
} else {
return "Please try again!";
}
}
为什么代码在 if 语句的初始返回时似乎短路并且永远不会继续输出“Try Again?”
这个:
playRound()
不向函数传递任何值。所以在函数中
playerSelection
和 computerSelection
始终是 undefined
。在该函数中,您将这两个局部变量声明为与两个全局变量同名。局部变量shadow那些全局变量,所以你只能使用局部变量。
如果您打算使用全局变量,请不要重新声明同名的局部变量:
const playerSelection = "rock"
const computerSelection = getComputerChoice();
console.log(playRound());
function getComputerChoice() {
const choice = ["paper", "rock", "sissors"];
return choice[Math.floor(Math.random() * 3)];
}
function playRound() {
if (playerSelection === computerSelection) {
return "It is a tie!";
} else {
return "Please try again!";
}
}
或者,如果您确实想在该函数中使用局部变量,请将您的值传递给它:
const playerSelection = "rock"
const computerSelection = getComputerChoice();
console.log(playRound(playerSelection, computerSelection));
function getComputerChoice() {
const choice = ["paper", "rock", "sissors"];
return choice[Math.floor(Math.random() * 3)];
}
function playRound(playerSelection, computerSelection) {
if (playerSelection === computerSelection) {
return "It is a tie!";
} else {
return "Please try again!";
}
}