2013-03-04 57 views
0

我正在研究CodeAcademy試圖學習一些JavaScript,而且我實際上遇到了這個有趣的事情。請看看這裏:For Loop沒有達到5

for(var counter = 100; counter > 0; counter = counter - 5){ 
    console.log(counter); 
} 

在這裏,我告訴循環來遍歷一個打印櫃檯數量,只要計數器大於0,但它只是結束了打印100..95..90等下跌到5. 我知道如何解決這個問題,只需在大於號後加上一個簡單的等號。 像這樣:

for(var counter = 100; counter >= 0; counter = counter - 5){ 
    console.log(counter); 
} 

但我想知道爲什麼這不起作用不同?我的意思是它結束了一個5,5的輸出大於0,不是嗎?當我在等號之前加上等號時,它確實應該輸出一些未定義的數字,因爲即使計數器等於0,它也應該循環。我的頭因此受傷。 有人請解釋,謝謝:)

+1

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/for,特別是「在每次循環迭代之前要評估的表達式」。 – j08691 2013-03-04 22:00:22

回答

2

不,它不應該繼續循環,一旦它達到零。 for循環的工作方式是這樣的:

for (initialization; condition; increment) { 
    body; 
} 

它順序執行這些操作:

initialization 
loop { 
    condition true? then: 
     body 
     increment 
    else: 
     stop loop 
} 

所以,當該計數器達到零,病情會是假的,並不會被人體用值爲「0」的計數器執行,它將簡單地停止。然而,當你把> =時,條件在那一點仍然是正確的。

2

的英文翻譯「for」循環是:

  1. 集計數器100
  2. 如果計數器> 0是不正確的,最終該塊
  3. 運行該代碼塊(在這種情況下, ,日誌計數器)
  4. 由5
  5. 回去減少計數器到步驟2

因此,在這種情況下,如果計數器爲零,它不是> 0,因此代碼不會返回到步驟2.而在第二種情況下,它大於= 0,因此它最後一次運行。

1

讓我們來看看這裏發生了什麼,

當你說counter > 0,那麼它應該繼續,直到它是嚴格大於零。由於零不會大於自身,因此循環停止在5.

當您將表達式更改爲counter>=0時,它會告訴編譯器繼續計數,直到計數器大於或等於零,因此它會繼續也打印零。

+0

所以在這個循環中使用(大於或等於)符號實際上是正確的?你會推薦,還是其他的? :) – user2097217 2013-03-04 22:04:44

+0

你說什麼?回合呢? – user2097217 2013-03-04 22:44:18

+0

在這種情況下使用'> ='符號是正確的。有多種方式可以使其達到零。最直接的是保持'counter> = 0',否則你可以說'counter> -1' – 2013-03-05 01:27:45