Materiał edukacyjny · Informatyka JavaScript w przeglądarce · Moduł 04

MODUŁ 04

Funkcje i parametry

PPrezentacja dla nauczyciela

W tym module nauczysz się organizować kod w wielokrotnie wykorzystywane bloki: tworzyć funkcje o znaczących nazwach, przekazywać do nich parametry oraz zwracać wyniki obliczeń za pomocą instrukcji return.

Definiowanie i wywoływanie funkcji

Funkcja w języku JavaScript to nazwany blok instrukcji przygotowany do wielokrotnego wykonywania. Zamiast powielać ten sam kod w wielu miejscach skryptu, zamykamy logikę w funkcji i wywołujemy ją zawsze wtedy, gdy zachodzi potrzeba (np. po kliknięciu przycisku przez użytkownika).

Podstawowa składnia deklaracji funkcji składa się ze słowa kluczowego function, unikalnej i znaczącej nazwy, nawiasów okrągłych () oraz ciała funkcji ograniczonego nawiasami klamrowymi { }:

function wyczyscFormularz() {
    // instrukcje do wykonania
}

Dobre praktyki nazewnictwa nakazują stosowanie czasowników opisujących wykonywaną czynność, np. obliczCene, zmienZdjecie, zatwierdzDane. Unikaj nazw jednoliterowych lub niejasnych skrótów, ponieważ kod traci wówczas czytelność.

Samo zadeklarowanie funkcji nie powoduje jej uruchomienia — funkcja wykonuje się dopiero wtedy, gdy zostanie jawnie wywołana w kodzie (np. wyczyscFormularz()) lub przypisana do obsługi zdarzenia w dokumencie HTML.

W poniższym przykładzie funkcja wyczyscFormularz() resetuje wartość pola tekstowego oraz aktualizuje komunikat o stanie. Przetestuj działanie przycisku:

function wyczyscFormularz() {
    const pole = document.getElementById("poleNotatki");
    pole.value = "";

    const stan = document.getElementById("stanPola");
    stan.textContent = "Pole zostało pomyślnie wyczyszczone.";
}
1. Jakie słowo kluczowe rozpoczyna standardową deklarację funkcji w języku JavaScript?
2. Co należy zrobić, aby kod umieszczony wewnątrz ciała funkcji został faktycznie wykonany?
3. Czym charakteryzuje się prawidłowa i czytelna nazwa funkcji w aplikacji internetowej?

Parametry i argumenty funkcji

Aby funkcja była uniwersalna i mogła działać na różnych danych wejściowych, wyposażamy ją w parametry. Parametry to nazwane zmienne umieszczone w nawiasach okrągłych w nagłówku funkcji. W momencie wywołania funkcji przekazujemy do nich konkretne wartości, nazywane argumentami.

function wybierzPakiet(nazwa, cena) {
    // nazwa i cena to parametry działające jak lokalne zmienne
}

Dzięki parametrom jedna funkcja może obsługiwać wiele różnych przycisków lub wariantów. Zamiast pisać trzy oddzielne funkcje dla trzech pakietów usług, definiujemy jedną funkcję wybierzPakiet(nazwa, cena), a w znacznikach HTML przekazujemy właściwe wartości w atrybucie zdarzenia:

<button onclick="wybierzPakiet('Podstawowy', 49)">...</button>
<button onclick="wybierzPakiet('Premium', 149)">...</button>

Warto pamiętać, że parametry stają się zmiennymi lokalnymi widocznymi wyłącznie w ciele danej funkcji — po zakończeniu jej działania przestają istnieć i nie kolidują ze zmiennymi w innych częściach programu.

Trzy różne przyciski wywołują tę samą funkcję, przekazując jej różne argumenty.

W edytorze poniżej sprawdź działanie każdego z nich:

function wybierzPakiet(nazwa, cena) {
    const podsumowanie = document.getElementById("podsumowaniePakietu");
    podsumowanie.textContent = "Wybrano: " + nazwa + " — koszt miesięczny: " + cena + " zł";
}
4. Jaka jest relacja między parametrami a argumentami funkcji w programowaniu?
5. Jaki zasięg widoczności posiadają parametry zadeklarowane w nagłówku funkcji?
6. Dlaczego stosowanie parametrów w funkcjach jest uznawane za dobrą praktykę?

Zwracanie wartości za pomocą instrukcji return

Wiele funkcji ma za zadanie wykonać konkretne obliczenie matematyczne lub przekształcenie danych i odesłać gotowy wynik z powrotem do miejsca, w którym funkcja została wywołana. Do tego celu służy słowo kluczowe return.

Gdy interpreter napotka instrukcję return wartosc;:

  1. Oblicza wartość wyrażenia stojącego za słowem return.
  2. Natychmiast przerywa wykonywanie funkcji (wszelkie linie kodu po return w danym bloku zostaną zignorowane).
  3. Przekazuje wyliczoną wartość w miejsce wywołania funkcji.

Dzięki temu możemy przypisać wynik działania funkcji do zmiennej, na przykład:

function obliczPole(a, b) {
    return a * b;
}

const poleDzialki = obliczPole(15, 20); // poleDzialki otrzymuje wartość 300

Rozdzielenie funkcji czysto obliczeniowych (które tylko liczą i zwracają wynik) od funkcji prezentacyjnych (które pobierają dane z kontrolek i wypisują treść na stronie) to podstawowa zasada dobrej architektury kodu — ułatwia testowanie i zapobiega błędom.

Funkcja obliczPoleProstokata(a, b) oblicza pole powierzchni i zwraca wynik, który funkcja główna wyświetla w akapicie wynikowym.

W edytorze poniżej przetestuj działanie kalkulatora:

function obliczPoleProstokata(szerokosc, dlugosc) {
    return szerokosc * dlugosc;
}

function pokazWymiaryDzialki() {
    const a = parseFloat(document.getElementById("bokA").value);
    const b = parseFloat(document.getElementById("bokB").value);

    const pole = obliczPoleProstokata(a, b);
    const obwod = 2 * (a + b);

    const wynik = document.getElementById("wynikWymiarow");
    wynik.textContent = "Pole powierzchni: " + pole + " m², obwód: " + obwod + " m";
}
7. Co powoduje wykonanie instrukcji return wewnątrz ciała funkcji?
8. Jaka wartość zostanie zwrócona przez funkcję, która nie zawiera instrukcji return?
9. W jaki sposób można przechwycić wynik zwracany przez funkcję z instrukcją return?

Ćwiczenia