W instrukcji warunkowej języka JavaScript należy sprawdzić przypadek, gdy wartość zmiennej a jest liczbą parzystą, a wartość zmiennej b jest różna od zera. Warunek taki jest prawidłowo zapisany w następujący sposób
if (a / 2 == 0 && b != 0)
a / 2 to wynik dzielenia, a nie reszta. Równość z zerem zachodzi tylko dla a równego 0.if (a % 2 == 1 && b != 0)
if (a % 2 == 0 || b != 0)
|| wystarcza jednej części, więc przepuści np. nieparzyste a przy niezerowym b.if (a % 2 == 0 && b != 0)
a % 2 == 0 sprawdza parzystość, b != 0 różność od zera, a && wymaga obu naraz.Parzystość sprawdza się operatorem reszty z dzielenia %: liczba jest parzysta, gdy po podzieleniu przez 2 reszta wynosi 0, czyli a % 2 == 0. „Różna od zera” zapisuje się operatorem !=: b != 0. Oba warunki muszą być spełnione jednocześnie, dlatego łączy je &&.
Sprawdzenie na liczbach: dla a = 8 i b = 3 warunek daje true, dla a = 7 albo b = 0 już false. Reszta z dzielenia przydaje się częściej, niż się wydaje: i % 3 == 0 sprawdza podzielność przez 3, a i % 2 w pętli pozwala kolorować co drugi wiersz tabeli. W JavaScript lepiej używać ścisłego porównania === i !==, ale w tym zadaniu wynik jest taki sam.
Problem z tym zadaniem zwykle dotyczy jednego znaku. Zapis a % 2 == 1 sprawdza resztę równą 1, czyli liczby nieparzyste, dokładnie odwrotnie, niż chce treść. W JavaScript dla ujemnych nieparzystych reszta wynosi nawet -1, więc ten zapis ma też drugą wadę.
Dzielenie a / 2 daje wynik dzielenia, a nie resztę. Wynik a / 2 == 0 jest prawdziwy tylko dla a równego 0, więc ten zapis nie odróżnia liczb parzystych od nieparzystych. Dla a = 8 daje 4, a nie 0.
Zapis z poprawnym sprawdzeniem parzystości, ale połączony operatorem ||, wymaga spełnienia tylko jednej części. Przepuściłby nieparzyste a przy niezerowym b, np. a = 7 i b = 3, a także parzyste a przy b = 0. Treść łączy oba warunki słowem „a”, w znaczeniu „i jednocześnie”.
Słowo „a” w treści łączy tu wymagania.