【发布时间】:2020-11-04 18:46:23
【问题描述】:
我正在写一个刽子手游戏。在谷歌的帮助下,我有一个函数来检查单词中是否有字母,但我不明白如何,虽然我从未声明我的函数的参数“chosenLetter”,但它能够准确地给出“chosenLetter”我单击的特定字母的值。 “getElementById(chosenLetter)”也不能准确地选择我点击的字母来禁用按钮。 与“guessedWord”函数相同,其中从未声明“letter”,但它会在“guessed”数组中选择要检查的字母
let answer = '';
let maxWrong = 5;
let mistakes = 0;
let guessed = [];
let wordStatus = null;
function guessedWord() {
wordStatus = answer.split('').map(letter => (guessed.indexOf(letter) >= 0 ? letter : '_')).join('');
document.getElementById('word').innerHTML = wordStatus;}
function generateButtons() {
let buttonsHTML = 'abcdefghijklmnopqrstuvwxyz'.split('').map(letter =>
`
<button
class = "btn"
id = '` + letter + `'
onClick = "handleGuess('` + letter + `')"
>
` + letter + `
</button>
`).join('');
document.getElementById('alphabet').innerHTML = buttonsHTML;}
function handleGuess(chosenLetter) {
if (guessed.indexOf(chosenLetter) === -1) {
guessed.push(chosenLetter)
} else {
null;
}
document.getElementById(chosenLetter).setAttribute('disabled', true);
if (answer.indexOf(chosenLetter) >= 0) {
guessedWord();
checkIfGameWon();
} else if (answer.indexOf(chosenLetter) === -1) {
mistakes++;
updateMistakes();
checkIfGameLost();
}}
由于我是 javascript 新手,我通常会试图了解未声明的参数怎么可能看起来如此明确地声明自己?我不知道我是否问错了问题,但这是代码中唯一我无法理解或解释的内容
【问题讨论】:
-
函数参数在调用函数时自动声明。您在此行传递值:
onClick = "handleGuess('` + letter + `')". -
旁注;您正在使用模板文字作为普通字符串。当使用插值更有益时,这违背了使用它们的目的。示例:
`<button class="btn" id="${letter}">`
标签: javascript function parameters