W JavaScript końcowa wartość wypisywana przez kod zależy od tego, jak interpreter oblicza wyrażenia: w jakiej kolejności stosuje operatory (precedencja i łączność) oraz czy w trakcie obliczeń występują skutki uboczne (np. zmiana wartości zmiennej przez ++ lub --).
Odpowiedź "13" oznacza, że po wykonaniu wszystkich działań w zaprezentowanym fragmencie kodu uzyskuje się wynik liczbowy równy 13. W tego typu zadaniach najczęściej kluczowe są:
- Precedencja operatorów – np. mnożenie i dzielenie wykonują się przed dodawaniem, a nawiasy wymuszają kolejność.
- Pre- i post-inkrementacja/dekrementacja – zapis z operatorem przed zmienną zwraca wartość już zmienioną, a zapis po zmiennej zwraca wartość sprzed zmiany (a zmiana następuje "przy okazji"). To często generuje wyniki przesunięte o 1.
- Niejawna konwersja typów – operator + może oznaczać dodawanie liczb albo konkatenację łańcuchów. Jeśli w wyrażeniu pojawia się napis, część obliczeń może przejść w łączenie tekstu zamiast dodawania.
Dlaczego pozostałe odpowiedzi są błędne? W praktyce:
- "12" bywa skutkiem pominięcia jednego kroku (np. przyjęcia, że operator zmienia wartość inaczej niż w rzeczywistości) albo nieuwzględnienia jednego z działań w kolejności.
- "11" często wynika z podwójnego błędu: złej kolejności działań i jednocześnie błędnej interpretacji operatora zmieniającego zmienną.
- "14" zwykle odpowiada sytuacji, w której ktoś "dodał o 1 za dużo", np. traktując post-inkrementację jak pre-inkrementację lub zakładając, że zmienna już wcześniej została zwiększona.
Wskazówka egzaminacyjna: przepisz wyrażenia na kartce i obliczaj je krok po kroku, zapisując po każdym kroku aktualne wartości zmiennych. Jeśli w kodzie jest console.log lub alert, upewnij się, czy pytanie dotyczy pojedynczej wartości, czy ostatnio wypisanej wartości.