Fonction avec un nom, mais Function Expression en JavaScript
Faisons maintenant une fonction qui aura un nom, mais qui sera une Function Expression, parce qu'elle participe à une expression :
+function func() {
console.log('!');
}
Il est intéressant de noter que nous ne pourrons pas
accéder à notre fonction par son nom func, cela
conduira à une erreur :
+function func() {
console.log('!');
}
func(); //!! donnera une erreur
Pour pouvoir appeler notre fonction, elle doit être assignée à une variable :
let test = function func() {
console.log('!');
};
test(); // affichera '!'
Encore une fois : une fonction qui est une expression fonctionnelle ne peut pas être appelée par son nom. Une telle fonction ne peut être appelée qu'en utilisant la variable dans laquelle cette fonction a été enregistrée.
Néanmoins, une expression fonctionnelle peut avoir un nom de fonction, ce sera syntaxiquement correct. Nous verrons à quoi cela sert dans les prochaines leçons.
Résumons : les fonctions sont des Function Declaration ou des Function Expression non pas parce qu'elles ont un nom ou non, mais parce qu'elles sont participantes d'expressions ou ne le sont pas.
Comme vous l'avez vu ci-dessus, une fonction sans nom peut être perçue comme une Function Declaration, et une fonction avec un nom peut être une Function Expression.