Typ prefiksowy i postfiksowy w JavaScript
W rzeczywistości operacje inkrementacji i dekrementacji
można zapisać na dwa sposoby. Przyjrzyjmy się
tym sposobom na przykładzie ++,
a dla -- wszystko będzie analogiczne.
W pierwszym sposobie operacja jest zapisywana po
nazwie zmiennej, w ten sposób: a++, a
w drugim sposobie - przed nazwą zmiennej,
w ten sposób: ++a.
Pierwsza forma nazywa się postfiksową, a druga - prefiksową. Zobaczmy, w jakich przypadkach pojawia się różnica między tymi dwiema formami.
Załóżmy, że mamy kod alert(a++) i
kod alert(++a).
W przypadku alert(a++) zmienna najpierw
zostanie wypisana, a następnie zwiększona o jeden,
a w przypadku alert(++a) zmienna najpierw
zostanie zwiększona o jeden, a następnie wypisana.
W następnym przykładzie pierwszy alert wypisze
0, ponieważ najpierw nastąpi wypisanie
na ekran, a dopiero potem zmienna zostanie zwiększona:
let num = 0;
alert(num++); // wypisze 0
alert(num); // wypisze 1
A teraz zmienna najpierw zostanie zwiększona, a dopiero potem nastąpi wypisanie na ekran:
let num = 0;
alert(++num); // wypisze 1 - zmienna zwiększyła się natychmiast
Takie zachowanie obowiązuje nie tylko dla wypisywania na ekran, ale także dla przypisania:
let num1 = 0;
let num2 = num1++; // do zmiennej num2 zostanie zapisane 0
alert(num2); // wypisze 0
alert(num1); // wypisze 1 - zmienna num1 zmieniła się po zapisaniu do num2
A teraz zmieńmy formę postfiksową na prefiksową:
let num1 = 0;
let num2 = ++num1; // do zmiennej num2 zostanie zapisane 1
alert(num2); // wypisze 1
Jeśli nasza operacja jest wykonywana w osobnym wierszu, to nie ma różnicy między formami prefiksową i postfiksową:
let num = 0;
++num;
num++;
alert(num); // wypisze 2
Bez uruchamiania kodu określ, co zostanie wypisane na ekran:
let num = 3;
alert(++num);
Bez uruchamiania kodu określ, co zostanie wypisane na ekran:
let num = 3;
alert(num++);
Bez uruchamiania kodu określ, co zostanie wypisane na ekran:
let num = 3;
alert(--num);
Bez uruchamiania kodu określ, co zostanie wypisane na ekran:
let num = 3;
alert(num--);
Bez uruchamiania kodu określ, co zostanie wypisane na ekran:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
Bez uruchamiania kodu określ, co zostanie wypisane na ekran:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
Bez uruchamiania kodu określ, co zostanie wypisane na ekran:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
Bez uruchamiania kodu określ, co zostanie wypisane na ekran:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
Bez uruchamiania kodu określ, co zostanie wypisane na ekran:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);