glem1337
@glem1337

Почему цикл в js работает именно так?

Начал изучать js. Дошел до темы циклов. Есть один пример, который в диапазоне от 2 до 10 выводит простые числа. Ссылка на пример: https://jsfiddle.net/glem1337/j4s0wqs5/
На первой итерации: i = 2; j=2; второй цикл вообще не запуститься и управление перейдет сразу на alert. alert выведет 2. Потом произойдет i++.
На второй итерации: i=3; j=2; В этот раз тело по циклу j запустится. Остаток от деления 3 на 2 равен 1. 1 не равняется нулю, по-этому переход по метке не сработает. Сработает j++, и цикл по j закончится. Управление перейдет на alert, вывод будет 3. Сработает переход i++.
На третьей итерации(именно здесь у меня недопонимание): i=4; j=3; Остаток от деления 4 на 3 равен 1. 1 не равна 0, по-этому переход по метке не произойдет. По идее управление должно перейти на alert и вывести 4. Но этого почему-то не происходит.

Объясните, пожалуйста, где и что, я пропустил в понимании работы циклов.
  • Вопрос задан
  • 133 просмотра
Решения вопроса 2
longclaps
@longclaps
На третьей итерации: i=4; j=3;

А с чего это j==3, ведь внутренний цикл перезапускается с начала.
Ответ написан
@DanKud
Внутренний цикл j перезапускается заново каждую итерацию i. Следовательно на каждой итерации, в том числе на третьей, первоначально var j = 2. Получается первый же этап цикла 4 % 2 == 0 не имеет остатка и удовлетворяет наше условие. Таким образом все четные значения i будут удовлетворять условие i % 2 == 0 и не выводиться в alert
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы