Операторы инкремента и декремента

Операторы инкремента и декремента

Технический фундамент счетчиков и шагов

Инкремент/декремент часто управляют критичными сценариями:

  • лимиты попыток, пагинация, индексы, шаги процессов;
  • префикс и постфикс отличаются по возвращаемому значению;
  • смешение ++/-- в сложных выражениях ухудшает читаемость;
  • надежнее обновлять счетчики в явно контролируемых точках.

Правильная работа с шаговыми изменениями снижает логические ошибки в состоянии процесса.

Где ++ и -- реально используются

Инкремент и декремент увеличивают или уменьшают числовое значение на 1. Это базовый паттерн для счетчиков, индексов, шагов интерфейса, лимитов попыток, pagination.

Ключевой момент: ++ и -- работают только с изменяемой переменной, а не с литералом или const.

Проверь себя: почему const count = 0; count++ приводит к ошибке?

Базовый синтаксис

let count = 0;
count++; // 1
count++; // 2
count--; // 1

Это сокращенная форма:

  • count++ эквивалентно count = count + 1;
  • count-- эквивалентно count = count - 1.

Смотри, что важно: итоговое значение переменной меняется на месте.

Префикс и постфикс

Есть две формы:

  • ++x (префикс): сначала изменение, потом значение;
  • x++ (постфикс): сначала текущее значение, потом изменение.
let x = 5;
console.log(++x); // 6

let y = 5;
console.log(y++); // 5
console.log(y); // 6

Здесь часто путаются: в выражениях поведение префикса и постфикса различается.

Проверь себя: что выведет let z = 1; console.log(z++ + z); и почему?

Мини-сценарий: попытки входа

let attempts = 0;

function registerAttempt() {
  attempts++;
  if (attempts >= 3) return 'locked';
  return 'retry';
}

Это типичная логика: каждое действие увеличивает счетчик на 1.

Если случайно заменить на attempts--, бизнес-правило полностью ломается.

Когда лучше выбрать += 1

++ коротко, но в сложных выражениях может быть менее читаемым. Иногда value += 1 воспринимается проще и прозрачнее, особенно в команде с разным опытом.

index += 1;

Анти-провал: не используй ++ внутри перегруженных выражений, где поведение сложно предсказать с первого взгляда.

Частые ошибки новичков

  • Применять ++ к const.
  • Путать префикс и постфикс в выражениях.
  • Менять счетчик в нескольких местах без контроля.
  • Использовать ++ там, где код теряет читаемость.

Проверь себя: почему counter = counter++ - опасный шаблон?

Потому что постфиксный инкремент возвращает старое значение, а присваивание тут же перезаписывает переменную этим старым значением:

let counter = 0;
counter = counter++;
console.log(counter); // 0 (инкремент "потерялся")

Анти-провал: делай либо просто counter++, либо counter += 1, но не смешивай инкремент с присваиванием в одной строке.

Что будет, если изменить входные данные

Если attempts по ошибке приходит строкой '0', attempts++ сработает из-за приведения типов, но такой код становится хрупким. Лучше явно гарантировать числовой тип перед изменением счетчика.

Краткий итог

  • ++ и -- меняют числовое значение на единицу.
  • Они удобны для счетчиков и индексов.
  • Префиксная и постфиксная формы отличаются в выражениях.
  • Для надежности избегай сложных конструкций с побочными эффектами.
  • Явный контроль типа и места изменения счетчика делает код стабильнее.