JavaScript-daky rest operator

Bu sapaga birnäçe düşündiriş bilen başlarys. Bu bölümiň ähli öňki sapaklarynda men size ... operator hakynda ähli hakykaty aýtmadym.

Aslynda bu operator kodyň nirede durşuna baglylykda ýa-da spread operator, ýa-da rest operator diýip atlandyrylýar.

Size belli bolşy ýaly, spread operator massiw ýa-da setir öňünde duranda, ony ayratyn bahalara bölýär. Rest operator, görnüşi ... şekilde bolsa-da, başga maksat üçin ulanylýar.

Indi nähili işleýändigini göreli. Bizde iki parametr kabul edýän funksiýa bar bolsun:

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

Funksiýa artykmaç parametrler geçse, ýalňyşlyk döretmejekdigini bilmelisiňiz:

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

rest operator ähli artykmaç parametrleri massiw görnüşinde almagy hödürleýär. Bunuň üçin funksiýa ýene bir parametr (ähmiýetli, iň soňky) goşulýar, onuň öňüne 3 nokat goýulýar:

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

Bu üç nokat rest operator we onuň ady islendik bolup biler, ýöne adetçe ona rest diýilýär.

Geliň, funksiýamyzy artykmaç parametrler bilen çagyryp, a we b parametrlerine näme, rest galyndysyna näme düşýändigine göz aýlanyş:

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

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

Eger artykmaç parametr bolmasa, onda rest üýtgeýjisine boş massiw ýazylyşar:

javascriptfunc(1, 2);

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

Funksiýada parametrler bolmaýan bolup bilýär, ýöne şonda-da rest goşup bolýar. Bu ýagdaýda funksiýa islendik mukdarda parametr bilen çagyrylyp bilner we olaryň hemmesi rest massiwine düşer:

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