JavaScript
Czyli, jak ruda stronę www tworzyła?

JavaScript

...

Operatory dekrementacji i inkrementacji

Inkrementacja i dekrementacja - definicja

Dekrementacja i inkrementacja to jedne z najprostszych w użyciu operatorów w JS. Ich działanie sprowadza się do - odpowiednio - pomniejszenia lub powiększenia wartości zmiennej o 1.

Symbole i zapis


Symbolem dekrementacji (pomniejszania) jest podwójny znak minus „--",
a inkrementacji (powiększania) podwójny znak plus „++”. Prawidłowy zapis ma postać:

Dekrementacja:
NazwaZmiennej-- (post - dekrementacja)
--NazwaZmiennej (pre - dekrementacja)

Inkrementacja:
NazwaZmiennej++ (post - inkrementacja)
++NazwaZmiennej (pre - inkrementacja)

Skrypt przykładowy pokazujący wykorzystanie operatorów dekrementacji i inkrementacji.

˂script˃

/*Na wstępie zadeklarujemy cztery zmienne o nazwach Zmienna10, Zmienna11, Zmienna12 i Zmienna13*

var Zmienna10 = 10, Zmienna11 = 20, Zmienna12 = 30, Zmienna13 = 40// Przy użyciu jednej instrukcji var zadeklarowaliśmy cztery zmienne

document.write ("W wierszu poniżej wypiszę kolejno wartości zadeklarowanych zmiennych - odpowiednio [ Zmienna10, Zmienna11, Zmienna12, Zmienna13]"+"˂br/˃");

document.write (Zmienna10+" , "+Zmienna11+" , "+Zmienna12+" , "+Zmienna13"˂br/˃");

/*Poniżej wykonuję cztery przykładowe działania dekrementacji i inkrementacji*/


Zmienna10++;//post - inkrementujemy Zmienna10
++Zmienna11;//pre - inkrementujemy Zmienna11
Zmienna12--;//post - dekrementujemy Zmienna12
--Zmienna13;//pre - dekrementujemy Zmienna13

document.write ("W wierszu poniżej wypiszę kolejno wartości zmiennych po po operacjach inkrementacji i dekrementacji."+"˂br/˃");
document.write (Zmienna10+" , "+Zmienna11+" , "+Zmienna12+" , "+Zmienna13"˂br/˃");
document.write ("Koniec skryptu")
˂/script˃

W ramce poniżej, widzimy efekt wykonania skryptu.

Z powyższego wydruku widać, że nie istnieje różnica pomiędzy pre - in/de krementacją i post - in/de krementacją. Po co więc dwie różne metody użycia operatorów?
Otóż różnica istnieje jednak nie jest widoczna jeżeli in/de krementacja występuje jako pojedyncza operacja - tak jak w skrypcie powyżej.
Przyjrzyjmy się więc kolejnemu przykładowi.

˂script˃

/*Na wstępie zadeklarujemy cztery zmienne o nazwach Zmienna20, Zmienna21, Wynik_1 i Wynik_2*/


var Zmienna20 = 10, Zmienna21 = 10, Wynik_1 = 0, Wynik_2 = 0;//zadeklarowaliśmy cztery zmienne
document.write ("W wierszu poniżej wypiszę kolejno wartości zadeklarowanych zmiennych"+"˂br/˃");
document.write (Zmienna20+" , "+Zmienna21+" , "+Wynik_1+" , "+Wynik_2+"˂br/˃>");
document.write ("W następnej liniach skryptu wykonamy kolejno dwa działania ˂br/˃[Wynik_1 = Zmienna20++]˂br/˃ oraz˂br/˃ [Wynik_2 = ++Zmienna21]˂br/˃");
Wynik_1 = Zmienna20++;
Wynik_2 = ++Zmienna21;
/*Wyniki wykonanych działań*/
document.write(Wynik_1+", "+Zmienna20+"˂br/˃");
document.write(Wynik_2+", "+Zmienna21+"˂br/˃");

˂/script˃

Poniżej w ramce wynik działania naszego kodu.

Jak widzimy w wyniku wykonania naszego kodu zarówno Zmienna20 jak i Zmienna21 uległy inkrementacji i przyjęły wartość 11. Zmienna Wynik_2 również przyjęła wartość 11, jednak wartość zmiennej Wynik_1 nie uległa zmianie. Dlaczego? Tu właśnie wytępuje różnica pomiędzy pre - in/dekrementacją, a post - in/dekrementacją.
W przypadku zmiennej Wynik_1 najpierw wartość Zmiennej20 została przepisana do zmiennej Wynik_1, a dopiero potem Zmienna20 została powiększona o 1.
W przypadku zmiennej Wynik_2 najpierw wartość Zmiennej21 została powiększona o 1, a dopiero potem jej wartość została skopiowana do zmiennej Wynik_2.
Na tym właśnie polega różnica pomiędzy pre - in/dekrementacją, a post - indekrementacją. Na kolejności wykonania działań. W pierwszym przykładzie najpierw wykonało się przypisanie wartości zmiennej Zmienna20 do zmiennej Wynik_1, a dopiero w drugiej kolejności nastąpiła inkrementacja zmiennej Zmienna20. W przykładzie drugim kolejność działań była odwrotna. Najpierw nastąpiła inkrementacja zmiennej Zmienna21, a dopiero potem już powiększona wartość tej zmiennej została zapisana w zmiennej Wynik_2. Tak więc w  pierwszym przypadku mamy do czynienia z post - inkrementacją (inkrementacją wykonaną po wykonaniu poprzedzającego ją działania), a w  drugim przypadku z pre - inkrementacją (inkrementacja została wykonana przed wykonaniem poprzedzającego ją działania).