You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 23:15:00