PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

В чем разница между i++ и ++i?

Продвинутые темы

`i++` (постфиксный) и `++i` (префиксный) оба увеличивают переменную на 1, но различаются возвращаемым значением: `i++` возвращает старое значение, `++i` — новое.

Различие в возвращаемом значении

i++ (постинкремент)

Возвращает значение до увеличения, затем увеличивает:

let i = 5;
let a = i++; // a = 5 (старое), i = 6

++i (преинкремент)

Увеличивает, затем возвращает новое значение:

let i = 5;
let b = ++i; // b = 6 (новое), i = 6

Наглядно

let x = 1;
console.log(x++); // 1 (выводит старое, потом x = 2)
console.log(x);   // 2

let y = 1;
console.log(++y); // 2 (сначала увеличивает, выводит новое)
console.log(y);   // 2

Когда это важно

  • Само значение переменной после операции одинаково (оба +1).
  • Разница проявляется только когда используется возвращаемое значение (в присваивании, выражении, аргументе).
const arr = [];
let i = 0;
arr[i++] = 'a'; // положит в arr[0], i станет 1

В обычном цикле

В for (let i = 0; i < n; i++) результат i++ не используется, поэтому i++ и ++i эквивалентны (микрооптимизация ++i незначима в JS).

Коротко для собеседования

i++ возвращает старое значение, потом увеличивает; ++i увеличивает, потом возвращает новое. Сама переменная в обоих случаях +1 — разница важна только когда используется возвращаемое значение (в выражении). В обычном for эквивалентны.

Другие вопросы раздела