如何将 forEach 分配给变量?这是可能的?
How can I assign forEach to variable? Its possible?
大家好:) 我正在尝试编写剪刀石头布游戏,但遇到了一些小问题。有没有像我在这段代码中所做的那样将 let playerChoice = buttons.forEach... 分配给任何变量的选项?不幸的是,它不是这样工作的。我在下面附上了我的代码。
感谢任何提示!
let choiceOptions = ["ROCK", "PAPER", "SCISSORS"];
let buttons = document.querySelectorAll('button');
let computerChoice = () => choiceOptions[Math.floor(Math.random() * choiceOptions.length)];
let playerChoice = buttons.forEach(button => {
button.addEventListener('click', () => {
return button.id.toUpperCase();
});
});
console.log(playerChoice) //does not work
您不能使用 forEach
在这里做您想做的事。
首先,forEach
从来没有 return 任何东西,但其次,你 return 以后要 button.id.toUpperCase()
,当用户实际上点击按钮。从事件处理程序返回不会在任何有用的地方分配值。
相反,您应该将 playerChoice
变量添加到共享的外部作用域中,并在事件发生时分配给它。
let playerChoice;
buttons.forEach(button => {
button.addEventListener('click', () => {
playerChoice = button.id.toUpperCase();
});
});
这样,playerChoice
将在用户单击按钮时更新。
但是,这实际上可能对您没有帮助,因为您的代码不知道变量已更新。因此,让我们创建一个您的事件处理程序可以调用的回调。
let playerChoice;
let setPlayerChoice = (choice) => {
playerChoice = choice;
// we can use the value of playerChoice now,
// because this callback is being triggered
// by the user clicking the button.
console.log(playerChoice);
}
buttons.forEach(button => {
button.addEventListener('click', () => {
setPlayerChoice(button.id.toUpperCase());
});
});
大家好:) 我正在尝试编写剪刀石头布游戏,但遇到了一些小问题。有没有像我在这段代码中所做的那样将 let playerChoice = buttons.forEach... 分配给任何变量的选项?不幸的是,它不是这样工作的。我在下面附上了我的代码。
感谢任何提示!
let choiceOptions = ["ROCK", "PAPER", "SCISSORS"];
let buttons = document.querySelectorAll('button');
let computerChoice = () => choiceOptions[Math.floor(Math.random() * choiceOptions.length)];
let playerChoice = buttons.forEach(button => {
button.addEventListener('click', () => {
return button.id.toUpperCase();
});
});
console.log(playerChoice) //does not work
您不能使用 forEach
在这里做您想做的事。
首先,forEach
从来没有 return 任何东西,但其次,你 return 以后要 button.id.toUpperCase()
,当用户实际上点击按钮。从事件处理程序返回不会在任何有用的地方分配值。
相反,您应该将 playerChoice
变量添加到共享的外部作用域中,并在事件发生时分配给它。
let playerChoice;
buttons.forEach(button => {
button.addEventListener('click', () => {
playerChoice = button.id.toUpperCase();
});
});
这样,playerChoice
将在用户单击按钮时更新。
但是,这实际上可能对您没有帮助,因为您的代码不知道变量已更新。因此,让我们创建一个您的事件处理程序可以调用的回调。
let playerChoice;
let setPlayerChoice = (choice) => {
playerChoice = choice;
// we can use the value of playerChoice now,
// because this callback is being triggered
// by the user clicking the button.
console.log(playerChoice);
}
buttons.forEach(button => {
button.addEventListener('click', () => {
setPlayerChoice(button.id.toUpperCase());
});
});