Operátor rest v JavaScripte
Túto lekciu začneme určitým vysvetlením.
Vo všetkých predchádzajúcich lekciách tejto časti som
vám nepovedal celú pravdu o operátori ...
V skutočnosti sa tento operátor v závislosti od miesta v kóde môže nazývať buď operátor spread, alebo operátor rest.
Ako už viete, keď operátor spread
stojí pred poľom alebo reťazcom, rozdeľuje
ich na jednotlivé hodnoty. Operátor rest,
hoci má rovnakú syntax vo forme ...,
je určený pre niečo iné.
Teraz si rozoberieme, na čo. Nech máme funkciu, ktorá prijíma dva parametre:
function func(a, b) {
console.log(a);
console.log(b);
}
Už by ste mali vedieť, že ak do funkcie prenesieme nadbytočné parametre, nepovedie to k chybe:
func(1, 2, 3, 4, 5);
Operátor rest umožňuje získať všetky
nadbytočné parametre vo forme poľa. Na to
sa do funkcie pridá ešte jeden parameter (povinne
ako posledný), pred ktorý sa píšu 3 bodky:
function func(a, b, ...rest) {
}
Tieto tri bodky sú operátor rest a názov
premennej môže mať ľubovoľný názov, ale
zvyčajne sa tiež nazýva rest.
Zavolajme našu funkciu s nadbytočným
množstvom parametrov a pozrime sa, čo sa dostane
do parametrov a a b, a čo -
do zvyšku rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // vypíše 1
console.log(b); // vypíše 2
console.log(rest); // vypíše [3, 4, 5]
}
Ak nebude žiadnych nadbytočných parametrov, tak do premennej
rest sa zapíše prázdne pole:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // vypíše 1
console.log(b); // vypíše 2
console.log(rest); // vypíše []
}
Funkcia môže vôbec nemáť parametre,
no pritom do nej môžeme pridať rest.
V tomto prípade bude možné funkciu volať
s ľubovoľným množstvom parametrov a všetky
sa dostanú do poľa rest:
function func(...rest) {
console.log(rest);
}