Operatore rest in JavaScript
Iniziamo questa lezione con una piccola spiegazione.
In tutte le lezioni precedenti di questa sezione, io non
vi ho detto tutta la verità sull'operatore ...
In realtà, questo operatore, a seconda del luogo nel codice, può essere chiamato operatore spread oppure operatore rest.
Come già sapete, quando l'operatore spread
si trova davanti a un array o a una stringa, li suddivide
in valori separati. L'operatore rest,
sebbene abbia la stessa sintassi ...,
è destinato a un altro scopo.
Ora scopriamo a cosa serve. Supponiamo di avere una funzione che accetta due parametri:
function func(a, b) {
console.log(a);
console.log(b);
}
Dovreste già sapere che se alla funzione vengono passati parametri in eccesso, questo non causerà un errore:
func(1, 2, 3, 4, 5);
L'operatore rest permette di ottenere tutti
i parametri in eccesso sotto forma di array. Per fare questo,
alla funzione viene aggiunto un altro parametro (obbligatoriamente
come ultimo), prima del quale si scrivono 3 punti:
function func(a, b, ...rest) {
}
Questi tre punti sono l'operatore rest, e il nome
della variabile può essere qualsiasi, ma
di solito per convenzione si chiama anch'esso rest.
Chiamiamo la nostra funzione con un numero eccessivo
di parametri e vediamo cosa finisce
nei parametri a e b, e cosa -
nel resto rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // visualizzerà 1
console.log(b); // visualizzerà 2
console.log(rest); // visualizzerà [3, 4, 5]
}
Se non ci sono parametri in eccesso, nella variabile
rest verrà memorizzato un array vuoto:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // visualizzerà 1
console.log(b); // visualizzerà 2
console.log(rest); // visualizzerà []
}
La funzione potrebbe anche non avere parametri,
ma è comunque possibile aggiungere rest.
In questo caso, la funzione potrà essere chiamata
con qualsiasi numero di parametri e tutti
finiranno nell'array rest:
function func(...rest) {
console.log(rest);
}