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

解决点击confirm取消按钮无法终止while循环的问题

问题解决:confirm取消后循环无法终止的修复

问题根源

你代码里的循环一直停不下来,核心原因是循环内部重新用let声明了askAgain变量——这会创建一个仅在循环块内生效的局部变量,和外层控制循环的askAgain完全是两个独立变量。每次循环里点击取消,修改的只是这个局部变量,外层的循环条件askAgain == true永远没变,自然会一直弹出对话框。

修复后的代码

// 把重复的年龄判断逻辑抽成函数,减少冗余
function checkDrivingAge(age) {
    if (age <= 0) {
        alert('Enter a valid age')
        console.error('Enter a valid age');
        return;
    }
    age < 18 ? alert('You cannot drive') : alert('Yes you can drive')
}

// 首次执行年龄校验
let age = Number(prompt('Enter your age'))
checkDrivingAge(age)

let askAgain = confirm('Do you want to see the prompt again?')

while (askAgain) {
    age = Number(prompt('Enter your age'))
    checkDrivingAge(age)
    // 去掉let,直接更新外层的askAgain变量
    askAgain = confirm('Do you want to see the prompt again?')
}

关键修改点

  1. 移除循环内的let声明:循环里直接给外层已定义的askAgain赋值,点击取消后askAgain会变为false,循环条件不满足就会终止。
  2. 抽离重复逻辑:把两次相同的年龄判断写成函数,避免代码冗余,后续修改逻辑也更方便。
  3. 简化循环条件:confirm本身返回布尔值,直接写while (askAgain)即可,没必要额外判断== true。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:21:31