Почему выводится только двойка?
Причину я знаю, я поменял во внутреннем цикле for вместо j++ на i++ и поэтому только 2 выводится в alert, но меня интересует причина?
Point: for (let i = 2; i <= 10; i++) {
for (let j = 2; j < i; i++) {
if (i % j == 0) continue Point;
}
alert( i );
}
Ответы (2 шт):
Автор решения: MBo
→ Ссылка
j так и остаётся равным 2, а i будет принимать значения 2,3,5,7,9, из которых чётное только первое
Автор решения: Grundy
→ Ссылка
Для понятия, что происходит необходимо добавить больше логов.
Point: for (let i = 2; i <= 10; console.log('first loop after', i, '->', i + 1), i++) {
console.log('first loop inside', i);
for (let j = 2; j < i; console.log('second loop after', i, '->', i + 1), i++) {
console.log('second loop inside', i, j);
if (i % j == 0) {
console.log('continue Point')
continue Point;
}
}
console.log('after', i);
}
Из них становится ясно:
на первой итерации во внутренний цикл вообще не заходит, поэтому выводится
afterс 2на последующих итерациях, во внутренний цикл поступает нечетное число
которое сменяется на четное
как следствие идет переход к следующей итерации внешнего цикла.
До вывода after - просто не доходит.
В итоге внешний цикл заканчивается.