Ćwiczenie przy komputerze: funkcja rabatu z warunkiem złożonym
Rozgrzewka · 3 minuty
Rozgrzewka: porównania i logika
Co zwróci 5 === "5"?
Kiedy wyrażenie z && zwraca true?
Jaki błąd kryje się w warunku if (x = y)?
Część 1 · Instrukcja if
if - znacie to już z PHP
Jeśli piszecie też w PHP, to znacie stamtąd ten zapis: słowo if, w nawiasie warunek, w klamrach { } kod, który wykona się tylko wtedy, gdy warunek da true. W JavaScript składnia jest niemal identyczna.
let age = 20;
if (age >= 18) {
console.log("wstęp");
}
Ciekawostka z MDN: warunek w if nie musi być porównaniem - wystarczy sama zmienna. JavaScript sam sprawdza, czy jej wartość liczy się jako prawda czy fałsz: za fałsz liczą się tylko false, undefined, null, 0, NaN i pusty tekst, wszystko inne przechodzi jako prawda.
MDN: Learn_web_development/Core/Scripting/Conditionals (sekcja „Basic if...else syntax”) · ciekawostka: MDN, sekcja „A note on comparison operators” - „Any value that is not false, undefined, null, 0, NaN, or an empty string (''), actually returns true when tested as a conditional statement”
Część 2 · if … else
Dwie drogi: if … else
Sam if obsługuje tylko jedną drogę - gdy warunek jest fałszywy, nic się nie dzieje. Dopisanie else daje drugą drogę: kod w else wykona się dokładnie wtedy, gdy warunek dał false. MDN pokazuje to na przykładzie rodzica, który obiecuje dziecku kieszonkowe za zrobienie zakupów.
let shoppingDone = false;
let childAllowance;
if (shoppingDone === true) {
childAllowance = 10;
} else {
childAllowance = 5;
}
// childAllowance: 5
Uwaga z MDN: jeśli pominiecie else, drugi blok kodu (poza if) wykona się zawsze, niezależnie od warunku - nie jest już częścią decyzji.
MDN: Learn_web_development/Core/Scripting/Conditionals (sekcja „Basic if...else syntax”, przykład kieszonkowego)
Część 3 · Drabinka else if
Kilka progów: else if
Gdy dróg jest więcej niż dwie, między if a końcowym else wstawiacie tyle bloków else if, ile potrzeba. JavaScript sprawdza warunki od góry - pierwszy prawdziwy wygrywa, reszta jest pomijana.
MDN: Learn_web_development/Core/Scripting/Conditionals (sekcja „else if”, przykład prognozy pogody)
if (temperature > 30) {
console.log("upał");
} else if (temperature > 20) {
console.log("ciepło");
} else {
console.log("zimno");
}
Różnica 1: PHP zna jednowyrazowe elseif, JavaScript nie - trzeba pisać else if, dwoma słowami z odstępem. Różnica 2: w PHP też obowiązuje nawyk=== po if (żeby uniknąć pułapki =); w JavaScript to ten sam nawyk, potwierdzony na poprzedniej lekcji regułą ESLint eqeqeq.
Warunki w if można łączyć operatorami && i || z poprzedniej lekcji. Nawiasy działają jak w matematyce - grupują, co ma być sprawdzone razem.
function getDiscount(color, purchaseAmount) {
if ((color === "zielony" || color === "niebieski") && purchaseAmount > 200) {
returntrue;
}
returnfalse;
}
Nawias wokół || jest konieczny: bez niego && policzyłby się najpierw i warunek działałby inaczej (jak w pytaniu egzaminacyjnym na następnym slajdzie).
MDN: Learn_web_development/Core/Scripting/Conditionals (sekcja „Logical operators: and, or, and not”)
Egzamin EE.09
Tak pytają na egzaminie
1. Program zapisany w języku JavaScript oblicza cenę promocyjną dla swetrów w kolorach: zielonym, niebieskim (zmienna kolor) przy zakupach powyżej 200 zł (zmienna zakupy). Warunek do obliczeń powinien być zapisany przy pomocy wyrażenia logicznego
2. Skrypt JavaScript obsługujący płace pracowników ma za zadanie wygenerować raport dla pracowników, którzy są zatrudnieni na umowę o pracę oraz zarabiają w przedziale obustronnie domkniętym od 4000 do 4500 zł. Wskaż warunek wygenerowania raportu.
CKE, EE.09, czerwiec 2026, zadanie 3 · CKE, EE.09, styczeń 2023, zadanie 3 (bank pytań, przedmiot strony, temat javascript)
Ćwiczenie przy komputerze · 20 minut
Ćwiczenie: funkcja rabatu
Otwórz script.js - ten sam plik co na poprzednich lekcjach.
Napisz funkcję getDiscount(color, purchaseAmount): jeśli color to "zielony" lub "niebieski" ORAZ purchaseAmount jest większe niż 200, funkcja zwraca true, w przeciwnym razie false.
Wywołaj funkcję na 3 przykładach i wypisz wyniki w konsoli: console.log(getDiscount("zielony", 250)), getDiscount("niebieski", 150), getDiscount("czerwony", 300).
Zapisz plik, odśwież stronę w przeglądarce i sprawdź wyniki w konsoli (F12 → Console).
Dla chętnych: zapisz zmiany w swoim repozytorium - commit „Dodaje funkcje getDiscount”.
Na koniec
Sprawdź się
Co się stanie, gdy w if pominiecie else, a warunek jest fałszywy?
Ile bloków else if może być między if a else?
Czym różni się zapis drabinki warunków w PHP od JavaScript?
Na następnej lekcji: instrukcja switch w JavaScript.
Poza szkołą
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
Drabinka if / else if / else
Przy wielu równorzędnych wartościach jednej zmiennej częściej używa się switch (następna lekcja) - czytelniejszy niż długa drabinka.
nadal w użyciu
Klamry { } zawsze pisane
ESLint, reguła curly, wymusza klamry nawet przy jednej instrukcji - dokładnie ostrzeżenie znane z PHP, tu jako reguła narzędzia.
narzędzia
Warunek złożony z nawiasami (a || b) && c
Skomplikowane warunki wyciąga się do osobnej zmiennej z opisową nazwą, np. const isEligibleForDiscount = ... - kod czyta się jak zdanie.
nadal w użyciu
PHP elseif jednym słowem
W samym PHP też coraz częściej pisze się else if dwoma słowami dla spójności ze stylem zespołu (PSR-12 dopuszcza oba zapisy).