Инкремент / декремент

Одной из наиболее частых числовых операций является увеличение или уменьшение на единицу. Для этого существуют специальные операторы, которые имеют две формы записи: постфиксную и префиксную.

  • Инкремент ' ++ ' увеличивает переменную на 1.
  • Декремент ' -- ' уменьшает переменную на 1.

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

Все операторы возвращают значение. Операторы инкремента/декремента не исключение. Но в отличие от всех остальных операций, которые не имеют побочных эффектов и просто возвращают новое значение, инкремент и декремент не только возвращают значение, но и изменяют значение переменной! Кажется, что нет никакой разницы между постфиксной и префиксной формами. Но тут начинаются сложности:

// Префикс
let i = 0;
console.log(i++, i); // 0 1
console.log(i++, i); // 1 2
console.log(i--, i); // 2 1
console.log(i--, i); // 1 0

// Постфикс
i = 0;
console.log(++i, i); // 1 1
console.log(++i, i); // 2 2
console.log(--i, i); // 1 1
console.log(--i, i); // 0 0
  • При использовании префиксной нотации сначала происходит изменение переменной, а потом возврат.
  • При использовании постфиксной нотации сначала происходит возврат, а потом изменение переменной.

  • Если результат оператора не используется, а нужно только увеличить/уменьшить переменную, тогда без разницы, какую форму использовать.
  • Если хочется сразу использовать результат, то нужна префиксная форма.
  • Если нужно увеличить и при этом получить значение переменной до увеличения – нужна постфиксная форма.
  • Инкремент/декремент можно применить только к переменной. Попытка использовать его на значении (3++) приведёт к ошибке!

Пример:

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

console.log(x++); // => 6
console.log(x);   // => 7
  1. Вывели на экран ++x. Это префиксный инкремент, поэтому сначала значение переменной увеличилось на 1, потом результат вернулся и вывелся на экран.
  2. Так как значение изменилось, console.log(x) вывел 6.
  3. Теперь выводим на экран x++. Это постфиксный инкремент, поэтому сначала значение вернулось и вывелось на экран, а потом переменная увеличилась на 1.
  4. Так как значение изменилось, console.log(x) вывел 7.

Подробно здесь -> learn.javascript.ru

openImgPic