Инкремент / декремент
Одной из наиболее частых числовых операций является увеличение или уменьшение на единицу. Для этого существуют специальные операторы, которые имеют две формы записи: постфиксную и префиксную.
- Инкремент ' ++ ' увеличивает переменную на 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
- Вывели на экран ++x. Это префиксный инкремент, поэтому сначала значение переменной увеличилось на 1, потом результат вернулся и вывелся на экран.
- Так как значение изменилось, console.log(x) вывел 6.
- Теперь выводим на экран x++. Это постфиксный инкремент, поэтому сначала значение вернулось и вывелось на экран, а потом переменная увеличилась на 1.
- Так как значение изменилось, console.log(x) вывел 7.
Подробно здесь -> learn.javascript.ru