10
votes

Advantage JavaScript en plaçant des fonctions à l'intérieur de variables?

J'ai vu des exemples de code récents qui placent des fonctions à l'intérieur de variables, puis appelant les fonctions telles que la normale.

comme dans: xxx

Je suis sûr qu'il y a beaucoup de choses d'avantages avec des scénarios plus avancés, mais je suis juste curieux.


1 commentaires

Lisez l'article de la première réponse - Stackoverflow.com/Questtions/1013385/... lien direct vers l'article - kangax.github.com/nfe


3 Réponses :


13
votes

Il n'y a aucun avantage, vous ne placez pas une fonction à l'intérieur em> une variable que vous nommez simplement la fonction différemment.

foo("Hello!");
/* Later on... */
var foo = function () { /* ... */ }


1 commentaires

Pour un petit exercice de pensée, var foo = barre de fonction (); Bar === foo?



2
votes

Il y a des choses que vous pouvez faire avec une expression de fonction que vous ne pouvez pas avec une déclaration.

  • Il pourrait être immédiatement invoqué et la valeur de retour stockée dans la variable p> li>

  • Si vous n'êtes pas dans l'espace de noms global, vous pouvez exclure le mot-clé var code> pour créer un global p> li> ul>

    edit: strong> p>

    Voici un exemple d'invocation immédiate. Il renvoie une fonction à la variable code> myFonctionnée code> qui a accès aux variables et paramètre scopé dans la fonction immédiatement invoquée. P>

    var counter = function( value ) {
    
        return function( addValue ) {
            value += ~~addValue;
            return value;
        };
    }( 10 ); // initialize with a value
    
       // each call builds on the result of the previous    
    console.log( counter( 2 ) ); // 12
    console.log( counter( 5 ) ); // 17
    console.log( counter( 3 ) ); // 20
    console.log( counter( 7 ) ); // 27
    console.log( counter( 1 ) ); // 28
    


0 commentaires

6
votes

Ceci s'appelle une expression de fonction, qui a un comportement légèrement différent d'une déclaration de fonction. Entre autres choses, il agit différemment en ce qui concerne le moment où vous pourrez y référer. Par exemple, si vous faites:

function myFunctionName() {
    Code Here...
}


0 commentaires