Parametri e callback

In questo video parleremo in dettaglio dei parametri delle funzioni.
Vedremo la differenza tra parametri e argomenti e capiremo come sia possibile invocare una stessa funzione ogni volta passandole valori diversi.
Parleremo anche di 2 nuove funzionalità introdotte dall'ECMAScript 6: il parametro di default (usato quando si invoca una funzione senza passare gli argomenti necessari) e l'operatore rest (che raggruppa in un array tutti gli argomenti in eccesso).
Infine vedremo come usare le famose funzioni callback, che altro non sono che funzioni passate come argomenti quando si invoca un'altra funzione.

Trascrizione: (click per espandere)
salve a tutti in questo video parlerò
dei parametri delle funzioni allora come
parametro può essere passato qualsiasi
valore quindi stringhe numeri valori
booleani array oggetti anche altre
funzioni
i parametri vengono passati per valore
cosa vuol dire se io un variabile che si
chiama num e ha valore 10 e poi cio' una
funzione function chiamo prima che
accetta un parametro e poi modifica il
valore di questo parametro come in
questo caso meno 5 e poi mi visualizza
il suo valore console log x se
adesso vado a invocare la mia funzione
passandogli come valore e la mia
variabile num
e poi vado a visualizzare il valore di
numero come vedete anche se io ho
invocato la mia funzione passando il
valore della mia variabile num
il valore e poi all'interno della
funzione è stato modificato ma il valore
della mia variabile e' ancora intatto
quindi ho solo passato il valore come è
come se avessi scritto 10 qui e
basta e il valore della variabile non è
stato modificato
questo vuol dire passare i
parametri per valore vi ho già parlato
che con l'ecma script sei sono stati
introdotti è stato introdotto il valore
di default per il parametro quindi se io
ho una funzione function seconda posso
dare un valore di default al parametro
come in questo caso quindi se poi io
vado a codice
quindi se poi quando io vado a invocare
la mia funzione
posso passare il valore posso passare
l'argomento magari 50 ma possono anche
non farlo perché in quel caso nel
momento io invoco la funzione
senza passare l'argomento 10 viene
assegnato
di default e il contrario del
valore di default è l'operatore rest e
che anche l'operatore rest è stato
introdotto con l'ecma script 6 che
viene usato quando io non so con quanti
argomenti invocherò la funzione magari
io so che ogni volta che andrò a
invocare la funzione di sicuro userò un
argomento quindi possono mettere hicks
però magari può essere che io invoco la
funzione con cinque argomenti con 10
argomenti a seconda dei casi
in questo caso io uso l'operatore rest e
che è rappresentato da tre puntini e
poi un nome che può essere y
i tre punti li sono la rappresentazione
grafica dell'operatore reste ma se vi
ricordate sono la rappresentazione
grafica anche dell'operatore spread
operatore per spread operatore rest
sono due cose diverse
l'operatore rest e viene usato solo
dentro alle parentesi tonde di una
funzione quindi non possono essere
scambiati quindi sì come vi dicevo
l'operatore reste mi
va a raggruppare tutti gli argomenti in
eccesso e me li compatta dentro a un'array
quindi io giusto per sicurezza vado a
vedere se effettivamente la mia y è un
array in questo caso se vi ricordate y
ecco qui quindi se adesso io vado a
invocare la mia funzione e ci passò il
il mio primo argomento sarà
la x quindi magari 10 e poi ci vado a
passare magari un 20 30 è un 40 come
vedete mi dice che y è un'array e posso
anche andare a vedere i valori di y console log anzi vi faccio vedere i valori
di x e anche il valore di y eccolo
qua il valore di x e quindi e 10 i
valori di y
tutti gli argomenti in eccesso
quindi se io per caso vado a invocare la
stessa funzione e ci aggiungo anche
altri argomenti
ecco qua come vedete tutti gli argomenti
in eccesso mi vengono rappresentati
dalla ypsilon è solo un piccolo appunto
e l'operatore rest deve essere l'ultimo
parametro che viene inserito quindi se
io qui sono sicuro di invocare la
funzione anche con altri parametri per
esempio magari v e z e poi posso
inserire anche altri argomenti ma non
sono sicuro che vengono sempre usati
come vedete io
w e z sono argomenti che sono sicuro che
verranno inseriti quando invoco la
funzione e poi come ultimo parametro c'è
l'operatore rest che mi compatta
eventuali argomenti in eccesso callback
le call back si sentono sempre nominare
e sono funzioni passate come parametri
la callback che normalmente viene
usata quando si ha a che fare con codice
che lavora in maniera asincrona cosa
vuol dire che vuol dire per esempio sto
lavorando con dei dati che mi vengono
inviati dal server
io posso creare una funzione che si
connette al server richiede questi
determinati dati poi javascript come un
programma del linguaggio di
programmazione che lavora in maniera
asincrona finché aspetta a questi dati a
ritorno dal server perché l'operazione
non è immediata può eseguire altre
operazioni quando questi dati dal server
sono pronti e arrivano javascript
comincia a maneggiarli questo vuol dire
che sta lavorando in maniera asincrona
quindi invia una richiesta di
determinati dati al server esegue altre
operazioni nel frattempo quando questi
dati arrivano dal server comincia a
maneggiare questi dati questo vuol dire
lavorare in maniera asincrona e per fare
questo normalmente si usano delle call
back o meglio io uso una funzione per
fare una richiesta al server quando il
server mi rimanda indietro i dati che ho
richiesto con una call back vado a
maneggiare questi dati fino all'ecma
script cinque le call back erano usate
molto appunto per lavorare come in
maniera asincrona col server e roba del
genere adesso che con l'ecma script 6
sono stato introdotto le promesi e le
call back per questo tipo di uso sono
vengono usate meno ma comunque sono
usate per altre altri scopi
vi faccio vedere un esempio di callback
allora intanto vi faccio vedere cosa
vuol dire di usare una call back o
meglio invocare una funzione o
invocare il suo codice allora io ho una
funzione la chiamo function test e al
suo interno facciamo che anzi facciamo
anche che accetta un parametro x e
poi ritorna x moltiplicato x
ecco allora se io se vado a invocare la
mia funzione test vi ricordo che per
invocare la funzione si mette in nome
della funzione parentesi tonde in questa
maniera io sto invocando la funzione
posso anche passarci un argomento e
quindi io qui avrò cento se io vado a
visualizzare il codice della funzione
test scrivo il nome della funzione senza
le parentesi tonde e come vedete io sto
andando a visualizzare praticamente
tutta la mia il testo della mia funzione
eccolo qui quando io passo una funzione
come parametro la passo senza le
parentesi tonde quindi io non la
invoco io sto passando il testo il
codice della mia funzione come parametro
andiamo a vedere allora io ho una funzione
principale che accetta diciamo due
parametri allora c'è il parametro x
e poi c'è la call back back e poi
facciamo che console log
valore di x e qui ci metto x e
poi ciò console log callback come vedete
al mio interni interno adesso io invoco
la call back e ci passo come argomento
magari 50
allora cosa sto facendo qui io sto
creando una funzione che accetta due
parametri il primo parametro è un
parametro qualsiasi e secondo parametro
una call back e adesso io qui la chiamo
callback è giusto per farvi capire che
se abbiamo a che fare con il back ci si
può dare qualsiasi nome poi all'interno
della mia funzione principale vado a
visualizzare il valore del parametro
x e poi vado a visualizzare il
valore processato dalla funzione
callback quindi io qui vado a invocare
la mia callback e siccome andrà a usare
questa questa funzione qui come call
back che aspetta un argomento ci
inseriscono anche un argomento
adesso io vado a invocare la mia
funzione principale e come
come primo argomento ci passò in cinque
e come secondo argomento ci passò la mia
funzione test
come vedete io qui scrivo il nome della
mia callback della mia funzione ma non
la invoco perché non sto usando le
parentesi tonde
infatti qui non si aspetta parentesi tonde
all'interno della mia funzione quando
andrò a usare la call back l'andro' a
usare invocandola quindi con le
parentesi tonde se adesso vediamo suo
output
ecco qua valore di x = 5 e il valore
ritornato dalla mia callback 1500
con questo è tutto ci sentiamo la
prossima ciao
File del video: