为何while循环在条件判定为false时仍无法终止?
问题出在变量作用域的重复声明
你在while循环内部用let重新声明了checkOrFold变量,这导致循环内外的checkOrFold是两个完全独立的变量:
- 外部的
checkOrFold初始值是undefined,循环条件checkOrFold != 'check' && checkOrFold != 'fold'永远为true,所以循环会一直执行 - 循环内部的
checkOrFold是仅在循环块内生效的局部变量,输入'check'或'fold'时它的判断结果为false,但这个值不会影响外部变量的循环条件,自然跳不出循环
修复方法
删掉循环内部的let,直接给外部的变量赋值:
let checkOrFold = undefined while(checkOrFold != 'check' && checkOrFold != 'fold'){ checkOrFold = prompt(`check or fold?`); console.log(checkOrFold != 'check' && checkOrFold != 'fold') } console.log('finish')
这样输入'check'或'fold'时,外部变量的值会被更新,循环条件变为false,就能正常终止并执行后续代码了。
内容的提问来源于stack exchange,提问作者Wenzhen Gong
相关产品推荐
相关产品推荐

