W JavaScript w warunku instrukcji if powinno znaleźć się wyrażenie, które zwraca wartość logiczną (true/false) lub wartość interpretowaną jako prawda/fałsz. Jeżeli zamiast operatora porównania użyje się operatora przypisania "=", to program nie sprawdza równości, tylko zmienia wartość zmiennej.
Dlatego odpowiedź "W klauzuli if występuje przypisanie zamiast porównania." trafnie opisuje błąd logiczny: warunek nie porównuje dwóch liczb (np. przez "==" lub częściej zalecane "==="), lecz wykonuje przypisanie, a następnie wynik tego przypisania jest oceniany w kontekście warunku. To może powodować, że zawsze wchodzi się w jedną gałąź (if albo else) albo zachowanie zależy od przypisanej wartości, przez co komunikat o równości/nie-równości nie pojawia się zgodnie z założeniem.
Pozostałe odpowiedzi są typowymi "pułapkami":
- "Przed klauzulą else nie powinno być średnika." – średnik może faktycznie zepsuć składnię w pewnych układach, ale to inny typ problemu: błąd składniowy/strukturalny, a nie klasyczny błąd logiczny porównania. W opisywanym przypadku kluczowy jest operator w warunku.
- "Nieprawidłowo zadeklarowano zmienne." – zła deklaracja (np. brak let/const) może powodować inne skutki, ale nie tłumaczy wprost, dlaczego program nie rozróżnia równości liczb. Jeśli zmienne istnieją i kod się uruchamia, to sednem jest sposób sprawdzania warunku.
- "Instrukcje wewnątrz sekcji if oraz else powinny być zamienione miejscami." – zamiana komunikatów mogłaby naprawić sytuację tylko wtedy, gdy warunek był poprawny, a program wypisywał odwrotne treści. Tu problemem jest to, że sam test równości nie działa, bo nie jest porównaniem.
W praktyce egzaminacyjnej warto zapamiętać zasadę: "=" zmienia dane, a "==/===" sprawdza warunek. Przy porównaniach w JavaScript najczęściej preferuje się "===", bo uwzględnia typy i zmniejsza liczbę nieoczekiwanych konwersji.