我刚刚开始学习Javascript。目前我正在参加在线类(class),我刚刚遇到了我不明白的第一个问题。
我想检查我在 Hangman 游戏中还有多少个猜测:
const Hangman = function(word, remainingGuesses) {
this.word = word.toLowerCase().split('')
this.remainingGuesses = remainingGuesses
this.guessedLetters = []
}
Hangman.prototype.getPuzzle = function() {
let puzzle = ''
this.word.forEach((letter) => {
if (this.guessedLetters.includes(letter) || letter === ' ') {
puzzle += letter
} else {
puzzle += '*'
}
})
return puzzle
}
视频中正确的if
语句是这样的:
Hangman.prototype.makeGuess = function(guess) {
const isUnique = !this.guessedLetters.includes(guess)
const isBadGuess = !this.word.includes(guess)
if (isUnique) {
this.guessedLetters.push(guess)
}
if (isUnique && isBadGuess) {
this.remainingGuesses--
}
}
但这就是我编写 if
语句的方式:
Hangman.prototype.makeGuess = function(guess) {
if (!this.guessedLetters.includes(guess)) {
this.guessedLetters.push(guess)
}
if (!this.guessedLetters.includes(guess) && !this.word.includes(guess)) {
this.remainingGuesses--
}
}
如果我以第二种方式执行 if
语句,则剩余的猜测无法正确计算。你能告诉我有什么区别吗?
最佳答案
问题出在这里:
if (!this.guessedLetters.includes(guess)) {
this.guessedLetters.push(guess)
}
如果 this.guessedLetter
不包含 guess
,则会将其添加到列表中(使用 push
)。
if (!this.guessedLetters.includes(guess)
您刚刚修改了 this.guessedLetters
。所以现在,当你再次检查时,猜测总是存在,所以这个条件永远不会成立。
关于javascript - 为什么这两个 If 语句不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53557750/