2010-08-03 5 views
2

Je vois que dans la réponse deEn Javascript, quelle est la motivation ou l'avantage d'utiliser var foo = function foo (i) {...}?

In Javascript, why write "var QueryStringToHash = function QueryStringToHash (query) { ... }"?

qui fait quelque chose dans ce cas particulier, comme

var foo = function foo(param) { 
    ... 
} 

, pourquoi le faire au lieu d'utiliser

function foo(param) { 
    ... 
} 

? Quel est l'avantage ou la motivation de le faire?

+2

duplication possible de ["Usual" fonctions vs variables de fonction dans JavaScript] (http://stackoverflow.com/questions/1333830/usual-functions-vs-function-variables-in-javascript) –

+3

Vous pouvez lire [this] (http://yura.thinkweb2.com/named-function-expressions/) –

+0

Il y a un entre-deux que vous avez peut-être manqué: 'var foo = function (param) {...}'. Les principales différences entre cela, et en utilisant une expression de fonction nommée, sont le débogage de la gentillesse (mentionné dans le lien @ Daniel) et de la récursivité (seulement mentionné en passant). –

Répondre

0

En peu de temps, si vous prenez le code suivant, le premier exemple crée une fonction, nommée foo, le second exemple crée une fonction anonyme et l'attribue à la variable bar. Outre le style, la différence fondamentale est que foo peut être appelé, en code, avant sa définition (puisqu'il s'agit du nom de la fonction); sinon, bar est une variable indéfinie avant de recevoir l'affectation, elle ne peut donc pas être utilisée auparavant.

var foo_result = foo(123); // ok 
function foo(param) { /* ... */ } 

var bar_result = bar(123); // error: undefined is not a function 
var bar = function(param) { /* ... */ } 
var bar_result = bar(123); // ok 

Je vous recommande de lire la suggestion de @Pekka.

Questions connexes