Funkce
Doba čtení: cca 2 min
Funkce je pojmenovaný blok kódu, který lze spustit kdykoli a opakovaně. Díky funkcím píšeš kód jednou a voláš ho na více místech – to je základ přehledného a udržovatelného JavaScriptu.
Deklarace funkce
Základní způsob vytvoření funkce:
function pozdrav() {
console.log('Ahoj!');
}
// Volání funkce
pozdrav(); // Vypíše: Ahoj!
Funkce se vytvoří klíčovým slovem function, za nímž následuje jméno, závorky a tělo funkce ve složených závorkách.
Parametry a argumenty
Funkce může přijímat vstupní hodnoty – parametry. Při volání funkce jim předáváš konkrétní hodnoty – argumenty:
function pozdravJmenem(jmeno) {
console.log('Ahoj, ' + jmeno + '!');
}
pozdravJmenem('Zdeněk'); // Ahoj, Zdeněk!
pozdravJmenem('Marie'); // Ahoj, Marie!
Funkce může mít více parametrů oddělených čárkou:
function secti(a, b) {
console.log(a + b);
}
secti(3, 5); // 8
Návratová hodnota – return
Funkce může vrátit výsledek pomocí klíčového slova return. Výsledek pak lze uložit do proměnné nebo použít v dalším výpočtu:
function secti(a, b) {
return a + b;
}
const vysledek = secti(3, 5);
console.log(vysledek); // 8
// Nebo přímo
console.log(secti(10, 20)); // 30
Po klíčovém slově return funkce okamžitě skončí – žádný kód za ním se nespustí.
Funkce jako výraz (function expression)
Funkci lze uložit do proměnné. Takové funkci se říká funkční výraz:
const pozdrav = function(jmeno) {
return 'Ahoj, ' + jmeno;
};
console.log(pozdrav('Zdeněk')); // Ahoj, Zdeněk
Šipková funkce (arrow function)
Moderní zkrácený zápis funkce pomocí šipky =>. Je stručnější a dnes velmi běžný:
// Klasická funkce
function secti(a, b) {
return a + b;
}
// Šipková funkce
const secti = (a, b) => a + b;
// Šipková funkce s více řádky
const sectiAVypis = (a, b) => {
const vysledek = a + b;
console.log(vysledek);
return vysledek;
};
Tip od Zdeňka
Zdeněk radí: Funkce by měla dělat jednu věc a dělat ji dobře. Pokud název funkce obsahuje spojku „a“ (nactiDataAZobrazVysledky()), je to signál, že by se měla rozdělit na dvě. Menší funkce se lépe testují, lépe čtou a lépe opravují. A vždy piš popisný název – prepnoutRezim() je lepší než toggle() nebo f1().