Tipul prefix și postfix în JavaScript
De fapt, operațiile de incrementare și decrementare
pot fi scrise în două moduri. Să
analizăm aceste moduri folosind exemplul ++,
iar pentru -- totul va fi analog.
În primul mod, operația se scrie după
numele variabilei, astfel: a++, iar
în al doilea mod - înaintea numelui variabilei,
astfel: ++a.
Prima formă se numește postfix, iar a doua - prefix. Să vedem în ce cazuri apare diferența dintre aceste două forme.
Să presupunem că avem codul alert(a++) și
codul alert(++a).
În cazul alert(a++) variabila mai întâi
va fi afișată, și apoi va crește cu o unitate,
iar în cazul alert(++a) variabila mai întâi
va crește cu o unitate, și apoi va fi afișată.
În următorul exemplu, primul alert va afișa
0, deoarece mai întâi acționează afișarea
pe ecran, și abia apoi variabila crește:
let num = 0;
alert(num++); // va afișa 0
alert(num); // va afișa 1
Iar acum variabila mai întâi va crește, iar abia apoi va avea loc afișarea pe ecran:
let num = 0;
alert(++num); // va afișa 1 - variabila a crescut imediat
Acest comportament este valabil nu doar pentru afișarea pe ecran, ci și pentru atribuire:
let num1 = 0;
let num2 = num1++; // în variabila num2 se va scrie 0
alert(num2); // va afișa 0
alert(num1); // va afișa 1 - variabila num1 s-a schimbat după scrierea în num2
Iar acum să schimbăm forma postfix în prefix:
let num1 = 0;
let num2 = ++num1; // în variabila num2 se va scrie 1
alert(num2); // va afișa 1
Dacă operația noastră se execută pe un rând separat, atunci nu există diferență între formele prefix și postfix:
let num = 0;
++num;
num++;
alert(num); // va afișa 2
Fără a rula codul, determinați ce va fi afișat pe ecran:
let num = 3;
alert(++num);
Fără a rula codul, determinați ce va fi afișat pe ecran:
let num = 3;
alert(num++);
Fără a rula codul, determinați ce va fi afișat pe ecran:
let num = 3;
alert(--num);
Fără a rula codul, determinați ce va fi afișat pe ecran:
let num = 3;
alert(num--);
Fără a rula codul, determinați ce va fi afișat pe ecran:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
Fără a rula codul, determinați ce va fi afișat pe ecran:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
Fără a rula codul, determinați ce va fi afișat pe ecran:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
Fără a rula codul, determinați ce va fi afișat pe ecran:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
Fără a rula codul, determinați ce va fi afișat pe ecran:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);