这些天,JavaScript的无限循环会导致浏览器崩溃吗?

3

我正在学习JavaScript,对编程还很陌生。我偶然遇到了所谓的无限循环,据说这些循环会一直运行并导致浏览器崩溃,但是当我使用以下代码创建了一个无限循环时:

i=0;
while (i<10) {document.write(i);}

浏览器一直在加载但没有崩溃?是现代浏览器已经足够强大可以承受无限循环,还是我需要一个不同的无限循环?

你可以尝试一个无限循环,将信息添加到一个数组中。 - Sanchit
你有收到任何 JavaScript 错误吗? - Leandro Barreto
"经受得住无限循环" - "无限循环" 和 "连续处理" 是有区别的。我假设你感兴趣的是后者。在这种情况下,搜索 setTimeout 函数并查看如何将工作正确地分成块。 - Liviu T.
1个回答

11

是的,无限循环仍然会导致浏览器崩溃(或者只是运行JS代码的标签页)。然而,大多数现代浏览器可以检测出脚本的挂起/运行无限循环,并提供中止脚本的选项。

此外,更有效率的创建无限循环的方式是:

while(true);

1
这是关于JS我永远不理解的一件事:为什么无限循环会冻结整个页面,而不是像其他存在无限循环的环境/语言一样只是...运行。我真的不明白解释器为什么不能在单独的线程中等待,而渲染器则按照先到先服务的原则监听DOM的更改并应用它们。我可以理解阻止未来的脚本执行,但不是渲染器 - Braden Best
由于默认情况下使用的模型(在万维网联盟中定义)是单线程的,而且点击DOM节点可能会触发一个需要在当前执行完成后才能执行的函数,因此“after”永远不会到来,从而导致无限循环。可以使用Web Workers和TimeInterval来克服一些限制。 - Walle Cyril

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接