2017-05-11 47 views
-5

我试图做一个无限循环,使用之间0到100和100到0,但浏览器崩溃。有一种方法可以清除浏览器内存?这是我的代码:如何在javascript中的无限循环

var a = 0; 
var flag = true; 

while (true) { 

    if (a < 100 && flag == true) { 

     a++; 

    } else { 

     a = 0; 
     flag = false; 

     if (a < 0) { 
      flag = true; 
     } 

    } 

    console.log(a); 

} 
+9

那么,你总是可以期待浏览器崩溃与无限循环 – juvian

+2

尊重,该代码没有很多意义。你有一个永远不会使用的标志,一个变量从0到99,然后是0到99,然后是0到99,以及一个永远不会被满足的条件('if(a <0)')。 –

+0

难道你不想在'while'循环中使用'flag'作为condtion吗? 像'while(flag){(...)}'?然后循环实际上会在某个时候退出,不应该崩溃任何东西。 – yoger

回答

-4

你只需要一个无限循环?如果是的话就去做

for(var i = 0; i < 1;){ 
    console.log('infinite'); 
}; 

如果您需要一段时间

var = 0; 
while(var < 1){ 
    console.log('looOOoOOoOoOp'); 
}; 
+1

我也总是需要一个无限循环的客户网站。 – Teemoh

+1

OP有什么问题? 'while(true){}' –

+0

这给出了一个'SyntaxError'。你不能只是删除这样的变量名称。 –

1

无限while循环阻塞主线程至极相当于崩溃。 你可以使用一个selfcalling功能(至极离开主线程做一些其他的东西插图中):

(function main(counter){ 
    console.log(counter); 
    setTimeout(main,0,counter+1); 
})(0); 

你可以把一个循环,从0到100,和一个从100变为0进去,不会阻塞浏览器太多:

(function main(){ 
    for(var counter=0;counter<100;counter++){ 
     console.log(counter); 
    } 
    console.log(100); 
    while(counter){ 
     console.log(--counter); 
    } 
    setTimeout(main,0); 
})(); 

http://jsbin.com/vusibanuki/edit?console

进一步的研究:JS IIFEs函数表达式无阻塞槽设置超时时间 ...

0

有一种方法可以清除浏览器内存?

是的。几乎所有的浏览器都有一个小图标,看起来非常类似:enter image description here

这叫做“刷新”。如果你使用它,它将“清除浏览器内存”。