Funkcije so jedro JavaScripta. Če so bile prej vezane na uporabo ključne besede function, prinaša ES6 novo in bolj elegantno pisanje s t. i. puščičnimi funkcijami. Ta nova sintaksa ne samo skrajša tvoj kodo, ampak tudi rešuje nekaj težav, povezanih s kontekstom this. V tem vodiču boš izvedel vse, kar moraš vedeti o puščičnih funkcijah.
Pomembna spoznanja
- Puščične funkcije ponujajo krajšo sintakso v primerjavi s običajnimi funkcijami.
- Nimajo lastnega konteksta this, kar jih še posebej praktične naredi pri uporabi v povratnih klicih.
- Odstranitev zavitih oklepajev in ukaza return postane mogoča, kadar funkcija vrne le en izraz.
Uvod v puščične funkcije
Puščične funkcije se običajno uporabljajo za pisanje kode bolj berljive in kompaktne. Namesto da pišeš function, lahko uporabiš novo sintakso za krajšo deklaracijo funkcije.

Za razumevanje, kaj so puščične funkcije, lahko tradicionalne funkcije dobro izhodišče. Če deklariraš funkcijo s ključno besedo function, je običajno nekoliko daljša in manj elegantna. Tukaj je primer standardne funkcije v JavaScriptu:
To je izhodišče, od katerega preidemo na puščične funkcije.
Korak 1: Deklariranje puščične funkcije
Namesto ključne besede function lahko preprosto postaviš parametre v oklepaje in nato uporabiš puščico, za katero sledi telo funkcije. Tako izgleda prejšnja funkcija kot puščična funkcija:
Kot vidiš, je sintaksa veliko bolj kompaktna. Po prvem poskusu preveri, ali funkcija pravilno deluje.
Korak 2: Uporaba puščičnih funkcij z nizi
Še ena velika prednost puščičnih funkcij je pri njihovi uporabi z nizi. Poglejmo primer. Recimo, da imaš niz števil in želiš najti položaj določene številke. Tukaj uporabljamo metodo findIndex, da najdemo indeks:
Puščična funkcija precej poenostavi berljivost kode in zmanjša potrebo po dodatni ključni besedi function.
Korak 3: Skrajšanje puščičnih funkcij
Če ima puščična funkcija le en izraz, lahko izpustiš zavitih oklepajev in besedo return. Tako izgleda, ko še bolj skrajšaš funkcijo findIndex:
To ni le krajše, ampak tudi bolj elegantno. Preizkusi funkcijo in preveri, ali še vedno pravilno deluje.
Korak 4: Obvladovanje ključne besede this
Ena izmed ključnih prednosti puščičnih funkcij je obravnava konteksta ključne besede this. V klasičnih funkcijah postane this pogosto nepredvidljiv, še posebej, če se funkcija uporablja kot povratni klic. Puščične funkcije pa povežejo this s kontekstom, v katerem so bile definirane.
Poglej si naslednji primer:
obj.print(); // Izpiše "Besedilo"
Vendar če setTimeout uporabljaš s klasično funkcijo, se spremeni kontekst this:
Z uporabo puščične funkcije znotraj setTimeout dobiš enak rezultat kot pri klasični funkciji, vendar brez izgube konteksta:
Korak 5: Ohranjanje dodelitve konteksta this
Lahko tudi this povežeš z spremenljivko, da zagotoviš dostop do nje. Vendar se ta vzorec pogosto pokaže manj eleganten kot uporaba puščičnih funkcij.
Prednosti puščičnih funkcij
- So krajše in bolj elegantne v primerjavi s tradicionalno deklaracijo funkcij.
- Nimajo lastnega konteksta this, kar poenostavi uporabo v povratnih klicih.
- Sintaksa ti omogoča, da zelo berljivo oblikuješ kodo.
Povzetek
Puščične funkcije ponujajo priročen način za učinkovito deklaracijo JavaScript funkcij. Z novo sintakso se ne izboljša le berljivost, temveč se tudi znatno olajša upravljanje s kontekstom this. Puščične funkcije bi morali uporabljati predvsem v primerih, ko potrebuješ povratne klice ali krajše funkcionalne izraze.
Pogosto zastavljena vprašanja
Kaj so puščične funkcije?Puščične funkcije so krajša sintaksa za funkcije v JavaScriptu, ki so bile uvedene s ES6.
Kdaj naj uporabim puščične funkcije?Puščične funkcije bi morali uporabljati predvsem v primerih s povratnimi klici ali ko potrebujete anonimne funkcije.
Kakšne prednosti imajo puščične funkcije glede na kontekst this?Puščične funkcije povežejo this s kontekstom, kar pogosto preprečuje nepričakovano obnašanje pri običajnih funkcijah.