Prefiksinis ir postfiksinis tipas JavaScript
Iš tikrųjų inkremento ir dekremento operacijos
gali būti užrašomos dviem būdais. Pažiūrėkime
šiuos būdus su pavyzdžiu ++,
o -- viskas bus analogiška.
Pirmuoju būdu operacija rašoma po
kintamojo pavadinimo, štai taip: a++, o
antruoju būdu - prieš kintamojo pavadinimą,
štai taip: ++a.
Pirmoji forma vadinama postfiksine, o antroji - prefiksine. Pažiūrėkime, kokiais atvejais pasireiškia skirtumas tarp šių dviejų formų.
Tarkime, turime kodą alert(a++) ir
kodą alert(++a).
Atveju alert(a++) kintamasis pirma
bus atvaizduotas, o tada padidintas vienetu,
o atveju alert(++a) kintamasis pirma
bus padidintas vienetu, o tada atvaizduotas.
Šiame pavyzdyje pirmasis alert atvaizduos
0, nes pirma įvyks atvaizdavimas
ekrane, o tik tada kintamasis padidės:
let num = 0;
alert(num++); // atvaizduos 0
alert(num); // atvaizduos 1
O dabar kintamasis pirma padidės, o tada bus atvaizduotas ekrane:
let num = 0;
alert(++num); // atvaizduos 1 - kintamasis padidėjo iš karto
Toks elgesys tinka ne tik atvaizdavimui ekrane, bet ir priskyrimui:
let num1 = 0;
let num2 = num1++; // į kintamąjį num2 bus įrašyta 0
alert(num2); // atvaizduos 0
alert(num1); // atvaizduos 1 - kintamasis num1 pasikeitė po įrašymo į num2
O dabar pakeiskime postfiksine forma į prefiksinę:
let num1 = 0;
let num2 = ++num1; // į kintamąjį num2 bus įrašyta 1
alert(num2); // atvaizduos 1
Jei mūsų operacija atliekama atskirame teksto eilutėje, tarp prefiksinės ir postfiksinės formų skirtumo nėra:
let num = 0;
++num;
num++;
alert(num); // atvaizduos 2
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
let num = 3;
alert(++num);
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
let num = 3;
alert(num++);
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
let num = 3;
alert(--num);
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
let num = 3;
alert(num--);
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
Nepaleisdami kodo, nustatykite, kas bus atvaizduota ekrane:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);