Fonction retournant une fonction en JavaScript
Supposons que nous ayons une fonction comme celle-ci, retournant une chaîne de caractères :
function func() {
return '!';
}
let result = func();
console.log(result); // affichera '!'
Maintenant, au lieu d'une chaîne, par analogie, retournons une fonction anonyme :
function func() {
return function() {
return '!';
};
}
let result = func(); // la variable result contiendra une fonction
console.log(result); // affichera 'function() {return '!';}'
Comme vous le voyez, la variable result représente maintenant
une fonction. Affichons dans la console le résultat de son exécution.
Pour cela, ajoutons des parenthèses :
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // affichera '!'
Puisque l'appel func() retourne une fonction,
nous pouvons immédiatement appeler cette fonction retournée,
comme ceci : func()() - les premières
parenthèses obtiennent le résultat de la fonction
func (qui est lui-même une fonction),
et les deuxièmes parenthèses sont appliquées au résultat de
func.
Essayons :
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // affichera '!'
Créez une fonction func1 qui, lorsqu'elle est
appelée comme ceci : func1()(), retourne
le nombre 1. Créez une fonction similaire
func2, retournant le nombre 2.
Trouvez la somme des résultats de ces fonctions.