2015-06-24 45 views
0

我的JavaScript的新手,當我學習for statement我當然coundn't理解這個輸出..爲什麼在迭代中打破標籤時輸出這個結果?

foo: for(var i=0; i<3; i++){                 
    console.log(i); 
    if(i==1){ 
     break foo; 
    } 
} 

,我也得到了一些打印這樣的..

0 
1 

是說實話,我不知道這裏發生了什麼,我覺得可以在這裏拋出錯誤,因爲太深迭代可能會引起..

我想要得到這樣的結果其實

0 
1 
0 
1 
0 
1 

... 

也許這是一個愚蠢的問題,但我確實想得到答案。

可能有人幫助我..

+0

什麼是預期的輸出? – Satpal

+0

我不明白爲什麼我不能打印像'0 1 0 1 0 1'等等當我打破標籤.. –

+0

你打破循環,所以它打破了,爲什麼它會重新啓動,如果你不'告訴它重新啓動? –

回答

1
for(var i=0; i<3; i++){                 
    console.log(i); 
    if(i==1){ 
     break foo; 
    } 
} 

您正在運行一個for loop,它正在從0迭代到3(排除)。

在每次迭代中它是print i的值。

,如果我的價值是從環1,那麼它break

first iteration: i=0; print 0 continue as 0 != 1 

second iteration: i=1 print 1 break as 1 == 1 

更多瞭解for loop

+0

我打破標籤'foo',爲什麼打印'0 1'並且結束,我認爲它可能會繼續執行''foo'標籤並打印'0 1 0 1 0 1'等。 –

0

你的循環試圖輸出i而這是不到3個每次迭代增加它。

if (i == 1)聲明在true在第二次迭代,所以break得到執行,「退出」循環。

+0

'break [Label];'as [MDN](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/break)表示。 –

+0

我的不好。 w3schools沒有提到:)修復。 Thanx – MaGnetas

+0

爲什麼它不能輸入標籤'foo'並重新開始打印'0 1'? –

-1

你的代碼做:

  • 打印我
  • 再破

它會打印0 1然後打破循環。

0
  • 實際上break語句用於擺脫循環。
  • 正如我們之前所知for循環循環執行,直到條件(此處爲i<3)爲真。如果條件變爲假,那麼它終止,即,當i遞增到3.
  • 但是,如果條件要檢查是i==1,所以無論何時i增加到1,循環都由break語句終止。
  • 每次增加的值i都作爲日誌打印在瀏覽器的控制檯中。直到終止。
0

一個無限循環會做到這一點。

var v = 0; 
while (true) { // <-- this runs forever! 
    console.log(v); 
    v ^= 1; 
} 

或1000的極限環

var v = 1000; 
 
while (v) { 
 
    out(v % 2); 
 
    v--; 
 
} 
 

 
// just for dispaying the result 
 
function out(s) { 
 
    var descriptionNode = document.createElement('div'); 
 
    descriptionNode.innerHTML = s + '<br>'; 
 
    document.getElementById('out').appendChild(descriptionNode); 
 
}
<div id="out"></div>

相關問題