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:

javascriptfunction 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ä:

javascriptfunc(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ä:

javascriptfunction 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:

javascriptfunc(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:

javascriptfunc(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:

javascriptfunction func(...rest) {
  console.log(rest);
}