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
作为参数传递给函数会更好。
如果一次猜测有多个匹配项,您的代码将无法按预期工作。尝试思考如何管理它(作为练习)。
所以我正在尝试构建一个 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
作为参数传递给函数会更好。如果一次猜测有多个匹配项,您的代码将无法按预期工作。尝试思考如何管理它(作为练习)。