2016-05-17 77 views
0

我正在製作一個小腳本,它將迭代數字並跳過數字5.我想用continue;聲明/標籤實現此目的。爲什麼繼續;聲明凍結瀏覽器?

這裏是我的代碼:

<p id="test"></p> 

<script> 

var i, text; 

text = ""; 
i = 0; 

for (;i<8;) { 
    if (i === 5) {continue;} 
    text += "The number is " + i + "<br>"; 
    i++; 
} 

document.getElementById('test').innerHTML = text; 

</script> 

我沒有看到任何錯字的錯誤,但現在編碼超過12個小時,也許我的東西監督明顯。如果是這樣,我表示歉意。

這個工程,當我想停止在5號使用break;聲明。

<p id="test"></p> 

<script> 

var i, text; 

i = 0; 
text = ""; 

for (;i<8;) { 
    if (i === 5) {break;} 
    text += "The number is " + i "<br>"; 
    i++; 
} 

document.getElementById('test').innerHTML = text; 

</script> 
+0

您需要在調用continue之前增加i,否則它將進入循環 –

回答

6
if (i === 5) {continue;} 

絕不允許控制,以繼續並增加i。因此,當i變爲五時,它總是會返回。

解決方案:

if (i === 5) { 
    i++; // Increament `i` first 
    continue; 
} 

OR,使用for第三個參數。

for (; i<8; i++) { 
      ^^^ // Increment `i` for each iteration 

一個更簡單的東西可以用if條件來完成。

for (; i < 8; i++) { 

    // If i is not 5, then only append to the string. 
    if (i !== 5) { 
     text += "The number is " + i + "<br>"; 
    } 
} 
+0

因此,使用for(; 1 <8; i ++)會解決問題嗎? – super11

+1

@ super11是的,它會解決 – Tushar

+0

測試和工作..所以繼續之前迭代器邏輯停止。很高興知道。謝謝。 – super11

1

這會導致無限循環,因爲您的值永遠不會增加。 continue將進入下一次迭代,但是由於您尚未定義語句來增加您的值,因此不會發生這種情況。

考慮重構你的循環,而不是循環體內進行的增量如下:

<script> 
    var text = ""; 
    // This is the most common approach to defining a for-loop as it handles defining 
    // your iterator, defining a stop condition and handles how to increment your value 
    // after each iteration 
    for (var i = 0; i < 8; i++) { 
     if (i === 5) {break;} 
     text += "The number is " + i "<br>"; 
    } 
    document.getElementById('test').innerHTML = text; 
</script> 
1
if (i === 5) {continue;} 

i是5它永遠不會再得到一個機會,以達到i++。所以,i將永遠是5,你永遠不會退出循環。