вернуться к уроку

Какие значения i выведет цикл while?

важность: 4
  1. От 1 до 4

    var i = 0;
    while (++i < 5) alert( i );

    Первое значение: i=1, так как операция ++i сначала увеличит i, а потом уже произойдёт сравнение и выполнение alert.

    Далее 2,3,4.. Значения выводятся одно за другим. Для каждого значения сначала происходит увеличение, а потом – сравнение, так как ++ стоит перед переменной.

    При i=4 произойдет увеличение i до 5, а потом сравнение while(5 < 5) – это неверно. Поэтому на этом цикл остановится, и значение 5 выведено не будет.

  2. От 1 до 5

    var i = 0;
    while (i++ < 5) alert( i );

    Первое значение: i=1. Остановимся на нём подробнее. Оператор i++ увеличивает i, возвращая старое значение, так что в сравнении i++ < 5 будет участвовать старое i=0.

    Но последующий вызов alert уже не относится к этому выражению, так что получит новый i=1.

    Далее 2,3,4.. Для каждого значения сначала происходит сравнение, а потом – увеличение, и затем срабатывание alert.

    Окончание цикла: при i=4 произойдет сравнение while(4 < 5) – верно, после этого сработает i++, увеличив i до 5, так что значение 5 будет выведено. Оно станет последним.

Для каждого цикла запишите, какие значения он выведет. Потом сравните с ответом.

  1. Префиксный вариант

    var i = 0;
    while (++i < 5) alert( i );
  2. Постфиксный вариант

    var i = 0;
    while (i++ < 5) alert( i );