Rest operators JavaScript
Šo nodarbību sāksim ar nelielu paskaidrojumu.
Visās iepriekšējās šīs sadaļas nodarbībās es
jums neizteicu visu patiesību par operatoru ...
Patiesībā šis operators atkarībā no vietas kodā var tikt saukts vai nu par spread operatoru, vai nu par rest operatoru.
Kā jūs jau zināt, kad spread operators
atrodas pirms masīva vai virknes, tas sadala
tos atsevišķās vērtībās. Rest operators,
lai arī tam ir tāda pati sintakse formā ...,
ir paredzēts citam mērķim.
Tagad sapratīsim, kādam. Pieņemsim, ka mums ir funkcija, kas pieņem divus parametrus:
function func(a, b) {
console.log(a);
console.log(b);
}
Jums jau vajadzētu zināt, ka, ja funkcijai nodod liekos parametrus, tas neizraisīs kļūdu:
func(1, 2, 3, 4, 5);
Rest operators ļauj iegūt visus
likos parametrus masīva veidā. Lai to izdarītu,
funkcijai tiek pievienots vēl viens parametrs (obligāti
pēdējais), pirms kura raksta 3 punkti:
function func(a, b, ...rest) {
}
Šie trīs punkti ir rest operators, un mainīgā
nosaukums var būt jebkurš, bet
parasti ir ierasts to nosaukt arī par rest.
Izsauksim mūsu funkciju ar lieko
parametru skaitu un redzēsim, kas nonāk
parametros a un b, un kas -
atlikumā rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // izvadīs 1
console.log(b); // izvadīs 2
console.log(rest); // izvadīs [3, 4, 5]
}
Ja lieku parametru nebūs, tad mainīgajā
rest ierakstīsies tukšs masīvs:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // izvadīs 1
console.log(b); // izvadīs 2
console.log(rest); // izvadīs []
}
Funkcijā vispār var nebūt parametru,
bet tajā pašā laikā var pievienot rest.
Šajā gadījumā funkciju varēs izsaukt
ar jebkuru parametru skaitu, un tie visi
nonāks masīvā rest:
function func(...rest) {
console.log(rest);
}