Rest operatorius JavaScript'e
Šią pamoką pradėsime nuo šiek tiek paaiškinimo.
Visose ankstesnėse šio skyriaus pamokose aš
neatskleidžiau jums visos tiesos apie operatorių ...
Tiesą sakant, šis operatorius, priklausomai nuo vieta kode, gali būti vadinamas arba spread operatoriumi, arba rest operatoriumi.
Kaip jau žinote, kai spread operatorius
yra prieš masyvą arba eilutę, jis išskiria
juos į atskiras reikšmes. Rest operatorius,
nors ir turi tą patį sintaksę ...,
yra skirtas kitam tikslui.
Dabar išsiaiškinsime, kam. Tarkime, kad turime funkciją, kuri priima du parametrus:
function func(a, b) {
console.log(a);
console.log(b);
}
Jūs jau turėtumėte žinoti, kad jei funkcijai perduosite pernelyg daug parametrų, tai nesukels klaidos:
func(1, 2, 3, 4, 5);
Rest operatorius leidžia gauti visus
perteklinius parametrus masyvo pavidalu. Tam
į funkciją pridedamas dar vienas parametras (būtinai
paskutinis), prieš kurį rašomi 3 taškai:
function func(a, b, ...rest) {
}
Šie trys taškai ir yra rest operatorius, o kintamojo
pavadinimas gali būti bet koks, bet
dažniausiai priimta jį taip pat vadinti rest.
Iškvieskime mūsų funkciją su pertekline
parametrų skaičiumi ir pažiūrėkime, kas pateka
į parametrus a ir b, o kas -
į likutį rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // išvestų 1
console.log(b); // išvestų 2
console.log(rest); // išvestų [3, 4, 5]
}
Jei perteklių parametrų nebus, tai į kintamąjį
rest įrašys tuščias masyvas:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // išvestų 1
console.log(b); // išvestų 2
console.log(rest); // išvestų []
}
Funkcijoje apskritai gali nebūti parametrų,
bet tuo pat metu į ją galima pridėti rest.
Tokiu atveju funkciją galima bus iškviesti
su bet kokiu parametrų skaičiumi ir visi jie
pateks į masyvą rest:
function func(...rest) {
console.log(rest);
}