Arrow funkcija

Sintaksa

Arrow funkcija ili tzv.“fat arrow” je nova sintaksa za pisanje JavaScript funkcija. Najbitnija karakteristika arrow funkcije je kraća sintaksa koja implicira bolju preglednost. U zavisnosti od broja parametra i tela funkcije sintaksa ima više različitih načina pisanja koda:.

arrow funkcija

a) Izgled sintakse kada telo funkcije ima više izraza

Kod ovog slučaja sintaksa arrow funkcije je najsličnija običnoj funkciji, a jedina razlika se dobija pri ukidanju ključne reči “function” a dodavanjem “fat arrow”. Ova sintaksa se koristi kada u telo funkcije ima više izraza:

b) Izgled sintakse kada telo funkcije ima jedan izraz

Ukoliko telo ima samo jedan izraz koji je vraćen sa “return” onda možemo da izbacimo i vitičaste zagrade i rezervisanu reč “return”:

Primer

c) Izgled sintakse kada se funkciji ne prosledjuju parametri

Ako se funkciji ne prosledjuju parametri onda moraju da postoje prazne zagrade () u delu rezervisanom za parametre funkcije

d) Izgled sintakse kada se fukciji prosledjuje samo jedan parametar

Ukoliko se funkciji prosedjuje samo jedan parametar onda možemo da izbacimo i zagrade oko parametara:

Primer

Prednost nove sintakse se još bolje vidi kada koristimo nove metode za iteraciju nada nizovima:

Primer

e) Izgled sintakse kada vraća “Object Literal”

Vraćanje objeknogt literala sa ES5 sintaksom izgleda ovako:

Prema dosadašnjim pravilima prethodni zadatak sa arrow funkcijom bi izgledao ovako:

Medjutim ovakava sintaksa nije dobra, a funkcija vraća undefined, jer parser vitičaste zagrade prepozanje kao telo funkcije a ne kao objekt literal. Stoga po njemu sintaksa sa dvotačkom u telu funkcije nije dobra. Da bi parser prepozanao da je u pitanju ES6 sintaksa potrebno je oko objektnog literala staviti obične zagrade:


Continue reading…

Pregled novih JS standarda: ES2015, ES2016…

Spisak novosti

eckma-script-standard

U ovome tekstu su izlistane sve novine koje su došle u sklopu novih JavaScript standarda, a obradjene su na sajltu webprogramiranje.org kroz različite članke:

Standard Novina Članak
ES2015 Novi način deklarisanja promenjivih sa ključnim rečima let & const “let & const”
ES2015 Jednostavno definisanje podrazumevanih vrednosti parametara funukcije “Podrazumevane vrednosti parametara funkcije”
ES2015 Sintaksna poboljšanja objektnog literala “Object literal” poboljšanja
ES2015 Klase “Klase u JavaScript-u”
ES2015 Nova petlja za iteraciju kroz iterable objekte: for…of “Petlje i iteracije u JavaScript-u”
ES2015 Nove metode za rad sa nizovima: Array.from() Array.prototype.find() i Array.prototype.findIndex() “Nove metode u radu sa nizovima”
ES2015 Nova sintaksa za import/export modula “Modularno programiranje sa ES6 standardom
ES2015 Promisi “Promise i asinhrono programiranje”
ES2015 Nova metoda konstruktorske funkcije: Object.assign() Svojstva i metode konstruktorske f-je Object()
ES2015 Nove karakteristike “string-a” “Nove karakteristike string-a”
ES2015 Arrow funkcija “Arrow funkcija”
ES2015 Novi tipovi podataka Map, Set & Symbol Novi tipovi podataka Map, Set & Symbol
ES2015 Spread & Rest operatori “Spread & Rest operatori”
ES2015 Destruktuiranje podataka “Destrukuiranje u JavaScript-u”
ES2015 Iteratori & Generatori Iteratori i Generatori
ES2016 Nova metoda za rad sa nizovima: Array.prototype.inludes() “Nove metode u radu sa nizovima”
ES2016 Eksponencijalni operator ** Eksponencijalni operator **
ES2017 Nove metode konstruktorske funkcije: Object.entries, Object.values i Object.getOwnPropertyDescriptors() Svojstva i metode konstruktorske f-je Object()
ES2017 Async/Await sintaksi “Async/Await” sintaksa za bolje “Promise”

Značenje operatora “this” u JavaScript-u

Uvod

js this

Programeri koriste jedan od ova dva mehanizma:

  • leksički opseg vidljivosti
  • “this mehanizam”

Mehanizam koji koristi rezervisanu reč “this” pruža elegantan način za implicitno “prosledjivanje” reference na odredjeni objekat, što dovodi do čistijeg dizajna i olakšava višekratnu upotrebu koda. Programeri koji izbegavaju da koriste this mehanizam, uglavnom to rade zbog ne razumevanja principa rada tog mehanizma.

“This” nije promenjiva već specijalana reč programskog jezika (operator) i predstavlja vezu koja ukazuje na neku referencu (objekat). Aktivira se tj. dobija značenje tek u trenutku kada se pozove (invoke) funkcija koja ga sadrži.

Ne zavisi od mesta gde je funkcija deklarisana, već isključivo od mesta i načina na koji je funkcija pozvana!

Pravila za odredjivanje značenja “this”

Ceo postupak odredjivanja značenja se zasniva na prepoznavanju “ko” i na koji način poziva funkciju koja sadrži “this”. Redosled radnji je sledeći:

  1. Prvo se proverava da li je konstruktorska funkcija pozvana sa operatorom new(). Ukoliko jeste pozvana na ovaj način onda je vrednost “this” objašnjena pod tačkom a) Pozivanje funkcije sa operatorom “new” ali ako nije pozvana na ovaj način onda se vrši…
  2. … kontrola da li je funkcija pozvana uz pomoć metoda call(), apply() (ili bind). Ukoliko jeste pozvana na ovaj način onda je vrednost “this” objašnjena pod tačkom b) Pozivanje sa call(), apply() ili bind(), ali ako nije pozvana na ovaj način onda se vrši …
  3. …kontrola da li je funkcija pozvana kao metoda objekta. Ukoliko jeste pozvana na ovje način onda je vrednost “this” objašnjena pod tačkom c) Pozivanje metode objekta, ali ako nije pozvana na ovaj način onda je…
  4. podrazumevano povezivanje, koje je objašnjeno pod tačkom d) Podrazumevano povezivanje

Ukoliko je nekim slučajem korišćeno više različitih pravila, primenjuje se prioritet prema redosledu iz prethodno opisanog postupka.

Continue reading…