Diskuze: Argument pre callback
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Předpokládám, že funkce 'functionTwo' zavolá svůj třetí argument pomocí kulatých závorek () a předá ji nějakou hodnotu, možná právě svůj první argument... Takže hodnota x se dostane do funkce až při a podle volání funkce.
niekto kto by vedel potvrdit co pise taskkill?
Tak se koukni sem... https://www.dashingd3js.com/…ck-functions
Je to tam celé rozebrané do posledního puntíku...
Třeba můj skill v jsku? Nebo fakt, že tu o jsku mám pár článků. Nebudu ti říkat něco co není 100% tak jak říkám.
Upresnim svuj prispevek, potvrdit chces co? Ze to takhle skutecne v JS jde? Na to jsou tu clanky, na to nemusis nutne verit me. Ja jsem odpovidal na to, co asi dela kod z ukazky. To ti nikdo krome autora kodu nepotvrdi.
konkrétně přesně tuhle funkci řeší můj odkaz... krok po kroku...
Při vytvoření funkce, vložíš jen další argument, který zavoláš pouze s závorky. A je jen na tobě jestli bude funkce veřejná nebo anonymní. V obou případech se to chová uvnitř vytvářené funkce stejně.
// Námi vytvořená funkce
function mojeFunkce(callback){
// Uvnitř jej zavolám jako název proměnné, akorát je obalím kulatými závorky, kvůli tomu že vlastně je to funkce. A uvnitř již předávám parametry
return callback("pokus");
}
// Vytvořím se nějakou externí funkce
function externi(vstup){
alert(vstup);
}
// A teď mojí funkci zavolám pomocí veřejné funkce
// Pozor, při vkládání funkce se vloží jen název bez kulatých závorek, neboť předávání argumentů proběhne až uvnitř, při volání callbacku
mojeFunkce(externi);
// A teď to samé akorát s anonymní funkcí
// Proměnná vstup co je uvnitř, se předá uvnitř mojeFunkce, to je přesně to co se skrývá v závorkách. Tak že hodnota pokus předaná v callbacku se uloží nyní do proměnné vstup.
mojeFunkce(function(vstup){
alert(vstup);
});
Filip, vieš mi pls. vysvetliť prečo keď funkcia "externi" ocakava argument "vstup", tak pri volani z mojeFunkce(externi); sa tej funkcii externi pri volaní dá co za hodnotu pre argument "vstup"
ďakujem, tvoj popis mi najviac ozrejmil vec
Funkce externí samozřejmě nemusí očekávat žádný vstup, to potom záleží hodně na tom co callback předává (pokud něco vůbec předává) a nebo jestli ty s tím vstupním argumentem chceš pracovat.
Pěkným příkladem je třeba na funkce na eventy - tedy document.addEventListener();
Pokud nepotřebuješ cyklit nebo vytvářet více událostí, tak nepotřebuješ pracovat s callbackem
// Načtení objektu s ID = test
var object = document.querySelector("#test");
// A vytvoření události na kliknutí
object.addEventListener("click", function(){
alert("Klikl si na #test");
});
V případě že bychom addEventListener dávali do cyklu, tak použijeme ve funkci parametr který nám funkce addEventListener předá do anonymní funkce.
// Výběr všech prvků s třídou test
var object = document.querySelectorAll(".test");
// A následný cyklus
for(var i = 0; i < object.length; i++){
var trida = object[i];
trida.addEventListener("click", function(event){
var e = event.target;
// Při kliknutí změníme HTML kód
e.innerHTML = "Test";
/*
Nemůžeme přistoupit přes object[i].innerHTML,
neboť v tomto případě hraje roli zapouzdření funkce,
a proto nám addEventListener vrací parametr,
tedy objekt který který je shodný s object[i]
*/
});
}
Stačí takhle? Nebo jsem úplně mimo mísu?
Zobrazeno 10 zpráv z 10.