W języku JavaScript wynik działania instrukcji zmienna++; będzie taki sam jak instrukcji
A. zmienna === zmienna + 1;
B. zmienna += 1;
C. zmienna--;
D. zmienna = zmienna + 10;
Pytanie z egzaminu CKE, czerwiec 2018 (arkusz E.14-X-18.06).
Instrukcja zmienna++ zastosowana samodzielnie zwiększa wartość zmiennej liczbowej o 1, więc w takim kontekście jej praktyczny efekt jest taki sam jak przy zapisie zmienna += 1;. Jeżeli przed wykonaniem zmienna miała wartość 7, to po wykonaniu obu instrukcji będzie miała wartość 8. Operator += jest operatorem przypisania z dodawaniem, czyli zapis zmienna += 1; oznacza w skrócie: weź aktualną wartość zmiennej, dodaj 1 i zapisz wynik z powrotem do tej samej zmiennej. Moim zdaniem to jeden z tych skrótów, które warto znać, bo pojawia się ciągle w pętlach, licznikach kliknięć, indeksach tablic czy prostych animacjach na stronie. W JavaScripcie trzeba jednak pamiętać o drobnym haczyku: zmienna++ to inkrementacja postfiksowa, więc gdy użyjesz jej w większym wyrażeniu, najpierw zwracana jest stara wartość, a dopiero potem zmienna zostaje zwiększona. Natomiast zmienna += 1 jako wyrażenie zwraca już nową wartość. Jako osobna instrukcja efekt końcowy jest jednak taki sam. Dobra praktyka branżowa jest taka, żeby wybierać zapis czytelny dla zespołu i nie upychać inkrementacji w zbyt skomplikowanych wyrażeniach, bo potem łatwo o głupie, ale trudne do znalezienia błędy.
W tym pytaniu chodzi o zwiększenie wartości zmiennej o dokładnie 1, czyli o inkrementację. Poprawnym odpowiednikiem instrukcji zmienna++ zapisanej jako osobna linia jest zmienna += 1;, oczywiście przy założeniu, że pracujemy na wartości liczbowej. Częsty błąd polega na patrzeniu tylko na podobny zapis operatorów, a nie na rzeczywisty efekt wykonania instrukcji. Zapis zmienna-- działa w przeciwną stronę: zmniejsza wartość zmiennej o 1. Jeśli licznik miał wartość 10, po tej instrukcji będzie 9, a nie 11. To typowa pomyłka, szczególnie gdy ktoś kojarzy, że ++ i -- są „prawie takie same”, tylko zapomina o kierunku działania. Wyrażenie zmienna === zmienna + 1 nie zwiększa zmiennej w ogóle. Operator === w JavaScript służy do ścisłego porównania wartości i typu, a wynikiem takiego porównania jest true albo false. Dla zwykłej liczby taki warunek będzie fałszywy, bo liczba nie jest równa samej sobie powiększonej o 1. Z kolei zmienna = zmienna + 10 faktycznie modyfikuje zmienną, ale dodaje 10, nie 1, więc efekt jest zupełnie inny. W praktyce, np. przy liczniku elementów w tablicy albo numerowaniu kolejnych prób w formularzu, taka różnica szybko popsuje logikę programu. Warto też pamiętać o niuansie standardu ECMAScript: zmienna++ jako część większego wyrażenia zwraca starą wartość, a zmienna += 1 zwraca nową. Dlatego w normalnym kodzie lepiej pisać prosto i jasno, bez kombinowania, bo czytelność naprawdę ratuje czas przy debugowaniu.