Operator rest v JavaScript

To lekcijo začnimo z nekaj pojasnili. Vse prejšnje lekcije tega razdelka vam nismo povedal vse resnice o operatorju ...

Pravzaprav se lahko ta operator glede na mesto v kodu imenuje bodisi operator spread, bodisi operator rest.

Kot že veste, ko operator spread stoji pred matriko ali nizom, jih razdeli na posamezne vrednosti. Operator rest, čeprav ima enako sintakso v obliki ..., je namenjen nečemu drugemu.

Zdaj bomo ugotavljali, čemu. Naj imamo funkcijo, ki sprejme dva parametra:

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

Že morate vedeti, da če funkciji podamo odvečne parametre, to ne povzroči napake:

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

Operator rest omogoča, da dobimo vse odvečne parametre v obliki matrike. Za to se funkciji doda še en parameter (obvezno zadnji), pred katerim napišemo 3 pike:

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

Te tri pike so operator rest, ime spremenljivke je lahko poljubno, vendar ga običajno tudi imenujemo rest.

Pokličimo našo funkcijo s prekomernim številom parametrov in poglejmo, kaj pride v parametra a in b, in kaj - v ostanek rest:

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

function func(a, b, ...rest) {
  console.log(a);    // izpiše 1
  console.log(b);    // izpiše 2
  console.log(rest); // izpiše [3, 4, 5]
}

Če odvečnih parametrov ne bo, se bo v spremenljivko rest zapisala prazna matrika:

javascriptfunc(1, 2);

function func(a, b, ...rest) {
  console.log(a);    // izpiše 1
  console.log(b);    // izpiše 2
  console.log(rest); // izpiše []
}

Funkcija lahko sploh nima parametrov, vendar ji lahko dodamo rest. V tem primeru lahko funkcijo pokličemo s poljubnim številom parametrov in vsi bojo prišli v matriko rest:

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