Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: st 17. 09. 2012, 19:56:37

Název: Javascript a definice funkce
Přispěvatel: st 17. 09. 2012, 19:56:37
Rád bych se zeptal, kterou techniku definice funkce považujete za správnou.

Kód: [Vybrat]
function getData () { };

var getData = function() { };

var getData = function getData() { };
Název: Re:Javascript a definice funkce
Přispěvatel: DK 17. 09. 2012, 19:57:55
prvni dve
Název: Re:Javascript a definice funkce
Přispěvatel: eMko 17. 09. 2012, 21:24:41
první definuješ funkci s názvem getData, druhá do proměnné getData si dáš funkci. Obojí je správně

Ta třetí je obojí dohromady, je to dáké zhulené. Fakt Ti to interpret vezme?
Název: Re:Javascript a definice funkce
Přispěvatel: st 17. 09. 2012, 22:25:38
Jasně, zkus to na jsfiddle.net (http://jsfiddle.net)

viz komentář od Eric Hamilton na  http://ejohn.org/blog/javascript-as-a-first-language/ (http://ejohn.org/blog/javascript-as-a-first-language/)



Citace
Unless you want your call stacks to look like:
(Anonymous function)

You might want to change your example to: var getData = function getData() { };
When you name your function expressions, that name is only used inside that function, so it doesn’t conflict with the getData variable outside the function.
Název: Re:Javascript a definice funkce
Přispěvatel: st 18. 09. 2012, 11:47:18
I zde ve článku Petra Staníčka je tento zápis použit. Zdůvodnění stejné jako v předchozím případě.
http://www.zdrojak.cz/clanky/javascript-a-oblast-pusobnosti-promennych-dil-prvni/nazory/ (http://www.zdrojak.cz/clanky/javascript-a-oblast-pusobnosti-promennych-dil-prvni/nazory/)

Zajímalo by mě kdy kterému zápisu dát přednost, např. John Resig píše:
Kód: [Vybrat]
//
Don't do this:
function getData() { }
// Do this instead:
var getData = function() { };
Název: Re:Javascript a definice funkce
Přispěvatel: Riff 19. 09. 2012, 14:54:02
Správně jsou všechny tři možnosti. Třetí varianta umožňuje přistupovat k objektu funkce stejně jako přes arguments.callee:

Kód: [Vybrat]
a = function callee() {
    callee.b = 1;
};
a();
alert(a.b); // Vypíše 1