Operator rest w JavaScript
Niniejszą lekcję zaczniemy od pewnego wyjaśnienia.
We wszystkich poprzednich lekcjach tego działu nie
powiedziałem wam całej prawdy o operatorze ...
W rzeczywistości ten operator, w zależności od miejsca w kodzie, może być nazywany albo operatorem spread, albo operatorem rest.
Jak już wiecie, gdy operator spread
stoi przed tablicą lub ciągiem znaków, dzieli je
na pojedyncze wartości. Operator rest,
chociaż ma taką samą składnię w postaci ...,
jest przeznaczony do czegoś innego.
Teraz się przekonamy, do czego. Niech będzie nam dana funkcja przyjmująca dwa parametry:
function func(a, b) {
console.log(a);
console.log(b);
}
Powinniście już wiedzieć, że jeśli do funkcji przekażemy zbędne parametry, nie doprowadzi to do błędu:
func(1, 2, 3, 4, 5);
Operator rest pozwala uzyskać wszystkie
zbędne parametry w postaci tablicy. W tym celu
do funkcji dodaje się jeszcze jeden parametr (koniecznie
jako ostatni), przed którym stawia się 3 kropki:
function func(a, b, ...rest) {
}
Te trzy kropki to właśnie operator rest, a nazwa
zmiennej może być dowolna, ale
zwykle przyjęło się również nazywać go rest.
Wywołajmy naszą funkcję z nadmiarową
liczbą parametrów i zobaczmy, co trafia
do parametrów a i b, a co -
do reszty rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // wypisze 1
console.log(b); // wypisze 2
console.log(rest); // wypisze [3, 4, 5]
}
Jeśli nie będzie zbędnych parametrów, to do zmiennej
rest zapisze się pusta tablica:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // wypisze 1
console.log(b); // wypisze 2
console.log(rest); // wypisze []
}
Funkcja w ogóle może nie mieć parametrów,
ale mimo to można do niej dodać rest.
W tym przypadku funkcję będzie można wywołać
z dowolną liczbą parametrów i wszystkie one
będą trafiać do tablicy rest:
function func(...rest) {
console.log(rest);
}