Sì, probabilmente il titolo può spaventare. E non nascondiamo che in questo capitolo cominciamo a giocare sul serie. Ma d’altronde vogliamo giocare sul serio, no?
Quello di cui parleremo in questa lezione, è di astrazione. L’astrazione è la capacità di nascondere i dettagli e darci l’abilità di fare del codice che gira ad un livello più alto rispetto al problema. Per capirlo, applicheremo questo principio sfruttando le peculiarità di Javascript rispetto alle funzioni e vedremo quanto sono malleabili a livello strutturale. Ci permetteranno di fare del codice molto logico, molto elegante, con qualche “ma”.
Partiamo innanzitutto da un esempio base, scritto secondo quanto abbiamo appreso in precedenza e teniamolo sempre presente come base di partenza per quanto diremo in questa lezione:
Potremmo leggere questo semplice ciclo come “Per ogni elemento dell’array, scrivi nella console il suo contenuto”.
Proviamo a fare una piccola prova di astrazione, racchiudendo il codice in una funzione:
Ma se volessimo fare qualcosa di più di un semplice console.log() ? Proviamo ad astrarre questo “qualcosa”:
Riscriviamo lo stesso codice con un pizzico di astrazione in più. Siccome una variabile può contenere un valore che può essere una funzione, passiamo la funzione alert() come secondo argomento alla funzione mostraArray() . Il risultato naturalmente sarà lo stesso.
Come abbiamo visto nel capitolo dedicato alle funzioni, possiamo anche creare una funzione spot, cioè al volo. Proviamo ad applicare questo principio al caso precedente:
Adesso, il corpo vero e proprio del nostro programma è all’interno di una funzione! In questo modo possiamo specificare una variabile (cioè n ) per ciascun elemento dell’array man mano che lo leggiamo così da non farlo manualmente.
Dobbiamo confessarvi, però, che questa funzione esiste già inclusa in Javascript e che l’abbiamo riscritta solo per motivi didattici. Possiamo usare, infatti, la funzione forEach() che come suggerisce il nome, itera attraverso tutti gli elementi di un array. In realtà, è un metodo del tipo array, quindi non dovremo neanche passargli il primo argomento:
Come vedete otteniamo lo stesso risultato.
Funzioni di funzioni
Abbiamo visto che possiamo astrarre e raffinare il nostro codice per scrivere funzionalità più concise e usare le funzioni stesse come argomento. Nel prossimo esempio cercheremo di astrarre maggiormente le azioni oltre ai valori come fatto in precedenza:
In questo esempio la funzione maggioreDi() crea una nuova funzione. Questo nuovo lessico potrà sembrare difficile da comprendere, ma leggendolo più volte e testandolo vi entrerà certamente in testa.
JSON
È tempo di conoscere uno dei più diffusi formato dati in circolazione, soprattutto quando parliamo di Javascript. Parliamo ovviamente di JSON, JavaScript Object Notation, che è diventato uno standard per la risposta API di molti servizi web e che possiamo immagazzinare, come vedremo, molto facilmente in stringhe e quindi file.
Un dato JSON si scrive in modo molto simile a come dichiariamo gli oggetti, con qualche piccola differenza. I nomi delle proprietà devono essere compresi tra virgolette e sono ammessi solo dati semplici, niente funzioni, variabili o commenti. Javascript mette a disposizione due funzioni, JSON.stringify e JSON.parse che si occupano di convertire un dato JSON in una stringa e viceversa.