Почему выводится только двойка?

Причину я знаю, я поменял во внутреннем цикле 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);
}

Из них становится ясно:

  1. на первой итерации во внутренний цикл вообще не заходит, поэтому выводится after с 2

  2. на последующих итерациях, во внутренний цикл поступает нечетное число

  3. которое сменяется на четное

  4. как следствие идет переход к следующей итерации внешнего цикла.

До вывода after - просто не доходит.

В итоге внешний цикл заканчивается.

→ Ссылка