Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将函数赋值给变量并在参数中使用不起作用_Javascript - Fatal编程技术网

Javascript 将函数赋值给变量并在参数中使用不起作用

Javascript 将函数赋值给变量并在参数中使用不起作用,javascript,Javascript,我正在为“奥丁项目”制作一款石头剪刀游戏。指令说明创建一个一轮游戏,计算机选择通过使用外部函数在一轮函数中实现随机 为了练习,我尝试给变量名“computerChoice”分配一个函数。当我这样做时,结果是未定义的。如果我只是使用函数调用“computerPlay()”来放置playRound()的参数,它就可以工作了。如果我为函数“computerChoice”使用指定的变量,它将不起作用 我在网上用谷歌搜索了一下,据说你可以用Javascript来做这件事。我做错了什么 let choice

我正在为“奥丁项目”制作一款石头剪刀游戏。指令说明创建一个一轮游戏,计算机选择通过使用外部函数在一轮函数中实现随机

为了练习,我尝试给变量名“computerChoice”分配一个函数。当我这样做时,结果是未定义的。如果我只是使用函数调用“computerPlay()”来放置playRound()的参数,它就可以工作了。如果我为函数“computerChoice”使用指定的变量,它将不起作用

我在网上用谷歌搜索了一下,据说你可以用Javascript来做这件事。我做错了什么

let choices = ['rock', 'paper', 'scissors'];
const rdm = Math.floor(Math.random() * 3);
const computer = choices[rdm];
// let playerSelection = playerSelection.toLowerCase();

function playRound(playerSelection, computerSelection) {


    if (playerSelection === computerSelection) {
        return 'It is a tie!!!';
    } else if (playerSelection === 'rock' && computerSelection === 'paper') {
        return 'PAPER BEATS ROCK! computer wins!'
    } else if (playerSelection === 'rock' && computerSelection === 'scissors') {
        return 'ROCK BEATS SCISSORS! player wins!';
    } else if (playerSelection === 'paper' && computerSelection === 'scissors') {
        return 'SCISSORS BEATS PAPER! computer wins!'
    } else if (playerSelection === 'paper' && computerSelection === 'rock') {
        return 'PAPER BEATS ROCK! player wins!';
    } else if (playerSelection === 'scissors' && computerSelection === 'rock') {
        return 'ROCK BEATS SCISSORS! computer wins!'
    } else if (playerSelection === 'scissors' && computerSelection === 'paper') {
        return 'SCISSORS BEATS PAPER! player wins!';
    }

}




// function computerPlay() {
//     const computer = choices[rdm];
//     return computer;
// }

// console.log(playRound('rock', computerPlay())); // This works!

let computerChoice = function computerPlay() {
    const computer = choices[rdm];
    return computer;
}

console.log(playRound('rock', computerChoice)); // This does not Work!

首先,您尝试为函数指定两个名称:

let computerChoice = function computerPlay() {
  //...
}
只需变量名即可:

let computerChoice = function () {
  //...
}
除此之外,您永远不会执行该函数。您正在成功地将其传递给
playRound
函数,但随后您只需尝试对其进行比较:

if (playerSelection === computerSelection)
第一个变量是字符串,第二个是函数。他们永远不会平等。看起来您打算执行它并将其结果传递给
playRound

console.log(playRound('rock', computerChoice()));
或者,您必须在
playRound
中执行它。也许是这样的:

function playRound(playerSelection, computerSelection) {
  let computerSelectionResult = computerSelection();

  if (playerSelection === computerSelectionResult) {
    //...
  }
}

首先,您尝试为函数指定两个名称:

let computerChoice = function computerPlay() {
  //...
}
只需变量名即可:

let computerChoice = function () {
  //...
}
除此之外,您永远不会执行该函数。您正在成功地将其传递给
playRound
函数,但随后您只需尝试对其进行比较:

if (playerSelection === computerSelection)
第一个变量是字符串,第二个是函数。他们永远不会平等。看起来您打算执行它并将其结果传递给
playRound

console.log(playRound('rock', computerChoice()));
或者,您必须在
playRound
中执行它。也许是这样的:

function playRound(playerSelection, computerSelection) {
  let computerSelectionResult = computerSelection();

  if (playerSelection === computerSelectionResult) {
    //...
  }
}

我认为你应该调用计算机选择函数。我认为你应该调用计算机选择函数。