JavaScript - Funkcje

INF.03 · JavaScript · lekcja 4

Funkcje: piszesz raz, używasz wiele razy

Na egzaminie cały kod JavaScript siedzi w funkcjach. Funkcja uruchamia się, gdy użytkownik kliknie przycisk, pobiera dane, liczy wynik i go zwraca. Dziś nauczysz się funkcje tworzyć, przekazywać im dane i odbierać od nich wynik. Każdy kod możesz uruchomić przyciskiem Uruchom albo skrótem Ctrl+Enter.

Część 1

Tworzenie i wywoływanie funkcji

4.1

Po co są funkcje?

Funkcja to nazwany fragment kodu, który możesz uruchomić w dowolnym momencie i dowolnie wiele razy. Zamiast kopiować te same linijki w kilka miejsc, zapisujesz je raz i nadajesz im nazwę.

Funkcja działa jak przepis kulinarny:

PrzepisFunkcjaPrzykład
zapisanie przepisudefinicja: opisujesz, co robićfunction brutto(netto) { … }
składnikiparametry: dane wejściowenetto
gotowaniewywołanie: uruchomienie funkcjibrutto(100)
gotowe daniewynik oddany przez return123
Bez funkcji: powtarzanieconsole.log(100 * 1.23); console.log(250 * 1.23); console.log(80 * 1.23); // zmiana VAT = poprawki w 3 miejscach
Z funkcją: raz i dobrzefunction brutto(netto) { return netto * 1.23; } console.log(brutto(100)); console.log(brutto(250));
4.2

Definicja i wywołanie

Funkcję tworzysz słowem function. Sama definicja jeszcze nic nie robi, bo przepis trzeba „ugotować”. Funkcję uruchamiasz, pisząc jej nazwę i nawiasy ().

Schemat do zapamiętania
function nazwaFunkcji() {      // definicja: przepis
  // kod funkcji
}

nazwaFunkcji();                // wywołanie: gotowanie

Bez nawiasów () funkcja się nie uruchomi. Nazwy piszemy jak zmienne: małą literą, kolejne słowa wielką (obliczCene, pokazWynik), najlepiej czasownikiem.

Ile razy wypisze się „Hej”?

function hej() {
  console.log("Hej");
}
hej;
hej();
4.3

Parametry i argumenty: przekazywanie danych

Funkcja staje się naprawdę przydatna, gdy może dostać dane. W nawiasie definicji wypisujesz parametry, czyli nazwy, pod którymi funkcja odbierze wartości. Przy wywołaniu podajesz argumenty, czyli konkretne wartości.

function obliczPole(a, b) { return a * b; }
let wynik = obliczPole(5, 3); // wynik = 15
1 · NAZWApo niej zawsze nawiasy ( )
2 · PARAMETRYnazwy „pustych pudełek” w definicji
3 · ARGUMENTYwartości wkładane do pudełek przy wywołaniu
4 · CIAŁOkod, który korzysta z parametrów
Schemat do zapamiętania

Kolejność ma znaczenie: pierwszy argument trafia do pierwszego parametru, drugi do drugiego. Parametry oddzielasz przecinkami i piszesz bez cudzysłowów, bo to nazwy, a nie wartości.

4.4

return: funkcja oddaje wynik

To najważniejsza część lekcji. console.log tylko pokazuje wartość w konsoli. return oddaje wynik do miejsca, w którym funkcję wywołano. Ten wynik możesz zapisać do zmiennej, dodać do czegoś albo przekazać dalej.

Tylko wypisuje: wyniku nie da się użyćfunction brutto(netto) { console.log(netto * 1.23); } let cena = brutto(100); // cena = undefined
Zwraca: wynik trafia do zmiennejfunction brutto(netto) { return netto * 1.23; } let cena = brutto(100); // cena = 123

Wywołaj funkcję

function brutto(netto, vat) {
  return netto * (1 + vat);
}
1 · Wywołanie
2 · Argumenty trafiają do parametrów
3 · Obliczenie w funkcji
4 · return oddaje wynik

Krok po kroku: co się dzieje przy wywołaniu

