Префиксный и постфиксный тип в JavaScript

На самом деле операции инкремента и декремента можно записывать двумя способами. Давайте рассмотрим эти способы на примере ++, а для -- все будет аналогично.

В первом способе операция записывается после имени переменной, вот так: a++, а во втором способе - перед именем переменной, вот так: ++a.

Первая форма называется постфиксной, а вторая - префиксной. Давайте посмотрим, в каких случаях проявляется разница между этими двумя формами.

Пусть у нас есть код alert(a++) и код alert(++a).

В случае alert(a++) переменная сначала выведется, а потом увеличится на единицу, а в случае alert(++a) переменная сначала увеличится на единицу, а потом выведется.

В следующем примере первый alert выведет 0, так как вначале сработает вывод на экран, а уже затем переменная увеличится:

javascriptlet num = 0;
alert(num++); // выведет 0
alert(num);   // выведет 1

А теперь переменная вначале увеличится, а уже затем будет вывод на экран:

javascriptlet num = 0;
alert(++num); // выведет 1 - переменная увеличилась сразу

Такое поведение справедливо не только для вывода на экран, но и для присваивания:

javascriptlet num1 = 0;
let num2 = num1++; // в переменную num2 запишется 0
alert(num2); // выведет 0
alert(num1); // выведет 1 - переменная num1 поменялась после записи в num2

А теперь поменяем постфиксную форму на префиксную:

javascriptlet num1 = 0;
let num2 = ++num1; // в переменную num2 запишется 1
alert(num2); // выведет 1

Если наша операция выполняется на отдельной строке, то разницы между префиксной и постфиксной формами нет:

javascriptlet num = 0;
++num;
num++;
alert(num); // выведет 2
Задание 1

Не запуская код, определите, что выведется на экран:

javascriptlet num = 3;
alert(++num);
Задание 2

Не запуская код, определите, что выведется на экран:

javascriptlet num = 3;
alert(num++);
Задание 3

Не запуская код, определите, что выведется на экран:

javascriptlet num = 3;
alert(--num);
Задание 4

Не запуская код, определите, что выведется на экран:

javascriptlet num = 3;
alert(num--);
Задание 5

Не запуская код, определите, что выведется на экран:

javascriptlet num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
Задание 6

Не запуская код, определите, что выведется на экран:

javascriptlet num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
Задание 7

Не запуская код, определите, что выведется на экран:

javascriptlet num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
Задание 8

Не запуская код, определите, что выведется на экран:

javascriptlet num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
Задание 9

Не запуская код, определите, что выведется на экран:

javascriptlet num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);