JavaScript for 循环问题影响猜测计数

JavaScript for loop issue affects guess count

所以我正在尝试构建一个 JavaScript 刽子手游戏,但我的 checkMatch 函数有问题。我想要实现的是让它检查 hiddenChoice 数组,如果 this.id 根本不在数组中,则只检查 else if 语句中的代码 运行。目前,如果 hiddenChoice = apple 和 this.id = l 它会 return 'guess again' 3 次 returns that 'you found a letter' 当它击中 l 时,这会影响我的猜测数数。所有 console.logs 都在那里,所以我可以弄清楚发生了什么。感谢您的帮助。

function checkMatch(){
    console.log(hiddenChoice)
 for (let k = 0; k < hiddenChoice.length; k++){
        if (this.id === hiddenChoice[k]){
            console.log('you found a letter')
            console.log(this.id)
            greenColor = this.id
            green(greenColor)
            right++
            console.log(right)
            return
        }
        else if (this.id != hiddenChoice[k]) {
            console.log('guess again')
            console.log(guesses)
            console.log(this.id)
            redColor = this.id
            red(redColor)
            guesses--
        }
    }

else 不应该在循环内,因为您还不知道下一个字符是否匹配。只有当循环结束时,您才知道 none 个字母匹配。

所以:

function checkMatch(){
    console.log(hiddenChoice)
    for (let k = 0; k < hiddenChoice.length; k++){
        if (this.id === hiddenChoice[k]){
            console.log('you found a letter')
            console.log(this.id)
            greenColor = this.id
            green(greenColor)
            right++
            console.log(right)
            return
        }
    }
    console.log('guess again')
    console.log(guesses)
    console.log(this.id)
    redColor = this.id
    red(redColor)
    guesses--
}

一些其他备注:

  • 您的代码使用了几个未声明的变量,或者至少是全局变量。应该避免这种情况。将临时变量(如 greenColor?)声明为局部变量(例如 let)。

  • 以 semi-colon 结束你的陈述。 JavaScript 使用一些规则在您不这样做时自动执行此操作,但您不希望这种情况发生,因为存在一些陷阱。

  • 不清楚this是什么。如果将 id 作为参数传递给函数会更好。

  • 如果一次猜测有多个匹配项,您的代码将无法按预期工作。尝试思考如何管理它(作为练习)。