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

为什么do while代码在Chrome调试器正常,在jsbin却运行异常?

问题排查结论

你的代码本身逻辑没有问题,该异常表现完全是jsbin平台的内置安全限制机制导致的。

具体原因

  • jsbin作为在线代码运行平台,为了避免用户编写的包含alert/prompt/confirm等阻塞式弹窗的死循环代码,导致浏览器标签页完全卡死、用户无法正常操作关闭页面,默认会对重复弹出的阻塞式弹窗做拦截处理:通常仅允许第一次弹窗正常渲染,后续触发的同类弹窗会被平台直接静默拦截,不会展示给用户。
  • 你编写的do-while逻辑刚好触发了这个限制:当你第一次输入无效内容后,循环逻辑会触发第二次prompt弹窗,直接被jsbin的拦截规则拦下,因此不会重复弹出提示框,看起来就像循环没有生效一样。

验证方法

你可以在代码中加入一行打印语句验证该结论:

do {
  var choice = parseInt(prompt("Please select one of the following:\n1.ROCK\n2.PAPER\n3.SCISSORS\n[NOTE: Choose your selection by pressing a number between 1,2 or 3.]"));
  console.log('当前输入解析结果:', choice) // 新增打印语句
} while (isNaN(choice));

输入无效内容后打开浏览器控制台查看,会发现循环实际上在正常执行,只是后续的prompt弹窗被平台拦截没有渲染出来。

测试建议

如果需要在jsbin平台正常测试这段逻辑,可以使用平台提供的自定义输入组件替代原生prompt,或者临时修改逻辑用控制台输入模拟用户输入即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 03:06:03