IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
valgard
Člen
Avatar
valgard:28.11.2012 9:43

Niesom is istý, že som pochopil anonymné funkcie a s tým súvisiace predávanie funkcie ako parametru.

Vo funkcii "zavolej_funkci(fun­kce, jmeno)" nechápem ten prvý parameter. Čo to je konkrétne za funkciu ? Nejaká všeobecná, ktorá sa používá pre anonymné funkcie ? Potom ju v tele funkcie volám, ale vlastne neviem čo volám ...

 
Odpovědět
28.11.2012 9:43
Avatar
Kit
Tvůrce
Avatar
Kit:28.11.2012 10:58

Anonymní funkce se používají zejména tam, kde funkci použijeme pouze 1× a chceme, aby byla součástí výrazu.

Funkce jako parametr jiné funkce se používá právě proto, aby volaná funkce netušila, jakou funkci bude volat. Je to variace na téma DI.

Anonymní funkce je vlastně zjednodušený objekt. Pomocí anonymních funkcí se dělají i tzv. uzávěry, které jsou velmi praktické.

Nahoru Odpovědět
28.11.2012 10:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
valgard
Člen
Avatar
valgard:28.11.2012 12:14

Aha, ak som to správne pochopil, tak ak chcem použiť nejakú funkciu ako parameter inej funckie, tak si vytvorím nejakú "pomocnú" funkciu, ktorej parameter bude "všeobecná" funkcia a tú v tele tejto "pomocnej" funkcie zavolám.

Takže potom by som mohol mať (tak ako to píše sdraco ďalej):
promenna_s_funkci1
promenna_s_funkci2
promenna_s_funkci3
...

Každá z nich by mala iné telo (blok príkazov) a volanie by potom mohlo byť:
zavolej_funkci(pro­menna_s_funkci1, ...)
zavolej_funkci(pro­menna_s_funkci2, ...)
zavolej_funkci(pro­menna_s_funkci3, ...)
...

Pochopil som to správně ?

 
Nahoru Odpovědět
28.11.2012 12:14
Avatar
Kit
Tvůrce
Avatar
Odpovídá na valgard
Kit:28.11.2012 12:41

Zhruba jsi to pochopil. Funkce zavolej_funkci tak může být mnohem jednodušší, ale hlavně je univerzální. Pokud v ní potřebuji zavolat jinou funkci, opět ji vložím na místo prvního parametru. Dokonce ji můžu přímo v tom parametru definovat.

zavolej_funkci(function(x) { return x*x }, ...)

Funkce zavolej_funkci může například vykreslovat graf funkce, který jí dám jako parametr.

Nahoru Odpovědět
28.11.2012 12:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
valgard
Člen
Avatar
valgard:28.11.2012 12:58

Znie to zaujímavo, ďakujem za vysvetlenie.

 
Nahoru Odpovědět
28.11.2012 12:58
Avatar
exnero00
Člen
Avatar
exnero00:6.12.2012 19:16

Ahoj, chci se zeptat, proč jsme u té volací funkce museli napsat do těla: funkce(jmeno) a u samostatné funkce (function pozdrav(jmeno)), ke které jméno taky připisujeme, to nemusí být. Díky.

 
Nahoru Odpovědět
6.12.2012 19:16
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na exnero00
David Hartinger:6.12.2012 20:23

funkce(jmeno) volá funkci, která se jmenuje funkce a má parametr jmeno. Je deklarována výše, uložena do proměnné a následně předána v parametru funkce. Stejně tak by tam mohlo být jaksemas(). Je to podle toho parametru zde:

function zavolej_funkci(**funkce**, jmeno)
Nahoru Odpovědět
6.12.2012 20:23
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:6.12.2012 21:32

Asi by bylo příště lepší použít nějaký jiný název funkce, než je "funkce". Nějak se v tom ztrácím. I když vím, o čem je řeč.

Nahoru Odpovědět
6.12.2012 21:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:6.12.2012 21:38

Také si to uvědomuji, upravím to :)

Nahoru Odpovědět
6.12.2012 21:38
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:6.12.2012 21:49

Možná je to jen z bláta do louže, ale napadl mě prostý název "callback" nebo třeba "muj_callback", aby navazoval na text článku.

Nahoru Odpovědět
6.12.2012 21:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.