所以我正在嘗試構建一個 JavaScript 劊子手游戲,但我的 checkMatch 函式有問題。我想要實作的是它檢查 hiddenChoice 陣列,如果 this.id 根本不在陣列中,則只運行 else if 陳述句中的代碼。目前,如果 hiddenChoice = apple 和 this.id = l 它將回傳 'guess again' 3 次,然后當它擊中 l 時回傳'you found a letter',這會影響我的猜測計數。所有的 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--
}
}
uj5u.com熱心網友回復:
不應該在else回圈內,因為你還不知道下一個字符是否匹配。只有當回圈完成時,您才知道沒有一個字母匹配。
所以:
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?)宣告為區域變數(例如 withlet)。用分號結束你的陳述。當您不這樣做時,JavaScript 會使用一些規則自動執行此操作,但您不希望這種情況發生,因為存在一些陷阱。
目前尚不清楚是什么
this。如果id作為引數傳遞給函式會更好。如果一個猜測有多個匹配項,您的代碼將無法按預期作業。嘗試思考如何管理它(作為練習)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457661.html
標籤:javascript for循环 if 语句
