Добрый день , совсем недавно начал учить программирование на js , это мой первый ЯП , хотел бы у вас узнать как работают циклы внутри циклов, не могу сделать одну задачу (исключительно в учебных целях , копипаст мне не нужен, а толковое обьяснение, я здесь чтобы учится)
К примеру вот задача взята с learn.js.ru
Не понимаю как ведет себя j внутри i
nextPrime: for (var i = 2; i < 10; i++) {
for (var j = 2; j < i; j++) {
if (i % j === 0) continue nextPrime;
}
alert(i);
}
Надеюсь не заминусуете, спасибо если кто откликнется!
Давайте по очереди с комментариями в коде:
// Создаём цикл с названием nextPrime,
// где начальное значение - 2 (i = 2),
// максимальное значение - 9 (i < 10 = "<= 9")
nextPrime: for (var i = 2; i < 10; i++) {
// Создаём ещё один цикл без названия,
// где начальное значение - 2 (j = 2),
// максимальное значение - "i - 1" (j < i),
// т.е. из цикла выше (nextPrime)
// мы при каждом проходе получаем значение i (i = 2, i = 3, i = 4 и т.д.)
// и при каждом запуске этого внутреннего цикла -
// запускаем его на промежутке от 2 до текущего значения i,
// не включая его (2 <= j < i)
for (var j = 2; j < i; j++) {
// Если текущий i кратен j (i % j),
if (i % j === 0) {
// то останавливаем дальнейшее выполнение данной итерации цикла `nextPrime`
// (и все циклы, находящиеся внутри него)
// и переходим к следующей итерации
continue nextPrime;
}
}
// Выводим alert с текущим значением i (из цикла nextPrime),
// если данная итерация не была прервана при условии выше
alert(i);
}
Для закрепления приведу пример выполнения с нумерацией циклов, где первое значение - i, второе значение (через точку) - j (т.е.: "i.j)":
continue nextPrime;
continue nextPrime;
continue nextPrime;
continue nextPrime;
Вот так понятнее?
console.log("Начинаем внешний цикл");
nextPrime: for (var i = 2; i < 10; i++) {
console.log(" Итерация внешнего цикла. i = " + i);
if (2 < i)
console.log(" Начинаем внутренний цикл");
for (var j = 2; j < i; j++) {
console.log(" Итерация внутреннего цикла. j = " + j + ", i = " + i);
if (i % j === 0) {
console.log(" Условие (i % j === 0) выполнено. запускаем новую итерацию внешнего цикла");
continue nextPrime;
}
}
// alert(i);
console.log(" Закончили внутренний цикл. i = " + i);
}
console.log("Закончили внешний цикл");
Виртуальный выделенный сервер (VDS) становится отличным выбором
Помогите с запуском проекта, накрывает ошибками при сборке вебпака https://githubcom/cjsheets/angular-voting-app Не могу разобраться с firebase для него, в ридми толком...
Друзья, добрый день! Скажите, будьте любезны, существует ли книга "You don't know javascript" на русском?