Префиксен и постфиксен тип в JavaScript
Всъщност операциите инкремент и декремент
могат да бъдат записани по два начина. Нека
разгледаме тези начини с пример ++,
а за -- всичко ще бъде аналогично.
В първия начин операцията се записва след
името на променливата, ето така: a++, а
във втория начин - преди името на променливата,
ето така: ++a.
Първата форма се нарича постфиксна, а втората - префиксна. Нека видим в какви случаи се проявява разликата между тези две форми.
Нека имаме код alert(a++) и
код alert(++a).
В случая с alert(a++) променливата първо
ще се изведе, а след това ще се увеличи с единица,
а в случая с alert(++a) променливата първо
ще се увеличи с единица, а след това ще се изведе.
В следващия пример първият alert ще изведе
0, тъй като първо ще се изпълни извеждането
на екрана, и едва след това променливата ще се увеличи:
let num = 0;
alert(num++); // ще изведе 0
alert(num); // ще изведе 1
А сега променливата първо ще се увеличи, а едва след това ще се извърши извеждането на екрана:
let num = 0;
alert(++num); // ще изведе 1 - променливата се увеличи веднага
Такова поведение е в сила не само за извеждане на екрана, но и за присвояване:
let num1 = 0;
let num2 = num1++; // в променливата num2 ще се запише 0
alert(num2); // ще изведе 0
alert(num1); // ще изведе 1 - променливата num1 се промени след записването в num2
А сега нека сменим постфиксната форма с префиксна:
let num1 = 0;
let num2 = ++num1; // в променливата num2 ще се запише 1
alert(num2); // ще изведе 1
Ако нашата операция се изпълнява на отделен ред, то няма разлика между префиксната и постфиксната форми:
let num = 0;
++num;
num++;
alert(num); // ще изведе 2
Без да пускате кода, определете какво ще се изведе на екрана:
let num = 3;
alert(++num);
Без да пускате кода, определете какво ще се изведе на екрана:
let num = 3;
alert(num++);
Без да пускате кода, определете какво ще се изведе на екрана:
let num = 3;
alert(--num);
Без да пускате кода, определете какво ще се изведе на екрана:
let num = 3;
alert(num--);
Без да пускате кода, определете какво ще се изведе на екрана:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
Без да пускате кода, определете какво ще се изведе на екрана:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
Без да пускате кода, определете какво ще се изведе на екрана:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
Без да пускате кода, определете какво ще се изведе на екрана:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
Без да пускате кода, определете какво ще се изведе на екрана:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);