BeriaFantom
@BeriaFantom
Full Stack Razrabotchik

Как работает оператор декремента в JS?

Оператор, инкремента вполне понятен. ++n сначала увеличит значение на один, а потом вернет это значение. n++ наоборот. А вот что с оператором декремента? Почему он наоборот работает?
Пример:
var n;
for(n = 10; --n;) {
	console.log(n);
}

В таком пример инструкция for будет выполняться до 1, хотя --n должен сначала уменьшить значение на 1, а потом вернуть его. если же поменять на n--, то консоль покажет до нуля, хотя n-- сначала возвращает значение, а потом уменьшает. Поясните, пожалуйста, в чем дело? Не совсем понимаю, с инкрементой все ясно.
  • Вопрос задан
  • 333 просмотра
Решения вопроса 3
@GreatRash
Потому что вы видимо плохо представляете как устроен цикл for. Он будет отрабатывать пока --n === true. В случае --n, там сразу окажется 0, т.е. false и цикл остановится, таким образом нуля вы не увидите никогда. В случае с n--, там будет пока ещё единица и цикл продолжится, а на момент вызова лога n уже станет нулём.

// последняя итерация цикла

for (n = 10; --n;) { // n === 0
  console.log(n); // сюда не зайдёт ибо 0 == false
}

for (n = 10; n--;) { // n === 1
  console.log(n); // а вот тут уже n === 0
}
Ответ написан
Ну вы же всё правильно пишите. Ваш for можно переписать в такое:
while (Boolean(--n) === true) {
     console.log(n);
}

Так понятнее?
Ответ написан
@antonowano
Профессиональный самоучка
просто вы не пользовались логикой при составлении цикла :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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