Prefiks- ja postfikstüüp JavaScriptis
Tegelikult saab inkrementi ja dekrementi operatsioone
kirja panna kahel viisil. Vaatame
neid viise näite abil ++,
ja -- puhul on kõik sarnane.
Esimesel viisil kirjutatakse operatsioon pärast
muutuja nime, nii: a++, ja
teisel viisil - enne muutuja nime,
nii: ++a.
Esimest vormi nimetatakse postfiksseks, ja teist - prefiksseks. Vaatame, millistel juhtudel nende kahe vormi vahel erinevus ilmneb.
Olgu meil kood alert(a++) ja
kood alert(++a).
Juhul alert(a++) kuvatakse muutuja kõigepealt
ekraanile ja seejärel suurendatakse seda ühe võrra,
aga juhul alert(++a) suurendatakse muutujat kõigepealt
ühe võrra ja seejärel kuvatakse see ekraanile.
Järgmises näites kuvab esimene alert
väärtuse 0, kuna kõigepealt toimub ekraanile
kuvamine ja alles seejärel muutuja suureneb:
let num = 0;
alert(num++); // kuvab 0
alert(num); // kuvab 1
Nüüd suureneb muutuja kõigepealt ja alles seejärel toimub ekraanile kuvamine:
let num = 0;
alert(++num); // kuvab 1 - muutuja suurenes kohe
Selline käitumine kehtib mitte ainult ekraanile kuvamise, vaid ka omistamise puhul:
let num1 = 0;
let num2 = num1++; // muutujasse num2 kirjutatakse 0
alert(num2); // kuvab 0
alert(num1); // kuvab 1 - muutuja num1 muutus pärast num2-sse kirjutamist
Nüüd muudame postfiksvormi prefiksvormiks:
let num1 = 0;
let num2 = ++num1; // muutujasse num2 kirjutatakse 1
alert(num2); // kuvab 1
Kui meie operatsioon sooritatakse eraldi real, siis prefiks- ja postfiksvormi vahel erinevust pole:
let num = 0;
++num;
num++;
alert(num); // kuvab 2
Koodi käivitamata määrake, mis kuvatakse ekraanile:
let num = 3;
alert(++num);
Koodi käivitamata määrake, mis kuvatakse ekraanile:
let num = 3;
alert(num++);
Koodi käivitamata määrake, mis kuvatakse ekraanile:
let num = 3;
alert(--num);
Koodi käivitamata määrake, mis kuvatakse ekraanile:
let num = 3;
alert(num--);
Koodi käivitamata määrake, mis kuvatakse ekraanile:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
Koodi käivitamata määrake, mis kuvatakse ekraanile:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
Koodi käivitamata määrake, mis kuvatakse ekraanile:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
Koodi käivitamata määrake, mis kuvatakse ekraanile:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
Koodi käivitamata määrake, mis kuvatakse ekraanile:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);