function brutto(netto, vat) {
  let wynik = netto * (1 + vat);
  return wynik;
}
let cena = brutto(100, 0.23);
console.log(cena);
Co się dziejeKliknij „Następny krok”, aby zacząć.
Zmienne poza funkcją
Zmienne wewnątrz funkcji
Konsola
Schemat do zapamiętania
function nazwa(parametr1, parametr2) {
  // obliczenia
  return wynik;
}
let zmienna = nazwa(argument1, argument2);

console.log pokazuje, return oddaje. Funkcje liczące prawie zawsze kończą się return. Wywołanie funkcji z return możesz traktować jak zwykłą wartość.

return natychmiast kończy funkcję, więc kod pod nim już się nie wykona. Dzięki temu możesz zwracać różne wyniki w różnych gałęziach if:

Co wypisze ten kod?

function podwoj(x) {
  console.log(x * 2);
}
let w = podwoj(5);
console.log(w);
4.5

Zasięg zmiennych: co widać gdzie

Zmienne utworzone wewnątrz funkcji (także jej parametry) są lokalne: istnieją tylko podczas działania funkcji i nie widać ich na zewnątrz. Zmienne utworzone poza funkcjami są globalne, więc funkcja może z nich korzystać.

Schemat do zapamiętania

Co w funkcji, to zostaje w funkcji. Wynik wyprowadzasz na zewnątrz przez return, a nie przez zmienną lokalną.

Część 2

Funkcje w praktyce

4.6

Funkcje z tablicami i funkcje w warunkach

Wzorce z poprzedniej lekcji (suma, średnia, maksimum) najlepiej zamknąć w funkcjach. Wtedy działają dla każdej tablicy, a jedna funkcja może korzystać z drugiej.

Funkcja może też zwracać true albo false. Takie funkcje nazywamy zwykle od czy… i wstawiamy prosto do if:

Działa, ale za długofunction czyParzysta(n) { if (n % 2 === 0) { return true; } else { return false; } }
Krócej: porównanie to już true/falsefunction czyParzysta(n) { return n % 2 === 0; }
4.7

Inne zapisy funkcji, które warto rozpoznać

Na egzaminie wystarczy klasyczne function. W kodzie z internetu spotkasz jednak dwa inne zapisy. Działają tak samo:

ZapisPrzykład
deklaracjafunction kwadrat(x) { return x * x; }
wyrażenie funkcyjneconst kwadrat = function(x) { return x * x; };
funkcja strzałkowaconst kwadrat = (x) => x * x;
4.8

Jak to wygląda na egzaminie

Na INF.03 funkcję prawie zawsze uruchamia kliknięcie przycisku. W HTML-u przycisk dostaje atrybut onclick z wywołaniem funkcji, a funkcja jest zdefiniowana w skrypcie:

<!-- HTML -->
<button onclick="oblicz()">Oblicz</button>

<!-- skrypt -->
<script>
  function oblicz() {
    // 1. pobierz dane z formularza
    // 2. policz wynik
    // 3. pokaż wynik na stronie
  }
</script>

Punkt 2 już umiesz. Punkty 1 i 3, czyli pobieranie danych z pól formularza i wyświetlanie wyniku na stronie, poznasz na następnej lekcji.

Źle: funkcja uruchomi się od razu, a nie po kliknięciuonclick="oblicz"
Dobrze: nazwa z nawiasamionclick="oblicz()"
4.9

Najczęstsze błędy

BłądObjawPoprawka
oblicz;nic się nie dziejewywołanie z nawiasami: oblicz();
console.log zamiast returnwynik w zmiennej to undefinedzakończ funkcję return wynik;
kod pod returnlinijki pod return nigdy się nie wykonująreturn jako ostatnia instrukcja
function f("x")SyntaxErrorparametry bez cudzysłowów: function f(x)
zmienna lokalna poza funkcjąReferenceError: … is not definedzwróć wartość przez return i zapisz ją w zmiennej
Oblicz() a obliczReferenceError: Oblicz is not definedwielkość liter w nazwie musi się zgadzać
✎

Zadania

W każdym zadaniu napisz funkcję o podanej nazwie. Sprawdzarka sama wywoła ją z różnymi argumentami i porówna wynik, który zwróci return. Pod funkcją możesz dopisywać własne wywołania z console.log, żeby ją przetestować; sprawdzarka ich nie ocenia.

Z1. Cena bruttołatwe

Napisz funkcję obliczBrutto(netto), która zwraca cenę brutto przy VAT 23%. Dla 100 ma zwrócić 123.

