Sta ovaj kod zapravo radi ?

1

Sta ovaj kod zapravo radi ?

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 23

Zdravo svima. Krenuo sam da ucim Javascript na codecademy i ovde sam zablokirao, tj na delu "funkcije u funkcijama". Ako moze pomoc da mi pomognete sta radi ovaj kod:

let orderCount = 0; const takeOrder = (topping, crustType) => {   orderCount++;   console.log('Order: ' + crustType + ' pizza topped with ' + topping); }; takeOrder('mushroom', 'thin crust'); takeOrder('spinach', 'whole wheat'); takeOrder('pepperoni', 'brooklyn style'); const getSubTotal = (itemCount) => {   return itemCount * 7.5; }; const getTax = () => {  return getSubTotal(orderCount) * 0.06; }; const getTotal = () => {   return getSubTotal(orderCount) + getTax(); }; console.log(getSubTotal(orderCount)); console.log(getTotal());



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14811
  • Gde živiš: Niš

Izračunava cenu poručenih pica sa i bez PDV-a.

No, šta ti konkretno nije jasno?



offline
  • Pridružio: 16 Jan 2010
  • Poruke: 23

Za pocetak me buni kakvu funkciju ima inkrementiranje u ovom kodu:
let orderCount = 0;   const takeOrder = (topping, crustType) => {   orderCount++;   console.log('Order: ' + crustType + ' pizza topped with ' + topping); };   takeOrder('mushroom', 'thin crust'); takeOrder('spinach', 'whole wheat'); takeOrder('pepperoni', 'brooklyn style');

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14811
  • Gde živiš: Niš

Kakvu funkciju ima bilo gde drugde? Inkrementira se vrednost promenljive orderCount i to je to. E pazi sad, tok je sledeći:
- Definisao si i inicijalizovao promenljivu orderCount na vrednost 0.
- Definisao si metodu takeOrder koja ima dva parametra i koja u svom telu vrši inkrementiranje promenljive orderCount. Obrati pažnju da je to samo definicija metode. Ono što je definisano tom metodom će se izvršiti tek kada se ona pozove.
- Pozivaš tri puta definisanu metodu.

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 23

Pokusavam ja sa Chrome debugger-om da vidim o cemu se radi pre nego sto bilo sta pitam. Posle izvrsenog code-a vidim da je varijabla orderCount = 3, ali za ovim 15ak dana koliko ucim javascript nikad nisam video inkrementiranje u svrhu gore navedenog koda ili njemu slicnog ... Ako sam na kraju lepo razumeo dolazi se do toga da couter broji koliko puta je izvrsena funkcija takeOrder da bismo dobili koliko je pizza naruceno.

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14811
  • Gde živiš: Niš

Pa da, u ovom izolovanom slučaju to mu dođe to.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Sa let kreiraš promenljivu koja je vidljiva u opsegu bloka u kom je definisana. Primer sa var i let:

function testVar() {     var t = 10; // definišemo promenljivu t sa vrednošću 10     if (true) {         var t = 20;  // ista promenljiva (t), ali sada sa vrednošću 20         console.log(t);  // ispisuje 20     }     console.log(t); // takođe ispisuje 20 } function testLet() {     let t = 10; // definišemo promenljivu t sa vrednošću 10     if (true) {         let t = 20; // u novom smo bloku ({}), tako da se sada definiše nova promenljiva t koja će biti aktivna u opsegu trenutnog bloka         console.log(t); // ispisuje 20     }     console.log(t); // izašli smo iz prethodnog bloka; u trenutnom bloku, promenljiva t ima vrednost 10 pa će biti ispisano 10 }
const se koristi za konstante tj. vrednosti koje ne možeš menjati već samo iščitavati. Ovo:
takeOrder je funkcija sa dva parametra; topping i crustType.

const takeOrder = (topping, crustType) => {   orderCount++;   console.log('Order: ' + crustType + ' pizza topped with ' + topping); };
Bi bilo ovo u ES5:

var takeOrder = function(topping, crustType) {   orderCount++;   console.log('Order: ' + crustType + ' pizza topped with ' + topping); };
To pisanje sa strelicom je omogućeno zahvaljujući arrow functions opciji u ES6.

Ako su zagrade prazne znači da se ne prosleđuje nikakav parametar.

To je što se tiče sintaksnog dela Smile

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 23

Momci - HVALA Vam puno. Imam jos samo jedno pitanje. Zasto smo funkciji getSubTotal prosledili parametar itemCount , a kasnije tu istu funkciju pozvali sa parametrom orderCount ?
Probao sam i da stavim parametar orderCount u funkciju getSubTotal i opet radi posao Smile

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14811
  • Gde živiš: Niš

To gde ti misliš da je prosleđen parametar itemCount, to samo govori da još uvek nisi shvatio u čemu je reč tu. Sledeći isečak koda predstavlja definiciju funkcije getSubTotal:
const getSubTotal = (itemCount) => {   return itemCount * 7.5; };
Ova funkcija je definisana tako da sadrži jedan fiktivni parametar itemCount, i on (najprostije govoreći) praktično predstavlja placeholder za neki realan parametar koji će biti prosleđen prilikom poziva funkcije. U tvom slučaju taj realan parametar koji se prosleđuje prilikom poziva funkcije je upravo orderCount parametar.

Dakle, moraš da shvatiš razliku između definicije i poziva funkcije.

offline
  • Pridružio: 16 Jan 2010
  • Poruke: 23

Ukapirao. Thx

Ko je trenutno na forumu
 

Ukupno su 854 korisnika na forumu :: 35 registrovanih, 5 sakrivenih i 814 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Battlehammer, bojank, Boris90, DonRumataEstorski, DPera, dragoljub11987, esx66, ivan1973, jackreacher011011, Jahorina, JOntra, laurusri, Leonov, Lucije Kvint, MB120mm, mercedesamg, mikrimaus, milutin134, mrav pesadinac, nebojsag, Nemanja.M, nemkea71, nesa1962, nikoladim, nuke92, ozzy, pein, rajkoplje, Romibrat, vathra, vlajkox, voja64, wizzardone, zbazin