Cours de Javascript 2022
Chapitre 2 - Correction 6 : Somme d'âges
function AgeSum(_firstAge,_secondAge)
{
alert("The first person is " + _firstAge + " years old, the second one is " + _secondAge + " years old.");
let _sumOfAges = _firstAge + _secondAge;
return _sumOfAges;
}
alert("The sum of both ages is : " + AgeSum(15, 32));
Explications :
Ici, la seule chose nouvelle est le return, pour le reste, nous avons déjà tout vu précédemment. Déclaration de fonction, alert, appel de fonction, paramètres... Si vous maîtrisez déjà ça, c'est la bonne voie ! C'est aussi le dernier point de théorie particulier sur les fonctions, les deux exercices suivants vont pousser toutes ces notions plus loin et vous les faire utiliser, mais c'est la dernière chose à apprendre le return avec les fonctions.
Pour être honnête avec vous, vous avez sans le savoir déjà utilisé un return à l'aide de la fonction prompt. En effet, je vous avais dit que la fonction prompt retournais la valeur entrée par l'utilisateur dans le champs de texte. En fait la fonction prompt est une fonction de Javascript qui, dans son scope (entre les accolades), à un moment récupère l'information de ce champs de texte, le stock dans une variable et puis le transmet via un return, ce qui nous permet de récupérer à notre tour cette valeur dans le scope principal.
Ici, nous voulons donc calculer la sommes des ages dans notre fonction AgeSum(), mais une fois celle-ci calculée, nous ne pouvons pas y accéder ! Pour avoir une porte de sortie vers le scope principal, il faut mettre à la suite du mot return la valeur à renvoyer au code principal. Ici ce qui nous intéresse, c'est la valeur de la somme, on la met donc après le return. Une fois ceci fait, on peut récupérer la valeur de retour de AgeSum() exactement comme celle d'un prompt, soit en l'utilisant tout de suite, comme ci-dessus, soit en la stockant d'abord dans une fonction, comme vous verrez juste après.
Solution alternative :
function AgeSum(_firstAge,_secondAge)
{
alert("The first person is " + _firstAge + " years old, the second one is " + _secondAge + " years old.");
let _sumOfAges = _firstAge + _secondAge;
return _sumOfAges;
}
let ageSum=AgeSum(18,26);
alert("The sum of both ages is : " + ageSum);
En vérité, ce code ressemble très fort au précédent, la seule chose qui change, c'est que, avant d'afficher le message dans le alert, nous stockons la valeur de retour de AgeSum() dans une variable. Ensuite, nous utilisons cette variable qui stock maintenant la sommes des âges dans le alert(). C'est l'équivalent de la solution du dessus, mais encore une fois, cette solution est un peu meilleure dans le cas d'un gros programme, car si nous voulons à l'avenir réutiliser cette somme, le fait de l'avoir stockée nous permet simplement de réutiliser cette variable plutôt que de recalculer la somme. La fonction quant à elle sera éventuellement réutilisée pour recalculer une nouvelle somme entre 2 autres âges. Pour faire simple, de manière générale, on évite de rappeler une fonction pour recalculer quelque chose qu'on a déjà calculé, on préfère stocker le résultat du calcul lors de la première execution de la fonction dans une variable. En effet, ici c'est un calcul simple, mais imaginez une fonction qui calcule... La force d'attraction d'une planète située à 150 année lumière sur la terre en prenant en compte toutes les forces parasites sur la route, et bien cela serait certainement un calcul extrêmement complexe, pour autant, le résultat, si ça tombe, vaudrait au hasard 253 Newton. Si jamais on veut réutiliser cette valeur, il sera plus simple pour notre ordinateur de se rappeler du chiffre 253 plutôt que de calculer une nouvelle fois toute cette opération compliquée !