Poslao: 11 Nov 2017 17:11
|
offline
- minickg
- Novi MyCity građanin
- 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.
|
|
Poslao: 11 Nov 2017 17:25
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Izračunava cenu poručenih pica sa i bez PDV-a.
No, šta ti konkretno nije jasno?
|
|
|
|
Poslao: 11 Nov 2017 17:56
|
offline
- minickg
- Novi MyCity građanin
- 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');
|
|
|
|
Poslao: 11 Nov 2017 18:11
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- 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.
|
|
|
|
Poslao: 11 Nov 2017 18:17
|
offline
- minickg
- Novi MyCity građanin
- 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.
|
|
|
|
|
Poslao: 11 Nov 2017 18:43
|
offline
- E.L.I.T.E.
- Legendarni građanin
- 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
|
|
|
|
Poslao: 11 Nov 2017 20:18
|
offline
- minickg
- Novi MyCity građanin
- 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
|
|
|
|
Poslao: 11 Nov 2017 21:11
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- 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.
|
|
|
|
|