当我执行以下代码时,我注意到JS Bin runner的奇怪行为:
var ask = prompt("test");
while(ask!=="yes"){
ask = prompt("test");
}
我遇到了这种错误:
在第4行退出潜在的无限循环。禁用循环保护: 将“// noprotect”添加到您的代码中
我在徘徊为什么会这样? (该代码的执行在站点代码中正常工作)
答案 0 :(得分:2)
计算机科学中存在一个无法解决的问题,称为The Halting Problem。
简而言之,这意味着计算机无法查看一段代码,并确定它是否会进入无限循环或在某个时间结束。但是,他们可以对此进行一些猜测并警告您,如果他们发现任何可能危险的话。
不是。 可能会。
这是其中一个案例。系统警告你,你必须说"是的,是的,我听说过你。无论如何都要这样做。" [*]
[*]当然,这是为了让我们为星际迷航宇宙做好准备,我们会禁止一切安全,以挽救这一天。
答案 1 :(得分:1)
提示,提醒,确认。
这些JS函数是同步的,这意味着浏览器将停止执行任何操作并保持/等待用户响应。由于您还可以通过检查先前提示的结果再次提示来创建无限循环,因此它会抛出该消息。
此无限循环将使浏览器无响应