Zápis funkce s okamžitým voláním v JavaScriptu rubrika: Programování: JavaScript

1 skybedy
položil/-a 24.11.2014

Ahojte, jsou tyto zápisy funkce s okamžitým voláním svým významem zcela ekvivalentní, nebo je tam nějaký rozdíl?

(function(pozdrav){
 return pozdrav;
})('Ahoj');
 
(function(pozdrav){
 return pozdrav;
}('Ahoj'));

Mě se zdá, že fungují stejně, ale ten JavaScript je někdy tak nejednoznačný, že bych se rád ujistil, díky.

odkaz Vyřešeno
6 jj59
odpověděl/-a 24.11.2014

Pokud to chápu správně, tak ty závorky tam jsou jen proto, aby to nějak syntakticky prošlo. Víc se mi líbí první tvar. Lepší je

var vysledek = function(pozdrav){
    return pozdrav;
}('Ahoj');

Osobně bych se ale tomu snažil vyhnout a když to je možné použil klasický zápis

var func = function(pozdrav){
    return pozdrav;
};
var vysledek = func('Ahoj');

Nebo vůbec nevytvářel funkci.
Zejména když nejsi až tak dobrý v Javascriptu je lepší se složitějším konstrukcím, kterým úplně nerozumíš vyhnout- já to tak dělám.

Komentáře

  • skybedy : Ty závorky tam jsou proto, že tu anonymní funkci nemusíš ukládat do proměnné a sama se v tom tvaru, který jsem prezentoval, spustí. Mám teď čas, zkouším se do JavaScriptu ponořit co nejvíc a pochopit co nejvíc souvislostí a detailů. Na oba způsoby zápisu jsem narazil, proto se ptám. 24.11.2014
  • jan.flos : Odborně se to nazývá IIFE (Immediately-invoked function expression). http://en.wikipedia.org/wiki/Immediately-invoked_function_expression Osobně bych se nezabýval Javascriptem ale Typescriptem který do Javascriptu kompiluje. 26.11.2014
  • Michal Brndiar : TypeScript je určitě správná cesta, ale rozodně je potřeba znát primárně JavaScript. S trochou nadsázky je to to samé, jako říct - uč se ORM, nezabývej se SQL (což je špatně - nemyslím ORM, ale neznalost SQL). 28.11.2014

Pro zobrazení všech 5 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.