还有其他原因吗?如果它们太长怎么办?这会导致浏览器崩溃吗?如果是的话,多长时间才算太长?
是否可以使用 setTimout
0 循环来解决长循环崩溃问题,以便在每个下一个周期执行代码,如果是这种情况,是否也可以以这种方式无限循环并且永远不会崩溃?
我不会编写听起来很愚蠢的东西,我只是一直想知道。
我本以为每个浏览器上的它都是不同的,所以为了问题起见,我们假设它是一个相当知名和使用的浏览器 - Chrome。
编辑:已经提到了垃圾收集器和不被销毁的对象,有人有这样的例子吗?
最佳答案
时间本身不是一个约束,而是你在循环中所做的事情。例如,如果您在循环中创建许多未被垃圾收集器销毁的对象,您最终将耗尽内存并使脚本崩溃。
示例:
var a = [];
for (i = 0; i < Number.MAX_SAFE_INTEGER; i++) {
a.push(a);
}
(好吧,这是一个 for 循环,但可以重写为 while 并且工作原理相同)
关于javascript - while 循环必须是无限的才会崩溃吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28215369/