@MishaXXL

Из-за чего инкрементация в for и while срабатывает по разному?

Почему в цикле for ++i не инкрементируется сразу и аналогично логике i++?
А в while не важно ++i или i++, инкремент срабатывает до тела цикла?

for(let i = 1; i < 10; ++i) {
  console.log(i)
}

let i = 1

while(i++) {
  if(i > 9) break
  console.log(i)
}
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
Обратите внимание на конструкцию for.
Вы не замечаете, что выражения между скобками разделены не запятой, как, например, в аргументах функции, а точкой с запятой?

Так создатели языка как бы намекают нам, что тут что-то не так, как обычно, что эти выражения выполняются в разное время, на разных этапах прохождения цикла.

Уяснив этот момент, можно пойти в документацию, прочитать там все, а особенно обратить внимание на табличку, где расписано, когда именно выполняется каждая составная часть цикла for. И тогда вам всё станет гораздо понятнее.
https://learn.javascript.ru/while-for

Советы:
1. Всегда читайте документацию, если вам что-то не понятно в конструкциях языка. Не туториалы от балбесов с Ютуба, а документацию. И желательно оригинальную на английском, потому что переводчики иногда такие же балбесы.

2. Не используйте никаких циклов, кроме for. Он очень мощный и позволяет реализовать функциональность и while и do-while. Так вы убережёте себя от таких ситуаций. Я за много лет работы понял, что большое количество конструкций языка скорее вредно, чем полезно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы