Operátor rest v JavaScriptu
Tuto lekci začneme jistým vysvětlením.
Ve všech předchozích lekcích této sekce jsem
vám neřekl celou pravdu o operátoru ...
Ve skutečnosti se tento operátor v závislosti na místě v kódu může nazývat buď operátor spread, nebo operátor rest.
Jak již víte, když operátor spread
stoji před polem nebo řetězcem, rozděluje
je na jednotlivé hodnoty. Operátor rest,
ačkoli má stejnou syntaxi ve tvaru ...,
je určen pro něco jiného.
Nyní si rozebereme, k čemu. Nechť máme funkci přijímající dva parametry:
function func(a, b) {
console.log(a);
console.log(b);
}
Již byste měli vědět, že pokud do funkce předáte nadbytečné parametry, nepovede to k chybě:
func(1, 2, 3, 4, 5);
Operátor rest umožňuje získat všechny
nadbytečné parametry ve formě pole. K tomu
se do funkce přidá ještě jeden parametr (povinně
jako poslední), před kterým se píší 3 tečky:
function func(a, b, ...rest) {
}
Tyto tři tečky jsou operátor rest, a název
proměnné může být libovolný, ale
obvykle je také zvykem jej nazývat rest.
Zavolejme naši funkci s nadbytečným
množstvím parametrů a podívejme se, co se dostane
do parametrů a a b, a co -
do zbytku 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]
}
Pokud nadbytečné parametry nebudou, pak do proměnné
rest se zapíše prázdné 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 []
}
Funkce obecně nemusí mít žádné parametry,
ale přesto do ní lze přidat rest.
V tomto případě lze funkci volat
s libovolným množstvím parametrů a všechny
se dostanou do pole rest:
function func(...rest) {
console.log(rest);
}