Skip to main content

Інкремент і декремент

Оператори ++ і -- - це інкремент і декремент, і їх часто плутають саме через різницю між префіксною та постфіксною формами. Розберемо все детально.


Що роблять оператори ++ і --

ОператорДіяПриклад
++збільшує значення змінної на 1i++i = i + 1
--зменшує значення змінної на 1i--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

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.