2016-04-14 116 views
0

爲什麼此警報顯示9但不是5或另一個數字?使用if和break語句循環

for (var i = 0; i < 9; i+=2) 
{ 
    if (++i == 5) break; 
    else continue; 
} 
alert(i++); 
+2

因爲您正在循環外調用警報。那時我的價值是9.它永遠不會滿足你的條件。 –

+0

非常感謝。 – Alexey

回答

0

您正在每個循環多次遞增您的索引。

首先傳遞變量爲1,因爲您在if塊中遞增0。

下一個變量的值爲3,因爲for塊中的增量值。

然後在if塊你把它從for增量遞增到4

然後6。

然後從if增加7。

然後9從for增量和for不再有效並中斷。

1

這應該4你如你所願。

for (var i = 0; i < 9; i+=2) 
{ 
    if (i++ == 5) { 
    alert(i++); 
    }; 
    else continue; 
} 

它會提醒當i值將是4

1

因爲你for loop體內的if statement不會進行評估,以true

像下面一樣你的代碼將被執行。

迭代1

if(1 == 5) //false 

迭代2

if(4 == 5) //false 

迭代3

if(7 == 5) //false 

第三後迭代,i將爲9,因此for循環的條件將在此時失敗並且循環結束。然後在循環外部,警報將打印i的值爲9.

1

這是因爲在您的循環中,當if (++i == 5) break檢查發生時,我從不5。

在第一次迭代中,我是0.但是,然後你的++i使我變成1,所以在第二次迭代中,我在循環的開始是3。然後++1讓我去4,所以在下一次迭代,它跳過了5(因此它永遠不會中斷),併成爲6.

它提醒9,因爲當這是我什麼時候你的循環已經完成。