Kui oled juba mõnda aega JavaScriptis programmeerinud, oled kindlasti kuulnud... noolefunktsioonid ja kuulus eriline käitumine seeJa on ka üsna tõenäoline, et su pea on mitu korda plahvatanud, püüdes aru saada, miks. see Üks asi kehtib tavalise funktsiooni ja midagi täiesti erinevat noolefunktsiooni puhul.
Nende kahe kontseptsiooni valdamine ei ole ainult teooria küsimus: see on kirjutamise võti. Kaasaegne kood JavaScriptis ja ReactisSündmusekäitlejate toimimise, klassides konteksti käitumise, Node.js-is asünkroonsete tagasihelistuste lahendamise ja teatud mustrite tänapäeval heaks tavaks pidamise mõistmine.
Esiteks: JavaScripti funktsioonide kiire ülevaade
JavaScriptis saab funktsioone deklareerida mitmel viisil ja igal viisil on oma mõju nende käitumisele. see, In ulatus ja hetkel on funktsioon koodis saadaval.
Funktsiooni deklaratsioon
Klassikaline funktsioonideklaratsioon kasutab märksõna funktsioon ja nimi. Seda tüüpi funktsioonid on "kõrgendatud" (tõstmine) ulatuse alguses, kus need deklareeritakse, mis võimaldab funktsiooni kutsuda juba enne selle definitsiooni failis.
Traditsioonilisel viisil deklareeritud funktsioonis on väärtus see määratakse vastavalt kuidas Funktsiooni kutsutakse välja: kui seda kutsutakse objekti meetodina, kui seda kasutatakse koos uus, kui see on ranges režiimis, kui see lülitub režiimile helistama, kohaldada o sidudajne. See paindlikkus on võimas, kuid see on ka paljude vigade allikas keerulises koodis.
Funktsiooni avaldis
Samuti saate määrata anonüümse või nimetatud rolli muutujaSellisel juhul funktsiooni ennast ei käivitata, vaid käivitatakse ainult muutuja deklaratsioon (koos oli), aga mitte selle väärtust. Koos laskma y const Sa ei saa seda isegi enne definitsioonirida kasutada, kuna ajaline surnud tsoon.
Need funktsioonid jagavad sama mudelit see dünaamika Erinevalt klassikalistest deklaratsioonidest sõltub nende väärtus alati kutsumise kontekstist, seega jäävad nad tundlikuks selle suhtes, kuidas te neid tagasihelistajana edastate või kuidas te neid klasside ja objektide sees kasutate.
Mis täpselt on noolefunktsioonid?
Noolefunktsioonid tutvustati koos ECMAScript 2015 (ES6) mugavama, kompaktsema ja väljendusrikkama viisina funktsioonide deklareerimiseks, eriti tagasihelistusfunktsioonide ja funktsionaalse programmeerimise jaoks selliste meetoditega nagu kaart, filtreerida o vähendama.
Selle põhisüntaks koosneb parameetrite loendist, millele järgneb operaator => ja siis üks väljend või koodiplokkSee kompaktne formaat muudab koodi tõhusamaks. loetav paljudes stsenaariumides, kus varem tuli kirjutada pikki ja korduvaid anonüümseid funktsioone.
Noolefunktsioonide põhisüntaks
Noolefunktsioonid toetavad mitmeid süntaksivariatsioone, mis kõik põhinevad samadel reeglitel, kuid lihtsamate juhtude jaoks on olemas otseteed. Iga vormi mõistmine aitab teil paremini kirjutada. puhtam kood Ma saan kiiresti aru, mida iga tagasihelistamine teeb.
- Ilma parameetritetaNoole ees on tühjad sulud ja tavaliselt pärast neid avaldis.
const getMessage = () => "Hola"; - Üks parameeterParameetri nime ümber olevad sulud võib ära jätta, mis muudab koodi kokkuvõtlikumaks.
const square = x => x * x; - Mitmed parameetridPeate alati kasutama neid ümbritsevaid sulgusid, eraldades need komadega.
const sum = (a, b) => a + b; - Ühe avaldise kehaKui te ei kasuta lokkis sulgusid, tagastatakse avaldis teatud viisil. kaudne ilma et oleks vaja kirjutada tagasipöördumine.
- Mitmerealine kehaKui kasutate breketeid, peate kirjutama tagasipöördumine selgesõnaliselt väärtuse tagastamiseks, nagu tavalises funktsioonis.
Levinud vigade allikas on unustamine tagasipöördumine Kui liigute üherealisest versioonist looksulgudega sisu juurde, et lisada loogikat, hakkab teie funktsioon järsku tagastama defineerimata Ja pole ka ilmne, miks.
Noolefunktsioonid ja literaalobjektid
Kui ühe avaldisega noolefunktsioon tagastab sõnasõnaline objektSa pead selle objekti sulgudesse panema, et mootor seda funktsiooniploki alguseks ei ajaks. See on väike süntaksilõks, mis tabab paljusid inimesi ootamatult.
Vastasel juhul tõlgendab interpreter võtmeid tühjade plokkidena ja teie funktsioon ei tagasta objekti, vaid defineerimataSee põhjustab raskesti jälgitavaid vigu, kui proovite juurde pääseda omadustele, mida kunagi ei tagastatud.
Noolefunktsioonid ja nende käitumine
Noolefunktsioonide tõeline eristav tegur ei ole süntaks, vaid nende selle mudelKuigi traditsioonilistel funktsioonidel on see dünaamika Sõltuvalt nimest on noolefunktsioonidel a see leksikonSee tähendab, et nad haaravad kinni See pärineb piirkonnast, kus need on loodud ja nad hoiavad seda muutmata kujul.
See tähendab, et noolefunktsiooni sees see Seda ei saa muuta helistama, kohaldada ni sidudaJa see ei sõltu sellest, kas kasutate seda tagasihelistamisfunktsioonina sündmusekäitlejas või edastate selle mõnele teisele funktsioonile. Sellel on alati sama väärtus, mis tal oli väljaspool seda defineerimise ajal.
Kuidas see tavalistes funktsioonides töötab?
Funktsioonis, mis on deklareeritud koos funktsioon, väärtus see See sõltub kontekstist:
- Kui kutsute funktsiooni välja kui objekti meetod, see Osuta sellele objektile.
- Kui käivitate selle ilma kontekstita mitte-ranges režiimis, see viide globaalne objekt (brauseris aken, Node.js-is globaalne).
- Kui kasutate uus, see seejärel osutab see vastloodud eksemplar.
- Kui kandideerid helistama, kohaldada o siduda, saate sundida väärtust see käsitsi valitud objektile.
Ranges režiimis, kui kutsute välja tavafunktsiooni ilma objektita vastuvõtjana ja ilma helistama vms see on defineerimataSellepärast näete paljudes tänapäevastes näidetes funktsioone, mis algavad tähega 'use strict' et vältida vaikseid vigu ja sundida järjepidevamat käitumist.
Kuidas see noolefunktsioonides töötab?
Noolefunktsioonide puhul see Seda ei arvutata uuesti käivitamisel; see võetakse otse piirkond, kus need defineeritiSee tähendab, et nad käituvad sarnaselt sellele, kuidas muutujaid sulgemise abil jäädvustatakse (sulgemineNad vaatavad väljapoole ja mäletavad seda väärtust igaveseks.
Sellel on teie igapäevaelus mitu väga olulist tagajärge:
- Sa ei saa kasutada noolefunktsiooni nagu konstruktor koos uussest neil pole oma see ega ka sobivat prototüüpi.
- Noolefunktsiooni kutsumine helistama o kohaldada ei muuda väärtust seeÜlejäänud argumendid saate aga tavapäraselt edastada.
- Noolefunktsioonidena loodud objektide meetodites see See ei osuta objektile, vaid ülemine keskkond (näiteks window või moodul), mis on peaaegu alati viga.
Peamine järeldus on see, et noolefunktsioonid on ideaalsed siis, kui soovite See sisemine on sama mis väline.Aga need on halb mõte, kui sul on vaja reaalse objekti meetod või kui kavatsete midagi luua uus.
Noolefunktsioonid, klassid ja React

Maailmas Reageerima ja JavaScripti klasside puhul üldiselt, käsitlemine see See on tundlik teema. Klassi komponendid päritivad... React.Component Nad kasutavad meetodeid, mille abil see peab juurdepääsuks järjepidevalt osutama komponendi eksemplarile this.props y see.riik.
Klassikalise klassisüntaksi abil defineeritud meetodite puhul on väärtus see See võib "kaotada", kui edastatakse meetod sündmuse tagasihelistamisena, näiteks onClickSellepärast näete paljudes vanemates õpetustes mustreid nagu this.metodo.bind(this) konstruktoris või otse JSX-is, mida tänapäeval peetakse üsna paljusõnaliseks.
Tüüpilised need sidumismustrid Reactis
Klassikomponendis oli ajalooliselt neli peamist viisi selle tagamiseks see sündmusekäitleja kutsumisel viitab see alati komponendile:
- Kasutama siduda meetodis saagis, mis tagab konteksti, aga loob igas renderduses uue funktsiooni.
- Tee konstruktoris sidumist et vältida funktsiooni korduvat loomist, säilitades ühe viite.
- Määrake käitleja järgmiselt klassi omadus noolefunktsiooniga, kasutades ära asjaolu, et noolefunktsioonid jäädvustavad see juhtumist.
- Kasutama JSX-is olev noolefunktsioon, edastades noolefunktsiooni otse atribuudile onClick või samaväärne.
Praktikas on käitleja deklareerimise võimalus klassi omadus noolefunktsiooni abil Sellest sai kõige mugavam muster: kirjutad vähem koodi, seda vähem pead tegema siduda manuaal ja see püüdle alati komponendi poole, kus pole üllatusi.
Noolefunktsioonid funktsioonikomponentides
Koos saabumisega funktsionaalsed komponendid ja konksudReact tugineb palju enam noolefunktsioonidele. Enamik tänapäevaseid komponente on rakendatud nooltena. const MinuKomponent = () => { … }See muudab noolefunktsioonide kasutamise kogu puus loomulikuks ja järjepidevaks.
Nende komponentide sees on tavaline kombineerida noolefunktsioone teiste ES6 funktsioonidega, näiteks hävitamine, malli literaalid, kolmekomponentsed operaatorid, laiali ja massiivimeetodid, näiteks kaart, filtreerida y vähendama, luues seega väga väljendusrikka süntaksi, mis aga nõuab head konteksti käsitlemist ja muutmatust.
See globaalses kontekstis, üksikud objektid ja funktsioonid
Et mõista, miks noolefunktsioonid mängu nii palju muudavad, tasub üle vaadata, kuidas need käituvad. see erinevates natiivsetes JavaScripti kontekstides, nii brauseris kui ka Node.js-is.
Aastal brauseri globaalne ulatusväljaspool mis tahes funktsiooni või moodulit see osuta objektile akenSee tähendab, et iga muutuja, mis on deklareeritud koos oli Kõrgemal tasemel ripub see selle globaalse objekti küljes ja on ligipääsetav nii nime kui ka akna.nimiSeda peetakse globaalse reostuse tõttu keerulistes rakendustes halvaks tavaks.
see sõnasõnaliste objektide sees
Kui defineerite sõnasõnaline objekt Traditsiooniliste meetodite puhul saab iga meetod see mis viitab objektile endale, kui seda kutsutakse välja kui obj.method()See on standardne viis sõsarkinnistutele juurdepääsuks see.omadus ilma vahepealsete muutujate vajaduseta.
Probleem tekib siis, kui asendate need meetodid järgmisega: noolefunktsioonidKuna meil pole see omaFunktsioon nool jäädvustab välise `this` atribuudi, mis on tõenäoliselt globaalne või mooduli `this`. Seetõttu ei pääse te meetodi sees objekti omadustele ligi, kasutades see, rikkudes täielikult disaini algse eesmärgi.
See on lahtiste funktsioonide ja range režiimi piires
Traditsioonilistes funktsioonides, mida nimetatakse "unplugged" ja millel puudub vastuvõttev objekt, on see See sõltub sellest, kas kood on sees range režiim Või mitte. Rangelt võttes langeb see tagasi sellesse globaalne objekt, kuigi rangelt võttes muutub see selgesõnaliselt defineerimataet vältida ohtlikke tegevusi globaalses keskkonnas.
See käitumine muutub drastiliselt, kui kapseldate oma koodi ES-moodulitesse, moodsatesse kimpurite või IIFE-desse, kus globaalne väärtus võib olla erinev või mitte seotud. see tavapärasel viisil, eriti Node.js, kus arhiivi peamine ulatus on moodul ja mitte globaalne.
kõne, kandideerimine, sidumine ja nende seos sellega
JavaScript pakub konteksti haldamiseks klassikaliste funktsioonide kõrval kolme laialdaselt kasutatavat meetodit: helistama, kohaldada y sidudaNeed kõik võimaldavad teil selgesõnaliselt kontrollida, millist väärtust see võtab. see kui funktsioon käivitatakse.
Need meetodid toimivad ainult koos funktsiooniga deklareeritud funktsioonid (või ekvivalendid), kuna noolefunktsioonid ignoreerivad kõiki katseid muuta oma `seda`. Seetõttu on kõik kolm nii kasulikud vananenud API-de, vanade klasside või mustritega töötamisel, kus soovite sama funktsiooni erinevatel objektidel uuesti kasutada.
helista ja rakenda: käivita see selgesõnaliselt
nii helistama kui kohaldada nad täidavad funktsiooni koheseltAinus erinevus seisneb argumentide edastamises. Mõlemal juhul on esimene edastatav parameeter objekt, mis tuleks teisendada. see funktsiooni sees.
koos helistama Järgnevad argumendid esitatakse ükshaaval, samas kui kohaldada Nad esitlevad end kui massiiviSee sobib väga hästi olukordadesse, kus sul on juba argumentide loend kogumina olemas ja sa tahad selle sellisena kõnesse sisestada.
bind: loo uus funktsioon `this` bound'iga
Meetod siduda See ei käivita funktsiooni hetkel, vaid genereerib hoopis uus funktsioon koos see püsivalt seotud teie määratud objektile. See on nagu originaali "spetsialiseeritud" versiooni loomine, mis käitub alati selles kontekstis.
See muster on väga levinud objektimeetodite edastamisel API-dele, mis neid hiljem kutsuvad, näiteks sündmuste tagasihelistamiste kaudu, kaotamata algset konteksti. Enne noolefunktsioonide populariseerimist siduda See oli üks puhtamaid viise tagamaks, et klassimeetod osutab jätkuvalt õigele eksemplarile.
Miks on noolefunktsioonid ideaalsed tagasihelistamiseks?
Üks põhjusi, miks noolefunktsioonid on JavaScripti ökosüsteemi vallutanud, on nende sobivus asünkroonsed tagasihelistamised ja funktsionaalne programmeerimine. Selliste API-dega töötades nagu setTimeout, setInterval, Lubadused Või Node.js sündmuste tsükliga on sageli vaja pääseda ligi välisele kontekstile ilma, et see moonutataks.
Enne ES6-t kasutati selliseid nippe nagu salvestamine konstant ise = see o konstant that = this enne tagasihelistusfunktsiooni sisestamist, et õigele objektile saaks ikkagi funktsiooni seest viidata. Noolefunktsioonid muudavad selle tarbetuks, jäädvustades automaatselt See väline ja säilita seda.
Noolefunktsioonid ja sündmuste tsükkel Node.js-is
En Node.js, kus suurem osa huvitavast koodist keerleb ümber Asünkroonne sisend/väljund (failid, võrk, taimerid), noolefunktsioonide kombinatsioon mudeliga sündmuste tsükkel ja tagasihelistusjärjekorrad See lihtsustab elu palju. Iga kord, kui annate funktsiooni, näiteks käepideme, edasi fs.readFileOlenemata sellest, kas saadate HTTP-serverile või mõnele libuv-operatsioonile, aitavad noolefunktsioonid hoida viited külgnevatele muutujatele ja moodulikontekstidele üllatustevabad.
Lisaks mikroülesannete järjekordades, näiteks Lubadused o protsess.järgmineMärksõnaOn väga tavaline kirjutada lühikesi tagasihelistusi, näiteks SIIS o saak noole süntaksiga, kasutades ära mõlemat kaudne tagasitulek kui see leksikon, mis muudab koodi deklaratiivsemaks ja väljendusrikkamaks.
Millal EI TOHIKS noolefunktsioone kasutada?
Kuigi noolefunktsioonid võivad tunduda võlulahendusena kõikidele probleemidele, on olukordi, kus nende kasutamine on otseselt seotud... vastupidine ja tekitab isegi vigu, mida on raske tuvastada.
Üks neist, võib-olla kõige olulisem, on Objektide või klasside meetodid, mis vajavad oma `seda`Teine võimalus on see, kui soovite luua ehitajad või kasutada prototüüpide ja pärimise toetatud objektorienteeritud mustreid, mille puudumine prototüüp ja oma kontekst tähendab, et noolefunktsioonid lihtsalt ei sobi.
Väldi noolefunktsioonide kasutamist objektimeetoditena.
Kui defineerite objekti meetodi noolefunktsiooniga, siis See sisemine ei viita objektilevaid pigem konteksti, milles see objekt defineeriti. See rikub ootusi igaühele, kes koodi loeb ja kavatseb seda kasutada see.omadus meetodi sees.
Soovitatav viis meetodite kirjutamiseks, mis sõltuvad see See puudutab klassikalise süntaksi jätkuvat kasutamist literaalobjektides või nende meetodite standardset deklareerimist klassides, reserveerides noolefunktsioonid sisemiste tagasihelistamiste jaoks, mis peavad jäädvustama see ülevama meetodi abil.
Ärge kasutage noolefunktsioone konstruktoritena
Noolefunktsioonid puuduvad [[Ehita]], sisemine mehhanism, mis võimaldab funktsiooni käivitada uusSeega nende konstruktoritena kasutamise katse tekitab TüüpvigaNeil pole ka oma. prototüüpSeetõttu ei saa te eksemplaride jagatud meetodeid riputada.
Kui teie disain nõuab korduvkasutatavaid eksemplare ühiste omaduste ja meetoditega, peaksite valima klassid või traditsiooniliste konstruktorifunktsioonide abil, jättes noolefunktsioonid olekuta loogika või puhtfunktsionaalsete utiliitide jaoks.
Seos JavaScripti teiste kaasaegsete funktsioonidega
Noolefunktsioone kasutatakse harva eraldi; need käivad peaaegu alati käsikäes teiste funktsioonidega Kaasaegne ECMAScript mis mõjutavad ka seda, kuidas te koodi korraldate ja mõistate. Mõned kõige seotumad on laskma y conston muutumatus, hävitamine ja levitamise süntaks.
Nende õige kombineerimise tundmine võimaldab teil kirjutada väga kokkuvõtlikke noolefunktsioone, mis teisendavad andmeid massiivimeetoditega, näiteks kaart, filtreerida y vähendamahoides alati algset olekut puutumata, mis on ülioluline keskkondades nagu React, kus muutumatuse muster on normiks.
laske, konstant ja muutumatus
Saabumine laskma y const See võimaldas töötada plokkide ulatustega ja viidetega, mida ei ole ümber määratud. Koos noolefunktsioonidega on tänapäeval tavaks deklareerida funktsioone järgmiselt: const minuFunktsioon = () => {…}, tagades, et funktsiooni sisaldavat muutujat üle ei kirjutata.
Andmestruktuurides, näiteks massiivides ja objektides, soodustatakse muutmatust järgmiste abil: Object.freeze kui soovite vältida sügavaid muudatusi ning hajutatud toimingute ja puhaste meetodite abil, kui teil on vaja luua muudetud koopiad Originaali muutmise asemel sõltub renderdamisel või olekus eriti oluline muutuste tuvastamine.
Malli literaalid, kolmikväärtused ja lühis
Näiteks JSX-is tagasihelistusfunktsioonide renderdamisel või HTML-stringide loomisel on peaaegu vältimatu segada noolefunktsioone malli literaalid (tagasitikkudega) ja operaatoritega, näiteks kolmikkomponent o la lühise hindamineNeed operaatorid võimaldavad kirjutada väga ilmekaid tekstisiseseid tingimusi, mis sobivad väga hästi noolefunktsioonide deklaratiivse stiiliga.
Malli literaalide sees olevad avaldised ${…} Need lahendatakse sama leksikaalse ulatusega, mis domineerib noolefunktsioonide `seda` puhul, seega on oluline selgelt määratleda, milliseid muutujaid ja millist konteksti igas interpolatsioonis kasutatakse, et vältida mitmetähenduslikku käitumist.
Noolefunktsioonid iteratsioonides ja kollektsioonides
Üks valdkondi, kus noolefunktsioonid on suurimat vahet teinud, on töötlemine massiivid ja kollektsioonidLühikeste tagasihelistuste edastamine meetoditele nagu kaart, filtreerida, leidma o vähendama Noole süntaksiga muutub see oluliselt loetavamaks.
Näiteks loendi kirjete filtreerimine kategooria alusel või API tulemuste teisendamine sisemisteks andmestruktuurideks muutub palju deklaratiivsemaks ja kombineerituna ... hävitamine Funktsiooni parameetritest on lihtne eraldada ainult vajalikud omadused.
kaardista, filtreeri, vähenda ja ettevõte
Tüüpiline kombinatsioon on tavaliselt midagi sellist: list.filter(üksus => tingimus).map(üksus => teisendus)Mitme noolefunktsiooni aheldamine massiivimeetoditeks. Igaüks neist pärib `this` atribuudi kontekstist, kus see on defineeritud, kuigi enamikul juhtudel `this` atribuuti isegi ei kasutata, vaid pigem selgesõnalisi parameetreid, mis tugevdavad funktsionaalset stiili.
En vähendamaSellisel juhul, kui haldate akumulaatorit, mis liigub iteratsioonist iteratsiooni, võimaldavad noolefunktsioonid teil redutseerimisoperatsiooni väga lühidalt väljendada, kuigi on soovitatav mitte kasutada liiga tihedaid avaldisi, kui soovite, et kood jääks teistele arendajatele arusaadavaks.
Import, eksport ja moodulid
Kaasaegses JavaScripti ökosüsteemis on peaaegu kogu kood korraldatud järgmiselt: moodulidkas natiivse süntaksi abil import ja eksport või kasutades komplekteerimissüsteeme, mis kompileeruvad sellesse vormingusse. Selles kontekstis sobivad noolefunktsioonid väga hästi korduvkasutatavate funktsionaalsusüksustena.
On tavaline näha kommunaalteenuste eksporti kui const myUtil = (…) => {…} ja seejärel imporditakse erinevatesse failidesse. Kuna iga moodul asub oma ulatuse piires, siis see leksikon Noolefunktsioonide kontekst kipub olema mooduli kontekst, mis enamikus puhastes utiliitides pole isegi oluline, kuna need ei vaja konteksti.
Parimad tavad väliste moodulite ja skriptidega
HTML-lehel JavaScripti serveerimisel on eelistatav see laadida, kasutades välised failid ja vältige pikkade tekstisiseste plokkide manustamist. Kasutage ka atribuuti tüüp="moodul" skriptimärgendis võimaldab see kaasaegset süntaksit import ja eksport ja teeb selgeks, et faili käivitatakse režiimis range vaikimisi
Jõudluse osas mooduli skriptide paigutamine juhataja koos edasi lükkama võimaldab brauseril koodi alla laadida ja käivitada renderdamist blokeerimata HTML-i, säilitades samal ajal hea kasutajakogemuse. Kogu selles skeemis on noolefunktsioonid lihtsalt kõige loomulikum viis väikeste korduvkasutatavate loogikatükkide määratlemiseks.
DOM-i sisestamine ja manipuleerimine moodsa JavaScripti abil
Kuigi selle teema keskmes on funktsioonid arrow ja `this`, on võimatu ignoreerida JavaScripti rolli DOM-i manipuleerimineMeetodid, näiteks getElementById, querySelector, setAttribute või selle muutmine stiil Need on endiselt lihtsad, kuid tänapäeval kombineeritakse neid tavaliselt nooleklahvidega, et reageerida sündmustele ja liidese värskendamisele.
Töötama koos sündmuste kuulajad kasutamine element.addEventListener('click', e => {...}) See on standardne viis loogika seostamiseks kasutaja interaktsioonidega. Nendes käitlejates see Noolefunktsiooni sees ei ole see DOM-element, vaid väline kontekst, seega kui teil on sõlme vaja, peate kasutama sündmuse parameetrit ennast. e.praeguneSihtmärk o e.sihtmärk, selle asemel, et sellele loota nagu vanade tekstisiseste atribuutide puhul.
Sünkroonne JavaScript, asünkroonne JavaScript ja tagasihelistamised
Teine oluline valdkond, kus noolefunktsioonid vahet teevad, on asünkroonne programmeerimineJavaScript on ühelõimeline ja liidese blokeerimise vältimiseks delegeerib see aeglased toimingud brauseri või sõlme API-dele, mis seejärel kutsuvad teie tagasihelistusi, kui need lõppevad.
Noolefunktsioonide edastamine tagasihelistustena setTimeout, lubadusiHTTP-päringud või kettapöördused muudavad koodi kompaktsemaks ja säilitavad konteksti ilma täiendavate nippideta. Pesastatud tagasihelistuste etapis suunas Lubadused ja hiljem suunas asünkrooni/ootaNoolefunktsioonid on olnud andmevoo loetavamaks muutmisel oluline element.
Üldiselt on oluline mõista, kuidas noolefunktsioonid jäädvustavad selle leksikaalseltTeadmine, millal on need teie parimad liitlased ja millal on kõige parem jätkata traditsioonilistele funktsioonidele toetumist, koos teadmisega, kuidas neid kombineerida moodulite, massiivimeetodite, muutmatuse, klasside ja sündmuste tsükliga, võimaldab teil kirjutada tõeliselt head JavaScripti ja Reacti; lõppkokkuvõttes on oluline valida iga konteksti jaoks õige funktsioonivorm, kasutades ära selle süntaktilisi eeliseid, langemata piiripealsetesse olukordadesse, kus „see” käitumine võib tagasilöögi anda. Jaga seda programmeerimisjuhendit ja JavaScripti noolefunktsioone.