Spread operator

Sa novim ES2015 standardom je došao novi operator “…” koji može da razdvoji niz u listu i obrnuto da grupiše listu u niz. U zavisnosti koju funkciju obavlja ovaj parametar ima naziv “spread” ili “rest”. Ukoliko se operator nalazi ispred iteratibilnog objekta i “širi” iterator (npr.niz) u pojedinačne vrednosti praveći listu, onda se naziva “spread”.

Transformacija niza u listu argumenata

Ovaj operator je zamena za često korišćen problem kada je potrebno niz prebaciti u listu argumenata. A najbolji primer je “širenje” niza u listu argumenata funkcije. Ovaj operator se koristi pri pozivanju funkcije:

Deklaracije niza koji sadrži drugi niz

Koristi se u okviru deklaracije niza koji sadrži drugi niz:

Kloniranje objekta

Sa novim standardom je dozvoljeno korišećenje spread operatora u okviru object literala. Ova pogodnost nam omogućava da korišćenjem spread operatora jednostavno kloniramo objekte, bez korišćenja metode Object.assign():

Spajanje dva objekta

Korišećenjem spread operatora je olakšano spajanje dva objekta bez dupliranja svojstava:

Rest operator

Neograničeni broj argumenata kao niz

Rest sintaksa nam dozvoljava da predstavimo neograničeni broj argumenata kao niz. Ovaj operator se koristi pri definisanju funkcije tako što grupiše preostale argumente u niz:

Sakupljen niz može po potrebi da se destruktuira na pojedinačne vrednosti.

Transformacija liste u niz

Ovaj operator zamenjuje prekomplikovano rešenje koje se koristilo za prebacivanje liste u niz :

Novi način sa rest operatorom:

BONUS: Asocijativnost spread/rest operatora

Svaki JavaScript operator ima svoju “važnost” koja je direktno povezana za asocijativnost i način na koji se odredjuje koja operacija ima prednost u odsustvu zagrada. Sread/Rest operator spada u “slabije” operatore (tj. jedino je slabiji , “zarez” operator). Tabelu značaja operatora pogledajte u članku “JavaScript opertator”.

Primer

U JavaScript svetu možemo da naletimo na sledeći izraz:

Bitan deo celog ovog izraza je ustvari ovaj teško razumljivo deo:

es6

Da bi se razumeo izraz potrebno je da znamo koji operator ima veći značaj tj. prednost pri izvršavanju izraza. Sledeća lista prikazuje operatore iz ovog izraza prema “značaju”:

  1. !! (operator negacije)
  2. … ? … : … (ternarni operator)
  3. … (spread operator)

Predhodna lista nam odredjuje tok izvrašavanja izraza: prvo se sa duplom negacijom “data” promenjiva konvertuje u logičku vrednost (više o ovome pročitajte u članku “JS snippets (tips & tricks)”). Ukoliko dobijemo TRUE logičku vrednost onda na scenu stupa ternarni operator koji uzima “data” objekat nakon čega ga “raširi” sa spread operatorom, za FALSE vrednost trenarrni operator vraća objekt literal i nje ga raširi sa spread operatorom.

Podelite:

Ostavite komentar