W sklepie z farbami jest ustalony schemat wyliczania ceny farby: za kolor niebieski i zielony przy pojemności 2 litry cena farby jest równa cenie bazowej + 20%. Wyrażenie logiczne zapisane w języku JavaScript sprawdzające tę regułę ma postać
A. kolor = 'niebieski' || kolor = 'zielony' && pojemnosc = 2
B. (kolor == 'niebieski' || kolor == 'zielony') && pojemnosc == 2
C. kolor == 'niebieski' && kolor == 'zielony' && pojemnosc == 2
D. (kolor = 'niebieski' || kolor = 'zielony') || pojemnosc = 2
Pytanie z egzaminu CKE, czerwiec 2022 (arkusz EE.09-SG-22.06).
Poprawne wyrażenie to (kolor == 'niebieski' || kolor == 'zielony') && pojemnosc == 2. Nawiasy grupują warunek dotyczący koloru: farba może być niebieska albo zielona, więc użyty jest operator logiczny || oznaczający „lub”. Dopiero wynik tego sprawdzenia jest łączony operatorem && z warunkiem pojemnosc == 2, czyli pojemność musi wynosić dokładnie 2 litry. W JavaScript do porównywania wartości używa się operatora == albo częściej ===, natomiast pojedynczy znak = służy do przypisania wartości do zmiennej. Taki warunek jest typowy przy naliczaniu rabatów, dopłat lub wybieraniu wariantu produktu. Częsta pułapka to pominięcie nawiasów i pomylenie porównania z przypisaniem.
W tym warunku trzeba sprawdzić jednocześnie dwie rzeczy: kolor należy do zestawu dopuszczalnych kolorów oraz pojemność wynosi 2 litry. Poprawny zapis to (kolor == 'niebieski' || kolor == 'zielony') && pojemnosc == 2. Wyrażenie kolor = 'niebieski' || kolor = 'zielony' && pojemnosc = 2 używa znaku =, czyli przypisania, a nie porównania; dodatkowo brak nawiasów utrudnia kontrolę kolejności wykonywania operatorów. Taki zapis pasuje do nadawania wartości zmiennej, nie do testowania reguły ceny. Wyrażenie (kolor = 'niebieski' || kolor = 'zielony') || pojemnosc = 2 również opiera się na przypisaniach i używa || przy pojemności, więc wystarczyłby sam warunek pojemności zamiast wymagania obu części. Wyrażenie kolor == 'niebieski' && kolor == 'zielony' && pojemnosc == 2 wymaga, aby ta sama zmienna kolor miała jednocześnie dwie różne wartości, co w tym przypadku jest niemożliwe. Typowy błąd to traktowanie „i” oraz „lub” zamiennie albo mylenie = z ==.