JavaScript循环数组时如何仅重答错误问题而非重启整个循环
解决单词拼写练习的错误重试问题
你遇到的问题是错误重试时会重启整个流程,核心原因是else分支里调用typeSmart()会重新执行整个函数,导致循环从头开始。不需要完全替换for循环,只需要在for循环内部给每个单词加个while循环,强制用户重复输入当前错误的单词直到答对即可,改进后的代码如下:
const wordList = ["Cachalot", "Pétunia", "Serviette"]; let score = 0; function typeSmart() { for (let i = 0; i < wordList.length; i++) { let typedWord; // 循环提示当前单词,直到输入正确 while (true) { typedWord = prompt("Veuillez recopier le mot suivant : " + wordList[i]); if (typedWord === wordList[i]) { score += 1; console.log(`得分:${score}`); break; // 输入正确,进入下一个单词 } else { console.log("错误,请重新输入这个单词"); } } } } typeSmart();
关键改动说明:
- 给每个单词套了一个
while(true)无限循环,用户输入错误就会一直停留在当前单词的输入提示,直到输入正确才通过break跳出这个while循环,继续for循环的下一个单词。 - 删掉了else分支里的
typeSmart()调用,彻底避免重启整个流程。 - 给
wordList加上const声明(因为数组内容不需要修改),score用let,符合JS变量声明规范。
内容的提问来源于stack exchange,提问作者Elradsoldier
相关产品推荐
相关产品推荐

