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 instrukcję: a *= 3; można inaczej zapisać jako

A.
a = a + 3;
B.
a = a * 3;
C.
a = a ** 3;
D.
3 *= a;
Instrukcja a *= 3; jest skróconym zapisem operacji przypisania z mnożeniem, czyli dokładnie odpowiada zapisowi a = a * 3; dla zwykłej zmiennej. Operator *= w JavaScript bierze aktualną wartość zmiennej po lewej stronie, mnoży ją przez wartość po prawej stronie, a wynik zapisuje z powrotem do tej samej zmiennej. Jeśli więc a ma wartość 5, po wykonaniu a *= 3; zmienna a będzie miała wartość 15. Taki zapis jest zgodny ze standardem ECMAScript i jest bardzo często używany w praktyce, bo skraca kod i jasno pokazuje intencję: zmieniamy istniejącą wartość, a nie tworzymy osobnej. Moim zdaniem warto go znać, bo podobne operatory występują też w innych językach, np. +=, -=, /= czy %=. W kodzie webowym można to spotkać np. przy skalowaniu rozmiaru elementu: width *= 2;, przy naliczaniu podatku: price *= 1.23;, albo przy zmianie wartości w animacji. Dobra praktyka jest taka, żeby używać tego zapisu wtedy, gdy poprawia czytelność. Przy prostych zmiennych jest super, ale przy bardziej złożonych wyrażeniach, np. obiekt.właściwość *= 3;, trzeba już rozumieć, że modyfikujemy konkretną właściwość obiektu.
W tym pytaniu kluczowe jest rozróżnienie operatorów przypisania z operacją od zwykłych operatorów arytmetycznych. Zapis a *= 3; nie oznacza ani potęgowania, ani dodawania, tylko pomnożenie aktualnej wartości zmiennej a przez 3 i zapisanie wyniku z powrotem do a. Dlatego odpowiednikiem jest a = a * 3;. Częsty błąd polega na tym, że ktoś widzi znak * obok = i kojarzy go z jakimkolwiek działaniem na gwiazdce, również z operatorem **. W JavaScript operator ** służy jednak do potęgowania, więc a = a ** 3; oznaczałoby a do potęgi trzeciej, np. dla a = 4 wynik byłby 64, a nie 12. To zupełnie inna operacja matematyczna. Zapis 3 *= a; też nie działa poprawnie, bo po lewej stronie operatora przypisania musi znajdować się coś, do czego można zapisać wartość, czyli np. zmienna, właściwość obiektu albo element tablicy. Liczba 3 jest literałem, stałą wartością w kodzie, więc nie można jej nadpisać. JavaScript potraktuje to jako błąd składniowy albo błąd niepoprawnej lewej strony przypisania. Z kolei a = a + 3; używa operatora dodawania, więc zwiększa wartość o 3, a nie mnoży ją przez 3. Dla małych liczb czasem wyniki mogą przypadkiem wyglądać podobnie, ale logika jest całkiem inna. Z mojego doświadczenia najlepiej zapamiętać to tak: operator przed znakiem = mówi, jakie działanie zostanie wykonane na starej wartości zmiennej. Skoro mamy *=, to chodzi o mnożenie i ponowne przypisanie wyniku.

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.