2016-04-14 14 views
0

このアラートで9が表示されますが、5または別の番号が表示されないのはなぜですか?ifとbreakステートメントを使用したループ

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

ループ外でalertを呼び出すためです。その時、私の値は9です。そしてあなたのif条件を決して満たしません。 –

+0

ありがとうございます。 – Alexey

答えて

0

ループごとにインデックスを増分しています。

ifブロックで0をインクリメントしているため、最初の変数は1です。

forブロックのインクリメンタが原因で、次の変数は3になります。

次にifブロックにあなたはfor増分から4

その後

6にそれをインクリメントします。

次に、ifから7が増えます。

その後、forの9が増加し、forは有効でなくなり、中断されます。

1

これは、期待どおり4人で動作するはずです。

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

あなたfor loopボディ文句を言わないの内側if statementtrueに評価されるのでi値は4

1

になりますときに警告が表示されます。

以下のようにコードが実行されます。第三の後

反復1

if(1 == 5) //false 

反復2

if(4 == 5) //false 

反復3

if(7 == 5) //false 

ループが終了すると、forループの状態は終了し、ループは終了します。ループの外側では、iの値が9として出力されます。

1

これはループ内でif (++i == 5) breakのチェックが行われたとき、私は決して5ではないためです。

最初の反復では、iは0です。しかし、++iはiを1にします。したがって、2番目の反復では、ループの開始時に3になります。それで++1は私が4に行くので、次の反復では5を超えてスキップされ(したがって決して壊れない)6になります。

これは、ループが終了したとき。