NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
pcrewik
Člen
Avatar
pcrewik:27.10.2016 10:56

Ahojte,

functionTwo(2, functionOne, function(x) { alert(x+2); });

viete mi pls. vysvetlit odkial presne sa naplna hodnota x pre anonymnu funkciu "function(x) " v callbacku?

Dakujem

 
Odpovědět
27.10.2016 10:56
Avatar
Odpovídá na pcrewik
Neaktivní uživatel:27.10.2016 11:39

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.

Nahoru Odpovědět
27.10.2016 11:39
Neaktivní uživatelský účet
Avatar
pcrewik
Člen
Avatar
Odpovídá na Neaktivní uživatel
pcrewik:28.10.2016 9:57

niekto kto by vedel potvrdit co pise taskkill?

 
Nahoru Odpovědět
28.10.2016 9:57
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na pcrewik
David Hynek:28.10.2016 11:35

Tak se koukni sem... https://www.dashingd3js.com/…ck-functions

Je to tam celé rozebrané do posledního puntíku...

Nahoru Odpovědět
28.10.2016 11:35
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá na pcrewik
Neaktivní uživatel:28.10.2016 20:18

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.

Nahoru Odpovědět
28.10.2016 20:18
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:28.10.2016 20:31

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.

Nahoru Odpovědět
28.10.2016 20:31
Neaktivní uživatelský účet
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
David Hynek:28.10.2016 20:45

konkrétně přesně tuhle funkci řeší můj odkaz... krok po kroku...

Nahoru Odpovědět
28.10.2016 20:45
Čím víc vím, tím víc věcí nevím.
Avatar
Filip Šedivý:28.10.2016 21:10

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);
});
Nahoru Odpovědět
28.10.2016 21:10
Láska je, když si zapamatujete její IP, abyste obešli zpoždění DNS.
Avatar
pcrewik
Člen
Avatar
Odpovídá na Filip Šedivý
pcrewik:28.10.2016 21:35

Filip, vieš mi pls. vysvetliť prečo keď funkcia "externi" ocakava argument "vstup", tak pri volani z mojeFunkce(ex­terni); sa tej funkcii externi pri volaní dá co za hodnotu pre argument "vstup"

ďakujem, tvoj popis mi najviac ozrejmil vec ;-)

 
Nahoru Odpovědět
28.10.2016 21:35
Avatar
Filip Šedivý:28.10.2016 21:47

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.addE­ventListener();

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? :D

Editováno 28.10.2016 21:47
Nahoru Odpovědět
28.10.2016 21:47
Láska je, když si zapamatujete její IP, abyste obešli zpoždění DNS.
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.