2016-05-24 78 views
-2

我想減少值var i但我被困在無限循環中。無限for循環減2減去

for(var i=10;i>=0;i-2){ 
    console.log(i); 
} 

我發現下面給出的代碼正在工作,但上述代碼有什麼問題。

for(var i=10;i>=0;i-=2){ 
    console.log(i); 
} 
+0

在第一種情況下,i'的'值不被更新/分配... – Rayon

回答

1

分解for循環中的事件有助於解釋這一點。

  1. 迭代的變種i = 10
  2. 迭代運行i-=2這是短手i = i - 2 (錯誤代碼i-2絕不會用一個新值指定i) 它會再檢查條件的中間的for循環。
  3. 相同第二 ... 直到i >= 0
0

但什麼是錯的,上面的代碼。

因爲i-2實際上沒有遞減價值可言,所以i值不會改變在環路和i >=0永遠不會失敗,這就是爲什麼循環永遠不會結束。

0

在上面的代碼中,循環遞增器只是計算什麼是i-2。它從來沒有分配結果返回

0

第一個代碼將i設置爲8(可能),但在此之後從未更改。沒有增加(i ++或遞減i--或兩者的任何變化)