“纸、石头、剪刀挑战”需要 JavaScript 函数方面的帮助。

问题描述 投票:0回答:1

我正在测试我的 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?”

console.log(getComputerChoice()) console.log(playRound())

javascript arrays function console.log
1个回答
0
投票

这个:

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!";
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.