@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)
}
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
Обратите внимание на конструкцию for.
Вы не замечаете, что выражения между скобками разделены не запятой, как, например, в аргументах функции, а точкой с запятой?

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
24 июн. 2024, в 16:26
1500 руб./за проект
24 июн. 2024, в 16:17
60000 руб./за проект
24 июн. 2024, в 16:09
2000 руб./за проект