Mikor ne használjuk őket és miért
A függvények JavaScriptben első osztályú polgárok vagy első osztályú objektumok, Ez azt jelenti, hogy olyan dolgokat tehetünk, mint például átadni őket paraméterként egy függvényben, vagy visszaadni őket egy függvény végrehajtásának eredményeként.
A függvényekről itt olvashatsz bővebben:
Kóddal magyarázom el, mi az anonim függvény (AF):
Az AF tehát olyan függvény, amelyet nem mentünk el egy változóba, vagy amelynek neve a “function” azonosító után van deklarálva.
Mikor ne használjuk őket
Az első probléma az AF-ekkel az, hogy nincs neve, ami elég hülye aclaration, de a fejlesztők számára egy változó, osztály vagy metódus neve a fő dokumentáció, amivel rendelkezünk az adott változó, osztály vagy metódus felelősségeiről és viselkedéséről. Egy rossz név miatt sok hibát követhetünk el, például azt várhatjuk, hogy egy függvény visszaad valamit, amikor a tényleges kódja kiír valamit a konzolra, és void-t ad vissza, például ha a “funcionResultPrinter”-t valami olyasmivel neveztük volna el, mint “functionResultGetter”.
Az első pillanat tehát, amikor nem kell anonim függvényeket használnunk, az az, amikor leíró névre van szükségünk, és ez általában mindig megtörténik.
A második probléma az, hogy az AF-eket futásidőben deklarálják és mentik a memóriában. Ez azt jelenti, hogy minden egyes alkalommal, amikor egy AF végrehajtásra kerül, egy másik helyet foglal el a memóriában, és ez növelheti a kód ezen részéhez szükséges számítási teljesítményt.
Mutatunk egy másik példát a kóddal:
Ebben a példában van egy AF, amelyhez szinte semmilyen számítási teljesítmény nem szükséges, de nehéz munkát végezhetünk egy függvényen, hogy megkapjuk, amire szükségünk van, és ez sok erőforrást emészthet fel a szerverünk vagy a kliens böngészője részéről.
A megoldás a függvény elnevezése:
Végül végezzünk néhány benchmarkot:
Újra
Két esetünk van, amikor el kell kerülnünk az anonim függvények használatát:
- Ha a függvénynek leíró névre van szüksége.
- Amikor olyan függvényt kell használnunk, amelynek nagy számítási teljesítményre van szüksége.