Funksjoner er hjertet av JavaScript. Tidligere var de bundet til bruken av funksjonsnøkkelordet, men med ES6 kommer en ny og mer elegant skrivemåte med såkalte pil-funksjoner. Denne nye syntaksen gjør koden din ikke bare kortere, men løser også noen problemer knyttet til this-konteksten. I denne veiledningen vil du lære alt du trenger å vite om pilfunksjoner.
Viktigste erkjennelser
- Pilfunksjoner tilbyr en kortere syntaks sammenlignet med vanlige funksjoner.
- De har ingen egen this-kontekst, noe som gjør dem spesielt praktiske for bruk i tilbakekallfunksjoner.
- Det er mulig å fjerne krøllparentesene og return-anvisningen hvis funksjonen bare returnerer en uttrykk.
Innføring i pilfunksjoner
Pilfunksjoner brukes vanligvis for å gjøre koden mer lesbar og kompakt. I stedet for å skrive function kan du bruke den nye syntaksen for å erklære funksjonen mer kortfattet.
For å forstå hva pilfunksjoner er, kan de tradisjonelle funksjonene godt brukes som utgangspunkt. Når du erklærer en funksjon med funksjonsnøkkelordet, er den vanligvis litt lengre og mindre elegant. Her er et eksempel på en standardfunksjon i JavaScript:
Dette er utgangspunktet som vi går videre fra til pilfunksjoner.
Trinn 1: Erklære en pilfunksjon
I stedet for funksjonsnøkkelordet kan du enkelt sette parameterne i parenteser og deretter bruke en pil, etterfulgt av funksjonskroppen. Slik ser den forrige funksjonen ut som en pilfunksjon:
Som du ser, er syntaksen mye mer kompakt. Etter første forsøk kan du sjekke om funksjonen fungerer riktig.
Trinn 2: Bruke pilfunksjoner med matriser
En annen stor fordel med pilfunksjoner vises når de brukes med matriser. La oss ta et eksempel. Antar at du har en matrise med tall, og vil finne posisjonen til et bestemt tall. Her bruker vi findIndex-metoden for å finne indeksen:
Pilfunksjonen forenkler lesbarheten av koden enormt og reduserer behovet for et ekstra funksjonsnøkkelord.
Trinn 3: Forkorting av pilfunksjoner
Hvis en pilfunksjon bare har ett uttrykk, kan du unngå krøllparentesene og return-nøkkelordet. Slik ser det ut når vi forkorter findIndex-funksjonen ytterligere:
Dette er ikke bare kortere, men også mer elegant. Du kan teste funksjonen og forsikre deg om at den fortsatt fungerer korrekt.
Trinn 4: Håndtering av dette-nøkkelordet
En helt avgjørende fordel med pilfunksjoner er håndteringen av this-konteksten. I klassiske funksjoner blir this ofte uforutsigbart, spesielt når funksjonen brukes som tilbakekall. Pilfunksjoner binder imidlertid this til konteksten de ble definert i.
Sjekk ut følgende eksempel:
obj.print(); // Skriver ut "Tekst"
Hvis du imidlertid bruker setTimeout med en vanlig funksjon, endres konteksten til this:
Ved å bruke en pilfunksjon innenfor setTimeout får du samme resultat som med den tradisjonelle funksjonen, uten å miste konteksten:
Trinn 5: Opprettholde tilordningen av this
Du kan også binde this til en variabel for å sikre at du kan få tilgang til den. Dette mønsteret er imidlertid ofte mindre elegant enn å bruke pilfunksjoner.
Fordele med pilfunksjoner
- De er kortere og mer elegante sammenlignet med vanlig funksjonsdeklarasjon.
- De har ingen egen this-kontekst, noe som forenkler bruken i tilbakeropingsfunksjoner.
- Syntaksen gjør det mulig å gjøre koden betydelig mer lesbar.
Oppsummering
Pilfunksjoner tilbyr en praktisk måte å effektivt deklarere JavaScript-funksjoner på. Den nye syntaksen forbedrer ikke bare lesbarheten, men forenkler også håndteringen av this-konteksten betydelig. Du bør bruke pilfunksjoner spesielt når du trenger tilbakeropingsfunksjoner eller kortere funksjonsuttrykk.
Ofte stilte spørsmål
Hva er pilfunksjoner?Pilfunksjoner er en kortere syntaks for funksjoner i JavaScript introdusert med ES6.
Når skal jeg bruke pilfunksjoner?Bruk pilfunksjoner spesielt i tilbakeropingscenarier eller når du trenger anonyme funksjoner.
Hva er fordelene med pilfunksjoner med hensyn til this-kontekst?Pilfunksjoner binder this til den omkringliggende konteksten, noe som ofte forhindrer uforutsigbar atferd hos vanlige funksjoner.