2016-04-14 2 views
0

Почему это предупреждение показывает 9, но не 5 или другое число?Цикл с инструкциями if и break

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

Потому что вы вызываете предупреждение за пределы цикла. и в это время значение i равно 9. И оно никогда не удовлетворяет вашему условию if. –

+0

Спасибо вам большое. – Alexey

ответ

0

Вы увеличиваете свой индекс несколько раз за цикл.

Сначала передайте переменную 1, потому что вы увеличиваете 0 в своем блоке if.

Следующий проход переменной - 3, потому что ваш инкремент в блоке for.

Затем в if блоке вы увеличить его до 4.

Тогда 6 из приращения for.

Затем 7 из if приращение.

Тогда 9 из for increment и for не действует и не работает.

1

Это должно работать 4, как вы ожидаете.

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

Это предупредит, когда i значение будет 4.

1

if statement Поскольку внутри вашего тела for loop обыкновение быть оценена в true.

Как показано ниже, ваш код будет выполнен.

Итерация 1

if(1 == 5) //false 

Итерация 2

if(4 == 5) //false 

Итерация 3

if(7 == 5) //false 

После третьего итерация, i будет 9, поэтому условие цикла цикла завершится с ошибкой в ​​этой точке и конец цикла. Затем за пределами цикла предупреждение будет печатать значение i как 9.

1

Это потому, что в вашей петле i никогда не бывает 5, когда происходит проверка if (++i == 5) break.

На первой итерации i = 0. Но тогда ваш ++i делает i равным 1, поэтому на второй итерации i составляет 3 в начале цикла. Затем ++1 заставляет меня перейти на 4, поэтому на следующей итерации он пропустит более 5 (следовательно, он никогда не сломается) и станет 6.

Он оповещает 9, потому что когда это то, что я оставил, когда закончилась ваша петля ,