Funkcije v JavaScriptu uporabljamo takrat, ko želimo določeno opravilo zapisati enkrat in ga nato po potrebi večkrat poklicati. Funkcija lahko sprejme vhodne podatke prek parametrov, lahko pa tudi vrne rezultat z uporabo stavka return.
Pomni: Funkcija brez izrecnega stavka return privzeto vrne vrednost undefined. Če želimo rezultat funkcije uporabiti v izrazu, ga moramo praviloma vrniti z return.
Osnovna pravila
- Funkcijo lahko definiramo z deklaracijo funkcije, funkcijskim izrazom ali puščično funkcijo.
- Parametri so imena, s katerimi funkcija sprejme vhodne podatke.
- Ob klicu funkcije se argumenti priredijo parametrom.
- Stavek
returnvrne rezultat in hkrati prekine izvajanje funkcije. - Pri novi kodi pogosto uporabljamo
constza shranjevanje funkcijskih izrazov in puščičnih funkcij.
Primerjave
Deklaracija funkcije
Deklaracija funkcije je osnovni in zelo pogost način zapisa funkcije. Zapišemo jo z rezervirano besedo function, imenom funkcije, morebitnimi parametri in telesom funkcije med zavitima oklepajema.
function ime(parametri) {
stavki;
}
<p id="primer1"></p>
<script>
{
function pozdrav() {
document.getElementById("primer1").textContent = "Pozdravljeni!";
}
pozdrav();
}
</script>
Klic funkcije
Funkcijo pokličemo tako, da napišemo njeno ime in oklepaje. Če funkcija pričakuje argumente, jih zapišemo v oklepaje.
ime(vrednosti)
Parametri
Parametri omogočajo, da funkcija deluje z različnimi vhodnimi vrednostmi. V sodobnem JavaScriptu lahko določimo tudi privzete vrednosti parametrov.
<p id="primer2"></p>
<script>
{
function pozdrav(ime = "obiskovalec") {
document.getElementById("primer2").textContent = "Pozdravljen, " + ime + "!";
}
pozdrav("Janez");
}
</script>
Pomni: Privzeta vrednost parametra se uporabi takrat, ko pri klicu funkcije za ta parameter ne podamo vrednosti ali pa podamo undefined.
return
Stavek return uporabimo takrat, ko želimo, da funkcija vrne rezultat. Ko JavaScript izvede return, se izvajanje funkcije konča.
<p id="primer3"></p>
<script>
{
function izracunajVsoto(a, b) {
return a + b;
}
document.getElementById("primer3").textContent = "Seštevek je " + izracunajVsoto(5, 10) + ".";
}
</script>
Če v funkciji uporabimo return brez vrednosti, funkcija vrne undefined. Tak zapis je uporaben tudi takrat, ko želimo funkcijo predčasno zaključiti.
Pozor: Za stavkom return v isti poti izvajanja ni več smiselno zapisovati kode, ki naj bi se še izvedla, saj se izvajanje funkcije na tem mestu prekine.
Funkcijski izraz
Funkcijo lahko zapišemo tudi kot izraz in jo shranimo v spremenljivko ali konstanto. V sodobni kodi tak zapis pogosto shranimo v const.
<p id="primer4"></p>
<script>
{
const kvadrat = function (x) {
return x * x;
};
document.getElementById("primer4").textContent = "Kvadrat števila 6 je " + kvadrat(6) + ".";
}
</script>
Puščična funkcija
Puščična funkcija je krajši zapis funkcijskega izraza. Primerna je za kratke funkcije, vendar ni popolna zamenjava za vse druge oblike funkcij.
<p id="primer5"></p>
<script>
{
const dvojnik = x => x * 2;
document.getElementById("primer5").textContent = "Dvojnik števila 7 je " + dvojnik(7) + ".";
}
</script>
Pozor: Puščične funkcije nimajo lastne vrednosti this. Zato niso vedno primerne za metode objektov ali za primere, kjer želimo, da se this nanaša na objekt, iz katerega je funkcija poklicana.
Doseg in spremenljivke v funkciji
Spremenljivke, deklarirane z let ali const znotraj funkcije, so lokalne za telo funkcije oziroma za ustrezen blok kode. V sodobni kodi se izogibamo ustvarjanju globalnih vezav brez jasne deklaracije.
<p id="primer6"></p>
<script>
{
function izracunaj(a, b) {
const vsota = a + b;
return vsota;
}
document.getElementById("primer6").textContent = "Vsota je " + izracunaj(8, 12) + ".";
}
</script>
Priporočila
- Za pregledne in splošne funkcije pogosto uporabljaj deklaracijo funkcije.
- Pri funkcijskih izrazih in puščičnih funkcijah uporabljaj
const, kadar vezave ne nameravaš ponovno prirediti. - Za kratke funkcije razmisli o puščični funkciji, vendar le tam, kjer ne potrebuješ lastnega
this. - Za rezultate, ki jih želiš uporabiti drugje v programu, uporabi
return. - Pri parametrih po potrebi uporabi privzete vrednosti.
Pogoste napake
- Funkcija spreminja vsebino dokumenta, čeprav bi bilo bolj smiselno, da vrne rezultat z
return. - Pri klicu funkcije se uporabi ime spremenljivke, ki ni določena.
- Puščična funkcija se uporabi v primeru, kjer je pomembna lastna vezava
this. - Za lokalne spremenljivke v funkciji se uporablja starejši zapis z
var, čeprav sta v sodobni kodi praviloma primernejšaletinconst. - Po stavku
returnje zapisana koda, za katero se zmotno pričakuje, da se bo še izvedla.
Zanimivost: Funkcije so v JavaScriptu prvovrstne vrednosti. To pomeni, da jih lahko shranjujemo v spremenljivke, posredujemo kot argumente in vračamo iz drugih funkcij.