Operatorul rest în JavaScript
Această lecție o vom începe cu o oarecare explicație.
Toate lecțiile anterioare din această secțiune nu v-am
spus adevărul întreg despre operatorul ...
De fapt, acest operator, în funcție de locul în cod, poate fi numit fie operator spread, fie operator rest.
După cum știți deja, când operatorul spread
stă în fața unui array sau a unui șir de caractere, îi împarte
în valori individuale. Operatorul rest,
deși are aceeași sintaxă sub forma ...,
este destinat altcuiva.
Acum să aflăm, pentru ce. Să presupunem că avem o funcție care acceptă doi parametri:
function func(a, b) {
console.log(a);
console.log(b);
}
Ar trebui să știți deja că dacă funcției i se transmit parametri în exces, acest lucru nu va duce la o eroare:
func(1, 2, 3, 4, 5);
Operatorul rest permite obținerea tuturor
parametrilor în exces sub formă de array. Pentru aceasta
în funcție se adaugă încă un parametru (obligatoriu
pe ultimul loc), înaintea căruia se scriu 3 puncte:
function func(a, b, ...rest) {
}
Aceste trei puncte sunt operatorul rest, iar numele
variabilei poate avea orice denumire, dar
de obicei se acceptă să se numească rest.
Să apelăm funcția noastră cu un număr excesiv
de parametri și să vedem ce ajunge
în parametrii a și b, și ce -
în restul rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // va afișa 1
console.log(b); // va afișa 2
console.log(rest); // va afișa [3, 4, 5]
}
Dacă nu vor fi parametri în exces, atunci în variabila
rest se va scrie un array gol:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // va afișa 1
console.log(b); // va afișa 2
console.log(rest); // va afișa []
}
În funcție poate să nu existe deloc parametri,
dar totuși i se poate adăuga rest.
În acest caz, funcția poate fi apelată
cu orice număr de parametri și toți aceștia
vor intra în array-ul rest:
function func(...rest) {
console.log(rest);
}