Prefixový a postfixový typ v JavaScriptu
Operace inkrementace a dekrementace
lze ve skutečnosti zapsat dvěma způsoby. Pojďme
se na tyto způsoby podívat na příkladu ++,
a pro -- to bude analogické.
V prvním způsobu se operace zapíše za
název proměnné, takto: a++, a
ve druhém způsobu - před název proměnné,
takto: ++a.
První forma se nazývá postfixová, a druhá - prefixová. Pojďme se podívat, v jakých případech se projevuje rozdíl mezi těmito dvěma formami.
Předpokládejme, že máme kód alert(a++) a
kód alert(++a).
V případě alert(a++) se proměnná nejprve
vypíše a poté zvýší o jednu,
a v případě alert(++a) se proměnná nejprve
zvýší o jednu a poté se vypíše.
V následujícím příkladu první alert vypíše
0, protože nejprve dojde k výpisu
na obrazovku a teprve poté se proměnná zvýší:
let num = 0;
alert(num++); // vypíše 0
alert(num); // vypíše 1
A nyní se proměnná nejprve zvýší a až poté dojde k výpisu na obrazovku:
let num = 0;
alert(++num); // vypíše 1 - proměnná se zvýšila okamžitě
Toto chování platí nejen pro výpis na obrazovku, ale i pro přiřazení:
let num1 = 0;
let num2 = num1++; // do proměnné num2 se zapíše 0
alert(num2); // vypíše 0
alert(num1); // vypíše 1 - proměnná num1 se změnila po zápisu do num2
A nyní změníme postfixovou formu na prefixovou:
let num1 = 0;
let num2 = ++num1; // do proměnné num2 se zapíše 1
alert(num2); // vypíše 1
Pokud se naše operace provádí na samostatném řádku, pak není rozdíl mezi prefixovou a postfixovou formou:
let num = 0;
++num;
num++;
alert(num); // vypíše 2
Bez spuštění kódu určete, co se vypíše na obrazovku:
let num = 3;
alert(++num);
Bez spuštění kódu určete, co se vypíše na obrazovku:
let num = 3;
alert(num++);
Bez spuštění kódu určete, co se vypíše na obrazovku:
let num = 3;
alert(--num);
Bez spuštění kódu určete, co se vypíše na obrazovku:
let num = 3;
alert(num--);
Bez spuštění kódu určete, co se vypíše na obrazovku:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
Bez spuštění kódu určete, co se vypíše na obrazovku:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
Bez spuštění kódu určete, co se vypíše na obrazovku:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
Bez spuštění kódu určete, co se vypíše na obrazovku:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
Bez spuštění kódu určete, co se vypíše na obrazovku:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);