Для продолжения цикла, почему результирующее число 16?

#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:

Давайте проследим за этим:

  1. sum = 0
  2. В начале цикла, i = 4 .
  3. i < 8 верно, поэтому цикл продолжается (да, эта проверка выполняется в самом начале)
  4. Поскольку i == 6 равно false, continue этого не происходит
  5. sum = i устанавливает sum в 4
  6. i устанавливает i в 5 ;
  7. i < 8 верно, поэтому цикл продолжается
  8. i == 6 равно false, поэтому continue не происходит
  9. sum = i устанавливает sum в 9
  10. i устанавливает i в 6
  11. i < 8 верно, поэтому цикл продолжается
  12. Поскольку i == 6 имеет значение true, continue переходит к следующей итерации цикла, пропуская остальную часть тела цикла
  13. i устанавливает i в 7
  14. i == 6 равно false, поэтому continue не происходит
  15. sum = i устанавливает sum в 16
  16. i устанавливает i в 8
  17. 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:

Это то, что происходит в следующем цикле

  1. изначально sum является 0
  2. после добавления первого цикла i(4) в sum
  3. во втором цикле i(5) добавляется так sum , что становится 9
  4. в третьем цикле ничего не добавляется к, sum потому что i=6 оператор so continue будет выполнен перед добавлением i к sum
  5. последний последний цикл i(7) добавляется к сумме, и результат становится 16 .
  6. поскольку условием для цикла является i<8 , то последнее добавленное значение должно быть 7