JavaScript: инкремент и декремент
операторы инкремента и декремента в JavaScript
Итак, вопрос: выражения ++x
и x++
одинаковы или нет? Если ответить коротко - и да, и нет.
Синтаксис
- инкремент:
++x
илиx++
, - декремент:
--x
илиx--
.
Рассмотрим пример:
// Case 1
let x1 = 0;
x1++;
x1++;
x1++;
console.log(x1); //3 ok
// Case 2
let x2= 0;
++x2;
++x2;
++x2;
console.log(x2); //3 ok
// Case 3
let x3= 1;
console.log(x3++); // 1 !!! Что случилось?
console.log(x3); // 2 ok
// Case 4
let x4= 1;
console.log(++x4); // 2 ok
console.log(x4); // 2 ok
Что же случилось в третьем примере.
Мы видим, что при выводе console.log(x3++);
значение переменной x3
не изменилось - это произошло потому, что значение операнда при использовании постфиксного инкремента (как и декремента) возвращается до его изменения.
В следующей строке кода console.log(x3);
мы вывели значение переменной, которое уже изменилось в предыдущей строке.
Если обратиться к четвертому примеру, console.log(++x4);
выведет уже измененное значение - это особенность использования префиксных операторов инкремента и декремента: значение переменной сначала изменяется, а потом выводится.
Еще раз обратимся к примерам, но теперь уже с операторами декремента:
// Case 5
let x5= 1;
console.log(x5--); // 1 !!! What happens?
console.log(x5); // 0
// Case 6
let x6= 1;
console.log(--x6); // 0 ok
console.log(x6); // 0 ok
Надеюсь, это материал будет полезен начинающим разработчикам.
Спасибо за внимание.