2017-05-11 45 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

這叫做「刷新」。如果你使用它,它將「清除瀏覽器內存」。