Quando non usarle e perché

Le funzioni in JavaScript sono cittadini di prima classe o oggetti di prima classe, ciò significa che possiamo fare cose come passarle come parametro in una funzione o restituirle come risultato dell’esecuzione di una funzione.

Puoi leggere di più sulle funzioni qui:

Ti spiego cos’è una funzione anonima (AF) con il codice:

Quindi una AF è una funzione che non è salvata in una variabile o ha un nome dichiarato dopo l’identificatore “function”.

Quando non usarle

Il primo problema con le AF è che non hanno un nome, una dichiarazione piuttosto stupida, ma per gli sviluppatori, il nome di una variabile, classe o metodo è la principale documentazione che abbiamo sulle responsabilità e i comportamenti di quella variabile, classe o metodo. Un cattivo nome può farci fare un sacco di errori come aspettarsi che una funzione restituisca qualcosa quando il suo codice attuale stampa qualcosa nella console e restituisce vuoto, per esempio se avessimo chiamato la nostra “funcionResultPrinter” con qualcosa come “functionResultGetter”.

Quindi il primo momento in cui non dobbiamo usare funzioni anonime è quando abbiamo bisogno di un nome descrittivo, e questo generalmente non succede mai.

Il secondo problema è che le AF sono dichiarate e salvate in memoria in runtime. Questo significa che ogni volta che un AF sarà eseguito prenderà un altro posto in memoria e questo può aumentare la potenza di calcolo necessaria per quella parte di codice.

Facciamo un altro esempio con codice:

In questo esempio abbiamo un AF con quasi nessun sforzo computazionale richiesto ma possiamo fare un lavoro pesante su una funzione per ottenere ciò di cui abbiamo bisogno, e questo può consumare molte risorse dal nostro server o dal browser client.

La soluzione è nominare la funzione:

Finalmente facciamo qualche benchmark:

Riprendendo

Abbiamo due casi in cui dobbiamo evitare l’uso di funzioni anonime:

  1. Quando la funzione necessita di un nome descrittivo.
  2. Quando abbiamo bisogno di usare una funzione che ha bisogno di molta potenza di calcolo

.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.