Operatori rest në JavaScript
Këtë mësim do ta fillojmë me një sqarim.
Të gjitha mësimet e mëparshme të këtij seksioni unë nuk
ju thashë të gjithë të vërtetën për operatorin ...
Në fakt ky operator në varësi të vendit në kod mund të quhet ose operator spread, ose operator rest.
Siç e dini tashmë, kur operatori spread
qëndron përpara një array ose stringu, ai i ndan
ato në vlera të veçanta. Operatori rest,
edhe pë ka të njëjtin sintaksë në formën ...,
është i destinuar për diçka tjetër.
Tani do të zbulojmë për çfarë. Le të themi që kemi një funksion që pranon dy parametra:
function func(a, b) {
console.log(a);
console.log(b);
}
Duhet të dini tashmë se nëse funksionit i transmetohen parametra të tepërt, kjo nuk do të shkaktojë gabim:
func(1, 2, 3, 4, 5);
Operatori rest lejon që të gjithë
parametrat e tepërt të merren në formë të një array.
Për këtë, në funksion shtohet një parametër tjetër (domosdoshmërisht
i fundit), para të cilit shkruhen 3 pika:
function func(a, b, ...rest) {
}
Këto tri pika janë pikërisht operatori rest, dhe emri
i ndryshores mund të ketë çfarëdo emërtimi, por
zakonisht është e pranuar ta quajmë rest.
Le ta thërrasim funksionin tonë me një sasi të tepërt
parametrash dhe të shohim se çfarë përmban
në parametrat a dhe b, dhe çfarë -
në pjesën e mbetur rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // do të shfaqë 1
console.log(b); // do të shfaqë 2
console.log(rest); // do të shfaqë [3, 4, 5]
}
Nëse nuk ka parametra të tepërt, atëherë në variablin
rest do të regjistrohet një array bosh:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // do të shfaqë 1
console.log(b); // do të shfaqë 2
console.log(rest); // do të shfaqë []
}
Funksioni mund të mos ketë fare parametra,
por në të mund të shtohet rest.
Në këtë rast funksioni mund të thirret
me çfarëdo sasie parametrash dhe të gjithë ata
do të përmbahen në array-in rest:
function func(...rest) {
console.log(rest);
}