Rest-operaattori JavaScriptissä
Aloitamme tämän oppitunnin selityksellä.
Kaikissa edellisissä tämän osion oppitunneissa en
kertonut teille koko totuutta operaattorista ...
Itse asiassa tämä operaattori voi riippuen paikasta koodissa olla joko spread-operaattori tai rest-operaattori.
Kuten jo tiedät, kun spread-operaattori
esiintyy taulukon tai merkkijonon edessä, se jakaa
ne erillisiksi arvoiksi. Rest-operaattorilla,
vaikka sillä on sama syntaksi ...,
on eri tarkoitus.
Selvitämme nyt, mihin. Oletetaan että meillä on funktio, joka ottaa vastaan kaksi parametria:
function func(a, b) {
console.log(a);
console.log(b);
}
Sinun pitäisi jo tietää, että jos funktiolle annetaan ylimääräisiä parametreja, se ei aiheuta virhettä:
func(1, 2, 3, 4, 5);
Rest-operaattori mahdollistaa kaikkien
ylimääräisten parametrien saamisen taulukkona. Tätä varten
funktioon lisätään vielä yksi parametri (välttämättä
viimeiseksi), jonka edessä kirjoitetaan 3 pistettä:
function func(a, b, ...rest) {
}
Nämä kolme pistettä ovat rest-operaattori, ja muuttujan
nimi voi olla mikä tahansa, mutta
yleensä on tapana kutsua sitä myös rest:ksi.
Kutsukaamme funktiotamme ylimääräisellä
määrällä parametreja ja katsotaan, mikä päätyy
parametreihin a ja b, ja mikä -
jäämään rest:iin:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // tulostaa 1
console.log(b); // tulostaa 2
console.log(rest); // tulostaa [3, 4, 5]
}
Jos ylimääräisiä parametreja ei ole, muuttujaan
rest tallennetaan tyhjä taulukko:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // tulostaa 1
console.log(b); // tulostaa 2
console.log(rest); // tulostaa []
}
Funktiossa ei välttämättä tarvitse olla lainkaan parametreja,
mutta siltiin siihen voidaan lisätä rest.
Tässä tapauksessa funktiota voidaan kutsua
millä tahansa määrällä parametreja ja ne kaikki
päätyvät taulukkoon rest:
function func(...rest) {
console.log(rest);
}