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

Słowa kluczowe: Operatory przypisania w JavaScript

Który zapis w języku JavaScript daje jednakowy rezultat do przedstawionego kodu?

x = 0;
x += 10;
A. x = 0; x++; x = x + 9;
B. x = 10; x = 0;
C. x = 0; x--; x *= 9;
D. x = 10; x = x + 10;

Pytanie z egzaminu CKE, styczeń 2023 (arkusz EE.09-SG-23.01).

Ten zapis daje taki sam wynik, bo w obu przypadkach końcowa wartość zmiennej x wynosi 10. W kodzie x = 0; x += 10; najpierw przypisujemy do x wartość 0, a potem operator += zwiększa aktualną wartość zmiennej o 10. Czyli x += 10 oznacza praktycznie to samo co x = x + 10. W odpowiedzi x = 0; x++; x = x + 9; najpierw x też ma wartość 0, potem x++ zwiększa ją o 1, więc x staje się równe 1, a na końcu dodajemy jeszcze 9. Wynik: 10. Moim zdaniem to dobre pytanie, bo sprawdza nie tylko pamięciowe kojarzenie operatorów, ale też umiejętność śledzenia programu linijka po linijce. W praktycznym JavaScript często używa się takich skróconych operatorów jak +=, -=, *= czy ++, na przykład przy licznikach kliknięć, sumowaniu wartości w koszyku albo zwiększaniu indeksu w pętli. Warto jednak pamiętać o dobrej praktyce: lepiej deklarować zmienne przez let lub const, np. let x = 0;, bo samo x = 0 może w niektórych trybach utworzyć zmienną globalną, a to potem robi bałagan w większym projekcie.
Kod z pytania kończy działanie z wartością x równą 10, więc każdy równoważny zapis musi prowadzić dokładnie do takiego samego stanu zmiennej po wykonaniu wszystkich instrukcji. Najważniejsze jest tu spokojne prześledzenie wartości po każdej linijce, a nie tylko patrzenie, czy gdzieś występuje liczba 10. To częsty błąd w JavaScript: ktoś widzi przypisanie x = 10 i od razu zakłada, że wynik będzie 10, ale następna instrukcja może tę wartość nadpisać albo zmienić. Gdy po przypisaniu x = 10 pojawia się x = 0, końcowy rezultat to 0, bo ostatnie przypisanie wygrywa. Podobnie zapis x = 10; x = x + 10; nie jest równoważny, bo najpierw ustawiamy 10, a potem dodajemy kolejne 10, więc otrzymujemy 20. To już inna operacja niż start od zera i dodanie dziesięciu. Trzeba też uważać na operator -- oraz *=. Jeśli x wynosi 0, to x-- zmniejsza je do -1, a następnie x *= 9 mnoży bieżącą wartość przez 9, co daje -9. Moim zdaniem najprostsza metoda przy takich zadaniach to zrobić sobie małą tabelkę w głowie: wartość początkowa, zmiana po instrukcji, wartość końcowa. W prawdziwym kodzie webowym takie pomyłki potrafią zepsuć licznik, cenę produktu albo indeks tablicy, więc ta niby drobna składnia ma dość praktyczne znaczenie.

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.