Prefiskový a postfiskový typ v JavaScripte
Operácie inkrementácie a dekrementácie
je možné zapísať dvoma spôsobmi. Poďme
sa pozrieť na tieto spôsoby na príklade ++,
a pre -- bude všetko analogické.
V prvom spôsobe sa operácia zapíše za
názov premennej, takto: a++, a
v druhom spôsobe - pred názov premennej,
takto: ++a.
Prvá forma sa nazýva postfisková, a druhá - prefisková. Poďme sa pozrieť, v akých prípadoch sa prejavuje rozdiel medzi týmito dvoma formami.
Majme kód alert(a++) a
kód alert(++a).
V prípade alert(a++) sa premenná najprv
vypíše a až potom zvýši o jednu,
a v prípade alert(++a) sa premenná najprv
zvýši o jednu a až potom sa vypíše.
V nasledujúcom príklade prvý alert vypíše
0, pretože najprv prebehne výpis
na obrazovku a až potom sa premenná zvýši:
let num = 0;
alert(num++); // vypíše 0
alert(num); // vypíše 1
A teraz sa premenná najprv zvýši a až potom prebehne výpis na obrazovku:
let num = 0;
alert(++num); // vypíše 1 - premenná sa zvýšila okamžite
Takéto správanie platí nielen pre výpis na obrazovku, ale aj pre priradenie:
let num1 = 0;
let num2 = num1++; // do premennej num2 sa zapíše 0
alert(num2); // vypíše 0
alert(num1); // vypíše 1 - premenná num1 sa zmenila po zápise do num2
A teraz zmeňme postfiskovú formu na prefiskovú:
let num1 = 0;
let num2 = ++num1; // do premennej num2 sa zapíše 1
alert(num2); // vypíše 1
Ak sa naša operácia vykoná na samostatnom riadku, nie je medzi prefiskovou a postfiskovou formou rozdiel:
let num = 0;
++num;
num++;
alert(num); // vypíše 2
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
let num = 3;
alert(++num);
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
let num = 3;
alert(num++);
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
let num = 3;
alert(--num);
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
let num = 3;
alert(num--);
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
Bez spustenia kódu určite, čo sa vypíše na obrazovku:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);