← Lekcje
JavaScript · lekcja 07

Warunki i pętle 1/4:
podejmujemy decyzje

Dzisiaj:

  1. Instrukcja if - znacie ją już z PHP
  2. if … else - dwie drogi zamiast jednej
  3. Drabinka else if - kilka progów pod rząd
  4. Ćwiczenie przy komputerze: funkcja rabatu z warunkiem złożonym
Rozgrzewka · 3 minuty

Rozgrzewka: porównania i logika

  1. Co zwróci 5 === "5"?
  2. Kiedy wyrażenie z && zwraca true?
  3. 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.

age >= 18 ? true console.log("wstęp") blok if - wykonany false blok if - pominięty dalszy kod strony
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.

if (temperature > 30) → "upał" else if (temperature > 20) → "ciepło" else if (temperature > 10) → "chłodno" else → "zimno" (reszta przypadków) Sprawdzane od góry. Pierwszy prawdziwy wygrywa, reszta pominięta.
MDN: Learn_web_development/Core/Scripting/Conditionals (sekcja „else if”, przykład prognozy pogody)
Część 4 · PHP kontra JavaScript

To samo, inna pisownia

Logika jest identyczna - dwie różnice w pisowni.

PHP

if ($temp > 30) {
    echo "upał";
} elseif ($temp > 20) {
    echo "ciepło";
} else {
    echo "zimno";
}

JavaScript (dzisiaj)

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.

PHP Manual: control-structures.elseif.php · MDN: Conditionals (sekcja „else if”)
Część 5 · Warunek złożony w if

W jednym if więcej niż jeden warunek

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) {
    return true;
  }
  return false;
}

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

  1. zakupy > 200 || kolor == 'zielony' || kolor == 'iebieski'
  2. zakupy > 200 && kolor == 'zielony' && kolor == 'niebieski'
  3. zakupy > 200 && (kolor == 'zielony' || kolor == 'niebieski')
  4. zakupy > 200 || (kolor == 'zielony' && kolor == 'niebieski')

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.

  1. umowa == 'praca' && (pensja >= 4000 && pensja <= 4500)
  2. umowa == 'praca' || (pensja >= 4000 || pensja <= 4500)
  3. umowa == 'praca' && (pensja >= 4000 || pensja <= 4500)
  4. umowa == 'praca' || (pensja >= 4000 && pensja <= 4500)
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

  1. Otwórz script.js - ten sam plik co na poprzednich lekcjach.
  2. 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.
  3. Wywołaj funkcję na 3 przykładach i wypisz wyniki w konsoli: console.log(getDiscount("zielony", 250)), getDiscount("niebieski", 150), getDiscount("czerwony", 300).
  4. Zapisz plik, odśwież stronę w przeglądarce i sprawdź wyniki w konsoli (F12 → Console).
  5. Dla chętnych: zapisz zmiany w swoim repozytorium - commit „Dodaje funkcje getDiscount”.
Na koniec

Sprawdź się

  1. Co się stanie, gdy w if pominiecie else, a warunek jest fałszywy?
  2. Ile bloków else if może być między if a else?
  3. 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 lekcjiW produkcjiStatus
Drabinka if / else if / elsePrzy 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 pisaneESLint, 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) && cSkomplikowane 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łowemW 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).nadal w użyciu
ESLint, reguła curly (eslint.org/docs/latest/rules/curly) · PHP-FIG, PSR-12 (www.php-fig.org/psr/psr-12, sekcja o strukturach sterujących)