Інкремент і декремент
Оператори ++ і -- - це інкремент і декремент,
і їх часто плутають саме через різницю між префіксною та постфіксною формами.
Розберемо все детально.
Що роблять оператори ++ і --
| Оператор | Дія | Приклад |
|---|---|---|
++ | збільшує значення змінної на 1 | i++ → i = i + 1 |
-- | зменшує значення змінної на 1 | i-- → i = i - 1 |
Але важливо: залежно від розташування (
++iабоi++) результат виразу може бути різним.
Префіксна форма (++i, --i)
Спочатку змінює значення змінної, а потім повертає нове значення.
javascript
let i = 5;
let result = ++i; // спочатку i = 6, потім повертається 6
console.log(i); // 6
console.log(result); // 6Тобто:
- Збільшує/зменшує змінну.
- Повертає нове значення.
Постфіксна форма (i++, i--)
Спочатку повертає старе значення, а потім змінює змінну.
javascript
let i = 5;
let result = i++; // спочатку поверне 5, потім збільшить i до 6
console.log(i); // 6
console.log(result); // 5Тобто:
- Повертає старе значення.
- І лише потім змінює змінну.
Різниця на прикладі
javascript
let a = 1;
console.log(a++); // 1 → спочатку виводить, потім збільшує
console.log(a); // 2
let b = 1;
console.log(++b); // 2 → спочатку збільшує, потім виводить
console.log(b); // 2У виразах
Ця різниця особливо помітна, коли оператор використовується всередині виразу:
javascript
let x = 10;
let y = x++ + 5; // y = 10 + 5 = 15, потім x = 11
let a = 10;
let b = ++a + 5; // a = 11, b = 16| Форма | Зміна змінної | Значення, що повертається |
|---|---|---|
++i | Збільшує одразу | Нове значення |
i++ | Збільшує потім | Старе значення |
--i | Зменшує одразу | Нове значення |
i-- | Зменшує потім | Старе значення |
У циклах
Зазвичай форма i++ використовується в циклах,
тому що результат виразу не використовується явно:
javascript
for (let i = 0; i < 5; i++) {
console.log(i);
}Тут немає різниці між
i++і++i, тому що значення, яке повертається, не використовується.
Підсумок
| Форма | Коли змінює | Що повертає | Приклад результату |
|---|---|---|---|
++i | Одразу | Нове значення | let i=1; console.log(++i) → 2 |
i++ | Після | Старе значення | let i=1; console.log(i++) → 1 |
--i | Одразу | Нове значення | let i=3; console.log(--i) → 2 |
i-- | Після | Старе значення | let i=3; console.log(i--) → 3 |
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.