このアラートで9が表示されますが、5または別の番号が表示されないのはなぜですか?ifとbreakステートメントを使用したループ
for (var i = 0; i < 9; i+=2)
{
if (++i == 5) break;
else continue;
}
alert(i++);
このアラートで9が表示されますが、5または別の番号が表示されないのはなぜですか?ifとbreakステートメントを使用したループ
for (var i = 0; i < 9; i+=2)
{
if (++i == 5) break;
else continue;
}
alert(i++);
ループごとにインデックスを増分しています。
if
ブロックで0をインクリメントしているため、最初の変数は1です。
for
ブロックのインクリメンタが原因で、次の変数は3になります。
次にif
ブロックにあなたはfor
増分から4
6にそれをインクリメントします。
次に、if
から7が増えます。
その後、for
の9が増加し、for
は有効でなくなり、中断されます。
これは、期待どおり4人で動作するはずです。
for (var i = 0; i < 9; i+=2)
{
if (i++ == 5) {
alert(i++);
};
else continue;
}
あなたfor loop
ボディ文句を言わないの内側if statement
がtrue
に評価されるのでi
値は4
になりますときに警告が表示されます。
以下のようにコードが実行されます。第三の後
反復1
if(1 == 5) //false
反復2
if(4 == 5) //false
反復3
if(7 == 5) //false
ループが終了すると、forループの状態は終了し、ループは終了します。ループの外側では、i
の値が9として出力されます。
これはループ内でif (++i == 5) break
のチェックが行われたとき、私は決して5ではないためです。
最初の反復では、iは0です。しかし、++i
はiを1にします。したがって、2番目の反復では、ループの開始時に3になります。それで++1
は私が4に行くので、次の反復では5を超えてスキップされ(したがって決して壊れない)6になります。
これは、ループが終了したとき。
ループ外でalertを呼び出すためです。その時、私の値は9です。そしてあなたのif条件を決して満たしません。 –
ありがとうございます。 – Alexey