Rest operateur in JavaScript

Ons sal hierdie les begin met 'n sekere verduideliking. Al die vorige lesse in hierdie afdeling het ek nie die hele waarheid oor die ... operateur aan julle gesê nie.

Eintlik kan hierdie operateur, afhangende van die plek in die kode, óf die spread operateur, óf die rest operateur genoem word.

Soos jy reeds weet, wanneer die spread operateur voor 'n array of string staan, verdeel dit dit in afsonderlike waardes. Die rest operateur, alhoewel dit dieselfde sintaksis het in die vorm van ..., is vir iets anders bedoel.

Kom ons kyk nou waarvoor. Laat ons aanneem ons het 'n funksie wat twee parameters aanvaar:

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

Jy moet reeds weet dat as ekstra parameters aan die funksie oorgedra word, sal dit nie tot 'n fout lei nie:

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

Die rest operateur laat toe om al die oortollige parameters as 'n array te verkry. Vir hierdie word nog 'n parameter by die funksie gevoeg (verpligtend laaste), waarvoor 3 kolle geskryf word:

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

Hierdie drie kolle is presies die rest operateur, en die naam van die veranderlike kan enige naam hê, maar word gewoonlik ook rest genoem.

Kom ons roep ons funksie met 'n oortollige aantal parameters en kyk wat beland in die parameters a en b, en wat - in die res rest:

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

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

As daar geen ekstra parameters is nie, sal 'n leë array in die veranderlike rest geskryf word:

javascriptfunc(1, 2);

function func(a, b, ...rest) {
  console.log(a);    // sal 1 wys
  console.log(b);    // sal 2 wys
  console.log(rest); // sal [] wys
}

Die funksie kan glad geen parameters hê nie, maar tog kan rest daaraan toegevoeg word. In hierdie geval kan die funksie geroep word met enige aantal parameters en almal sal in die array rest beland:

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