2010-11-10 6 views
4

En javascript, Quelle est la différence entre la déclaration de fonction et l'expression de fonction en termes de portée? déclaration de fonction signifie que nous polluons l'espace global. Est-ce le même cas avec l'expression de la fonction?Déclaration de fonction - Fonction Expression - Portée

déclaration de fonction

function sum(){ 
// logic goes here 
} 

expression Fonction

var sum = function(){} 
+0

http://stackoverflow.com/questions/336859/javascript-var-functionname-function-vs-function-functionname et http://stackoverflow.com/questions/1013385/what-is-the- différence-entre-une-fonction-expression-vs-déclaration-en-javascript – Phil

Répondre

5

En ce qui polluant la portée englobante va, les deux sont équivalents. Notez que ce n'est pas nécessairement la portée globale - c'est la portée dans laquelle la fonction est déclarée (les fonctions locales sont permises dans d'autres fonctions). Dans votre exemple, les deux méthodes introduisent une variable (objet fonction) nommée sum dans la portée locale.

9

Les deux sont équivalents en termes de portée. Une fonction déclarée dans une autre fonction ne sera pas globale. La différence est que vous pouvez utiliser une fonction déclarée à tout moment (car est levée avant l'exécution de tout code), une fonction affectée à une variable en tant qu'expression seulement après l'avoir affectée.

(function() { 

    bar(); // works 
    function bar() { } // is not global 

    foo(); // doesn't work 
    var foo = function() { }; 

})(); 
Questions connexes