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

如何设置while循环条件,使其在任意一个判断不成立时立即终止

问题根源

两个核心错误导致现有逻辑不符合预期:

  • 原有循环条件存在逻辑缺失:a && b < bestof.value 由于运算符优先级规则,等价于 (a) && (b < bestof.value),仅判断了b是否小于对局上限,对a只做了真值校验,没有和bestof.value做大小比较,因此无法在a超过上限时及时终止循环。
  • 后续修改的while(a || b < bestof.value)逻辑完全相反:逻辑或||的规则是只要任意一个条件成立,整体就为真,这会导致只要a为真值或者b小于上限,循环就会一直运行,必然触发死循环导致调用栈溢出。

解决方案

你需要的效果是「只要a、b任意一个大于等于对局上限就终止循环」,反过来推导,循环持续运行的前置条件就是a和b同时小于对局上限,因此修改为如下代码即可:

if (checkBox.checked) {
    while (a < bestof.value && b < bestof.value) {
       myFunction();
    }
}

注意事项

  • 要保证myFunction()执行过程中会更新a或b的数值,如果两个值一直没有变化,无论条件怎么写都会进入死循环。
  • 如果a、b或bestof.value可能存在非数值的情况,建议先做类型校验,避免比较运算出现非预期结果。

内容的提问来源于stack exchange,提问作者JacobVerDugt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:54:04