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