Écrire des fonctions avec paramètres et valeur de retour, donner des valeurs par défaut, utiliser les fonctions fléchées (lambdas) et passer une fonction en paramètre (callback).
1Situer
Sur le site d'une agence de voyages de Marrakech, le prix d'un séjour se calcule à plusieurs endroits : la page d'accueil, la fiche du séjour, le panier. Copier le même calcul trois fois, c'est trois fois plus de risques d'erreur. On l'écrit une seule fois dans une fonction, et on l'appelle partout.
2Comprendre
Appeler une fonction : arguments, paramètres, retour
La fonction prixTotal est définie une fois. Ses paramètres sont nuits, prixNuit et personnes (1 par défaut).
1 / 6
Déclarer et appeler
functionprixTotal(nuits, prixNuit, personnes =1) { // paramètres, dont un par défautconst total = nuits * prixNuit * personnes; // variable localereturn total; // valeur renvoyée
}
prixTotal(3, 450); // 1350 (arguments)prixTotal(3, 450, 2); // 2700
Les paramètres sont les entrées, return donne la sortie et termine la fonction.
Les variables déclarées dans la fonction sont locales : invisibles à l’extérieur (portée).
Une fonction fait une seule chose et porte un nom qui commence par un verbe : calculerTotal, afficherListe.
Les fonctions fléchées (lambdas)
const formaterPrix = (montant) =>`${montant} DH`;
const prixTotal = (nuits, prixNuit, personnes =1) => {
const total = nuits * prixNuit * personnes;
return total; // avec des accolades, return est obligatoire
};
Les fonctions comme valeurs
En JavaScript, une fonction est une valeur : on peut la ranger dans une variable et la passer en paramètre à une autre fonction. On l’appelle alors une fonction de rappel (callback) :
setTimeout(() =>console.log('3 secondes plus tard'), 3000);
[1, 2, 3].forEach((n) =>console.log(n *10));
bouton.addEventListener('click', () => { ... }); // partie D
Cette idée est partout en JavaScript : tableaux (B.7), événements (D), AJAX (E).
Exemple simple
La machine à jus du café
On met des oranges (les paramètres), on appuie, et le jus sort (la valeur de retour). On ne sait pas forcément ce qui se passe dedans, on sait juste quoi donner et ce qu'on reçoit.
○Écrivez prixTotal et affichez prixTotal(3, 450) dans la console (1350)
○Vérifiez le paramètre par défaut : prixTotal(3, 450, 2) donne 2700
○Affichez les deux séjours dans la liste, pour 2 personnes
○Le prix du désert doit apparaître formaté : « 3600 DH »
4Pratiquer
Exercice 1 · Return ou console.log ?
Quelle est la différence entre ces deux fonctions ? Que vaut x dans chaque cas ? function a(n) { console.log(n * 2); } function b(n) { return n * 2; } const x = a(5); const y = b(5);
Voir le corrigé
a(5) affiche 10 dans la console mais ne renvoie rien : x vaut undefined.
b(5) n'affiche rien mais renvoie 10 : y vaut 10, on peut le réutiliser
(l'afficher, l'additionner, le mettre dans la page...).
Exercice 2 · Réécrire en fléchée
Réécrivez avec une fonction fléchée : function tva(prix) { return prix * 0.2; }
Voir le corrigé
const tva = (prix) => prix *0.2;
// avec un seul paramètre, les parenthèses sont facultatives :const tva2 =prix=> prix *0.2;
Exercice 3 · Une fonction en paramètre
Écrivez une fonction appliquer(liste, operation) qui affiche le résultat de operation pour chaque élément de liste. Appelez-la pour afficher le double de [10, 20, 30].
Voir le corrigé
functionappliquer(liste, operation) {
for (const x of liste) {
console.log(operation(x));
}
}
appliquer([10, 20, 30], (n) => n *2); // 20, 40, 60