gpt4 book ai didi

javascript - 为什么这两个 If 语句不一样?

转载 作者:行者123 更新时间:2023-11-28 12:14:03 25 4
gpt4 key购买 nike

我刚刚开始学习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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com