while while循环必须无限崩溃吗?

时间:2015-01-29 12:57:28

标签: javascript loops browser

还有其他原因吗?怎么样他们太长了?是否会导致浏览器崩溃,如果有的话会持续多长时间?

使用setTimout 0循环可以解决长循环崩溃问题,因此每下一个滴答都会执行代码,如果是这种情况,是否也可以以这种方式无限循环并且永不崩溃?< / p>

我没有编写这种愚蠢的声音,我一直都在想。

我认为每个浏览器都有所不同,所以为了问题,我们可以说它是一个相当知名的浏览器 - Chrome。

编辑:已经提到了垃圾收集器和未被销毁的对象,有人有这方面的例子吗?

2 个答案:

答案 0 :(得分:1)

时间本身不是约束,而是你在循环中所做的事情。例如,如果在循环中创建了许多未被垃圾收集器销毁的对象,则最终会耗尽内存并使脚本崩溃。

示例:

var a = [];   
for (i = 0; i < Number.MAX_SAFE_INTEGER; i++) {
   a.push(a);
}

(好吧,这是一个for循环,但可以重写为while,并且工作方式相同)

答案 1 :(得分:0)

如果您有这样的循环:

while(true)
{
  i = 1;
}

什么都不会发生,只有CPU会变热,浏览器会在某个时候要求停止脚本:D

如果你有一个带有一些输出的重复循环或一个循环,那么RAM不是invinit。

setTimout可以为您节省资金并且不会阻止您的网站(因此浏览器不会要求您停止它),而且,如果它使用带有一些输出的RAM,它将填满RAM。

超时正在进行合作多任务处理