почему последний alert(i) выводит 3, а не 2 (как последнее значение)? Как вообще цикл возвращает значение?
let i = 0;
for (i = 0; i < 3; i++) { // используем существующую переменную
alert(i); // 0, 1, 2
}
alert(i); // 3, переменная доступна, т.к. была объявлена снаружи цикла
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
Потому что после каждой итерации i увеличивается на единицу. После (не внутри) третьей итерации i равно 3. Перед четвертой итерацией происходит проверка условия i < 3, и цикл прерывается.
Автор решения: Zhihar
→ Ссылка
циклы for выглядят так:
i = 0;
cycle:
тело цикла
i ++;
if условие
goto cycle;
циклы while выглядят так:
cycle:
if not(условие):
goto end;
тело цикла
goto cycle;
end:
циклы do while (там где они есть) выглядят так:
cycle:
тело цикла
if условие:
goto end;
goto cycle;
end:
Так что в вашем случае было так:
i = 0;
cycle:
тело цикла
i ++;
if (i < 3)
goto cycle;
так что на выходе получается i = 3