A rest operátor JavaScriptben

Ezt a leckét egy magyarázattal kezdjük. A szakasz összes előző leckéjében nem mondtam el az egész igazságot a ... operátorról.

Valójában ez az operátor a kódban elfoglalt helyétől függően spread operátornak vagy rest operátornak nevezhető.

Amint már tudod, amikor a spread operátor egy tömb vagy sztring előtt áll, akkor azokat egyedi értékekre bontja szét. A rest operátor, bár ugyanaz a szintaxisa ... formájában, más célra szolgál.

Most megnézzük, mire. Tegyük fel, hogy van egy függvényünk, amely két paramétert fogad:

javascriptfunction func(a, b) {
  console.log(a);
  console.log(b);
}

Már tudnotok kell, hogy ha a függvénybe túl sok paramétert adunk át, az nem vezet hibához:

javascriptfunc(1, 2, 3, 4, 5);

A rest operátor lehetővé teszi az összes többlet paraméter megkapását tömb formájában. Ehhez a függvényhez hozzáadunk még egy paramétert (kötelezően az utolsóként), amely elé 3 pontot írunk:

javascriptfunction func(a, b, ...rest) {
  
}

Ez a három pont maga a rest operátor, és a változó neve bármi lehet, de általában szokás rest-nek is hívni.

Hívjuk meg a függvényünket túl sok paraméterrel, és nézzük meg, hogy mi kerül a a és b paraméterekbe, és mi - a rest maradékba:

javascriptfunc(1, 2, 3, 4, 5);

function func(a, b, ...rest) {
  console.log(a);    // kiírja 1-et
  console.log(b);    // kiírja 2-t
  console.log(rest); // kiírja [3, 4, 5]-öt
}

Ha nincsenek többlet paraméterek, akkor a rest változóba egy üres tömb kerül:

javascriptfunc(1, 2);

function func(a, b, ...rest) {
  console.log(a);    // kiírja 1-et
  console.log(b);    // kiírja 2-t
  console.log(rest); // kiírja []
}

A függvényben egyáltalán nem is kell paramétereknek lenni, de közben hozzáadhatunk rest-et. Ebben az esetben a függvény meghívható tetszőleges számú paraméterrel, és mindegyik a rest tömbbe kerül:

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