W JavaScript zapis a++ oznacza postinkrementację, czyli zwiększenie wartości zmiennej a o 1. Jeśli interesuje nas równoważny zapis samego efektu (zwiększenia zmiennej), to poprawnym odpowiednikiem jest a = a + 1;.
Warto pamiętać o różnicy między a++ (postinkrementacja) a ++a (preinkrementacja): oba zwiększają a o 1, ale różnią się tym, jaką wartość "zwracają" w większym wyrażeniu. W tym zadaniu jednak pytanie dotyczy przepisania instrukcji, więc kluczowe jest, że efekt końcowy na zmiennej to dodanie 1.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- 1 += a; – to nie jest poprawny zapis w JavaScript, ponieważ lewa strona operatora przypisania złożonego musi być elementem, do którego można przypisać wartość (np. zmienną), a literał 1 nie może być celem przypisania.
- a << 1; – operator przesunięcia bitowego w lewo nie jest tym samym co dodanie 1. Przesunięcie o 1 bit w lewo odpowiada w typowym przypadku mnożeniu przez 2 (dla liczb całkowitych w kontekście operacji bitowych), a dodatkowo w JavaScript operacje bitowe działają na 32-bitowych liczbach całkowitych.
- a = a & 1; – operator AND bitowy wykonuje maskowanie bitów. Taki zapis zostawia tylko najmłodszy bit (sprawdza parzystość w sensie bitowym), a nie zwiększa wartości o 1.
W praktyce w kodzie spotkasz zarówno a++, jak i a += 1 czy a = a + 1. Na egzaminie zwracaj uwagę, czy odpowiedź dotyczy arytmetyki (dodawanie) czy operatorów bitowych (&, <<), które mają zupełnie inne znaczenie.