Pokaż rozwiązanie
function obliczBrutto(netto) {
  return netto * 1.23;
}
Z2. Pole i obwód prostokątałatwe

Napisz dwie funkcje: pole(a, b) zwracającą pole prostokąta i obwod(a, b) zwracającą jego obwód.

Pokaż rozwiązanie
function pole(a, b) {
  return a * b;
}

function obwod(a, b) {
  return 2 * (a + b);
}
Z3. Czy pełnoletni?łatwe

Napisz funkcję czyPelnoletni(wiek), która zwraca true dla osoby, która ma co najmniej 18 lat, a w przeciwnym razie false.

Pokaż rozwiązanie
function czyPelnoletni(wiek) {
  return wiek >= 18;
}
Z4. Ocena z punktówśrednie

Napisz funkcję ocena(punkty), która zwraca ocenę jako liczbę: 0–39 → 1, 40–54 → 2, 55–69 → 3, 70–84 → 4, 85–94 → 5, 95–100 → 6. Użyj kilku return w instrukcjach if.

Pokaż rozwiązanie
function ocena(punkty) {
  if (punkty >= 95) return 6;
  if (punkty >= 85) return 5;
  if (punkty >= 70) return 4;
  if (punkty >= 55) return 3;
  if (punkty >= 40) return 2;
  return 1;
}
Z5. Średnia z tablicyśrednie

Napisz funkcję srednia(tab), która zwraca średnią liczb z tablicy. Dla pustej tablicy ma zwrócić 0, bo nie wolno dzielić przez zero.

Pokaż rozwiązanie
function srednia(tab) {
  if (tab.length === 0) {
    return 0;
  }
  let suma = 0;
  for (const x of tab) {
    suma += x;
  }
  return suma / tab.length;
}
Z6. Powitaniełatwe

Ta funkcja ma wypisywać, a nie zwracać. Napisz powitanie(imie, godzina), która przed 18:00 wypisuje Dzień dobry, Ola!, a od 18:00 Dobry wieczór, Ola! (z podanym imieniem).

Pokaż rozwiązanie
function powitanie(imie, godzina) {
  if (godzina < 18) {
    console.log("Dzień dobry, " + imie + "!");
  } else {
    console.log("Dobry wieczór, " + imie + "!");
  }
}
Z7. Koszt przejazduegzaminacyjne

Napisz funkcję kosztPaliwa(km, spalanie, cena), która zwraca koszt paliwa na trasę: km to długość trasy, spalanie to litry na 100 km, cena to cena litra. Następnie napisz funkcję kosztNaOsobe(km, spalanie, cena, osoby), która korzysta z kosztPaliwa i zwraca koszt przypadający na jedną osobę.

Pokaż rozwiązanie
function kosztPaliwa(km, spalanie, cena) {
  let litry = km / 100 * spalanie;
  return litry * cena;
}

function kosztNaOsobe(km, spalanie, cena, osoby) {
  return kosztPaliwa(km, spalanie, cena) / osoby;
}
★

Ściąga z lekcji 4

Definicja i wywołanie

function przywitaj() {
  console.log("Cześć!");
}
przywitaj();

Bez nawiasów () funkcja się nie uruchomi.

Parametry i argumenty

function pole(a, b) { … }
pole(5, 3);   // a = 5, b = 3

Kolejność ma znaczenie. Parametry bez cudzysłowów.

return

function brutto(n) {
  return n * 1.23;
}
let cena = brutto(100);

console.log pokazuje, return oddaje. Kod pod return się nie wykona.

Kilka return

function opis(t) {
  if (t < 0) return "mróz";
  if (t < 25) return "ok";
  return "upał";
}

Pierwszy wykonany return kończy funkcję.

Zasięg

const VAT = 0.23;     // globalna
function f() {
  let x = 1;          // lokalna
}

Co w funkcji, to zostaje w funkcji.

Na egzaminie

<button onclick="oblicz()">
function oblicz() { … }

Przycisk wywołuje funkcję. W onclick nazwa z nawiasami.

Na następnej lekcji: DOM, czyli pobieranie danych z formularza (getElementById, .value) i wyświetlanie wyniku na stronie (innerHTML).

Kontakt: mgzsp22@gmail.com

© 2026. Wszystkie prawa zastrzeżone.

error: Content is protected !!