Instrukcja if...else w JavaScript steruje wykonaniem kodu na podstawie warunku. Kluczowe jest to, że bez nawiasów klamrowych każda gałąź (if i else) obejmuje domyślnie tylko jedną instrukcję.
W pokazanym fragmencie w każdej gałęzi mają zostać wykonane dwie instrukcje: jedna wypisuje wartość (a albo b), a druga dopisuje tekst " jest mniejsze". Aby obie instrukcje były traktowane jako część jednej gałęzi, muszą zostać ujęte w blok:
- dla warunku: if (a < b) { ... }
- dla alternatywy: else { ... }
Bez klamer parser JavaScript przypisuje do if tylko pierwszą instrukcję po nim. Kolejna instrukcja staje się "luźną" instrukcją poza warunkiem, a słowo else pojawia się w miejscu, w którym nie jest już poprawnie powiązane z odpowiadającym mu if. To typowo kończy się błędem składniowym i przerwaniem wykonywania skryptu, więc użytkownik nie widzi żadnego komunikatu.
Dlaczego pozostałe propozycje są błędne?
- Dodanie znaku $ przed nazwami zmiennych dotyczy składni PHP, nie JavaScript. W JS zmienne nie są poprzedzane znakiem dolara (choć $ może występować w nazwie identyfikatora, nie jest to "wymagany prefiks").
- Wstawienie a i b w cudzysłów zamieniłoby zmienne na napisy "a" i "b", co zmieniłoby sens porównania i wypisywania — nie naprawia struktury instrukcji warunkowej.
- Zamiana cudzysłowów na apostrofy nic nie wnosi, bo w JavaScript zarówno "..." jak i '...' są poprawnymi literałami łańcuchowymi. Problemem nie jest rodzaj cudzysłowu, tylko brak bloków instrukcji.
Wskazówka egzaminacyjna: gdy po if lub else widzisz więcej niż jedną instrukcję, niemal zawsze potrzebujesz nawiasów klamrowych, nawet jeśli wcięcia sugerują "blok".