#javascript
#javascript
Вопрос:
Я начинаю изучать программирование, и есть особая часть курса, которая проносится у меня над головой, в разделе continue о циклах for меня попросили написать выходные данные этого кода:
var sum=0;
for(i=4; i<8; i ) {
if (i == 6) {
continue;
}
sum = i;
}
document.write(sum);
и по какой-то причине оно должно быть равно 16, я просто не могу себе представить, почему, заранее благодарю вас!
Комментарии:
1. Здесь лучше всего выполнить это шаг за шагом в отладчике и / или обработать это на бумаге. (Использование отладчика не является продвинутым навыком, это в основном следующее, что студент должен изучить после «Привет, мир».)
2. 4 5 7 = 16 для значения 6, после этого функция просто пропускает функцию и продолжает итерацию
3. Вы должны использовать консоль. войдите в систему для целей отладки и посмотрите, что вы делаете шаг за шагом
4. @MiguelCruz — Нет, он / она должен использовать отладчик для целей отладки. Нет смысла шататься в темноте с
console.log
фонариком, когда вы включаете свет с помощью отладчика.5. Пожалуйста, когда вы задаете вопрос, уделите минуту или две отступу в вашем коде. Это облегчает чтение.
Ответ №1:
Давайте проследим за этим:
sum = 0
- В начале цикла,
i = 4
. i < 8
верно, поэтому цикл продолжается (да, эта проверка выполняется в самом начале)- Поскольку
i == 6
равно false,continue
этого не происходит sum = i
устанавливаетsum
в4
i
устанавливаетi
в5
;i < 8
верно, поэтому цикл продолжаетсяi == 6
равно false, поэтомуcontinue
не происходитsum = i
устанавливаетsum
в9
i
устанавливаетi
в6
i < 8
верно, поэтому цикл продолжается- Поскольку
i == 6
имеет значение true,continue
переходит к следующей итерации цикла, пропуская остальную часть тела цикла i
устанавливаетi
в7
i == 6
равно false, поэтомуcontinue
не происходитsum = i
устанавливаетsum
в16
i
устанавливаетi
в8
i < 8
равно false, поэтому цикл останавливается
Шаг # 12, вероятно, самый интересный шаг: continue
пропускается остальная часть тела цикла, переходя к следующей итерации цикла. Подробнее о continue
MDN.
Иными словами: цикл устанавливается в i
значение 4
, увеличивается i
один раз за цикл и продолжается во время i < 8
. Это означает, что в теле цикла i
будет 4
, затем 5
, затем 6
, затем 7
. В теле цикла sum = i
добавляется i
к sum
за исключением случаев, когда i == 6
because continue
пропускает эту часть. Так sum = i
происходит для 4
, 5
и 7
. Поскольку sum
начинается с 0
, это 0 4 5 7
который 16
.
Комментарии:
1. Чтобы упростить: код выводит не значение
i
, а сумму значенийi
от 4 до 7, за исключением 6.
Ответ №2:
Это то, что происходит в следующем цикле
- изначально
sum
является0
- после добавления первого цикла
i(4)
вsum
- во втором цикле
i(5)
добавляется такsum
, что становится9
- в третьем цикле ничего не добавляется к,
sum
потому чтоi=6
оператор socontinue
будет выполнен перед добавлениемi
кsum
- последний последний цикл
i(7)
добавляется к сумме, и результат становится16
. - поскольку условием для цикла является
i<8
, то последнее добавленное значение должно быть7