Avatar
valgard
Člen
Avatar
valgard:

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
Redaktor
Avatar
Kit:

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:

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
Redaktor
Avatar
Odpovídá na valgard
Kit:

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:

Znie to zaujímavo, ďakujem za vysvetlenie.

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

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na exnero00
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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

Nahoru Odpovědět 6.12.2012 21:38
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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.