Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki JavaScript

W języku JavaScript wynik działania instrukcji zmienna1 -= 1; będzie taki sam, jak instrukcji

A. zmienna1++;
B. zmienna1 === zmienna1 - 1;
C. zmienna1 = zmienna1 - 0;
D. zmienna1--;

Pytanie z egzaminu CKE, czerwiec 2022 (arkusz E.14-SG-22.06).

Instrukcja zmienna1 -= 1; używa operatora przypisania z odejmowaniem. W praktyce oznacza to: weź aktualną wartość zmiennej, odejmij od niej 1 i zapisz wynik z powrotem do tej samej zmiennej. Czyli efekt dla samej zmiennej jest taki sam jak przy zmienna1--;, bo operator dekrementacji także zmniejsza wartość zmiennej o jeden. Jeśli zmienna1 ma wartość 10, to po wykonaniu zmienna1 -= 1; będzie miała 9. Po wykonaniu zmienna1--; też będzie miała 9. Ważny szczegół: jako samodzielna instrukcja te zapisy dają ten sam efekt, ale w większym wyrażeniu mogą się różnić, bo zmienna1-- zwraca najpierw starą wartość, a dopiero potem zmniejsza zmienną. Moim zdaniem to jeden z tych drobiazgów w JavaScript, które warto dobrze wyczuć, bo potem często pojawiają się w pętlach, licznikach, obsłudze indeksów tablic albo prostych mechanizmach typu licznik kliknięć. Zgodnie z dobrymi praktykami kod powinien być czytelny: jeśli chcesz jasno pokazać zmniejszenie o 1, zapis zmienna1-- jest krótki i powszechnie rozumiany, ale przy bardziej złożonych zmianach, np. o 5, lepiej użyć zmienna1 -= 5;.
W tym pytaniu łatwo pomylić operator przypisania z operatorem porównania albo zwykłym działaniem arytmetycznym. Zapis zmienna1 -= 1; nie tylko oblicza wartość mniejszą o jeden, ale przede wszystkim zapisuje ją ponownie do tej samej zmiennej. To jest kluczowe. Samo sprawdzenie warunku typu zmienna1 === zmienna1 - 1 nie zmienia wartości zmiennej. Operator === w JavaScript służy do ścisłego porównania wartości i typu, więc zwraca jedynie true albo false. Dla normalnej liczby taki warunek prawie zawsze będzie fałszywy, bo np. 5 nie jest równe 4. Nie ma tu żadnej modyfikacji danych, a początkujący czasem traktują znak równości jako „ustawienie wartości”, co w programowaniu jest zdradliwe. Z kolei zmienna1++ działa w przeciwną stronę: zwiększa zmienną o 1, więc jest odpowiednikiem zmienna1 += 1;, a nie odejmowania. To typowy błąd wynikający z tego, że operatory ++ i -- wyglądają podobnie, ale robią dokładnie odwrotne rzeczy. Natomiast zmienna1 = zmienna1 - 0; zapisuje do zmiennej wynik odejmowania zera. Dla liczby wartość się praktycznie nie zmieni, choć JavaScript może przy okazji wykonać konwersję typu, jeśli zmienna zawiera np. tekst. W dobrym kodzie produkcyjnym lepiej unikać takich mylących zapisów, bo utrudniają czytanie i debugowanie. Najważniejsza zasada jest prosta: -= zmniejsza i przypisuje, -- zmniejsza o jeden, ++ zwiększa o jeden, a === tylko porównuje bez zmiany wartości.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.