À propos de ce cours
Chapitre 10 — Les fonctions en JavaScript · Les fonctions en JavaScript
• savoir à quoi sert une fonction et quand en écrire une ;
• déclarer une fonction, l'appeler et récupérer sa valeur de retour ;
• distinguer paramètres et arguments ;
• choisir un bon nom et découper un programme en petites fonctions.
1. Pourquoi des fonctions ?
Une fonction est un bloc d'instructions auquel on donne un nom, pour pouvoir l'exécuter autant de fois que nécessaire.
Elle évite de recopier le même code (si le calcul change, on ne le corrige qu'à un endroit), elle rend le programme lisible
(calculerMoyenne(notes) se comprend sans lire le détail) et elle permet de tester chaque morceau séparément.
JavaScript fournit de nombreuses fonctions prêtes à l'emploi (parseInt, Math.max, alert… leçon 10.6) ;
dans cette leçon, vous écrivez les vôtres.

Figure 1 — Les parties d'une fonction, et la différence entre paramètres et arguments.
2. Déclarer, appeler, renvoyer
// 1. Déclarer une fonction : nom, paramètres, corps, valeur de retour
function aireRectangle(largeur, hauteur) {
return largeur * hauteur;
}
// 2. L'appeler avec des arguments
console.log("Aire 4 × 3 =", aireRectangle(4, 3));
console.log("Aire 2,5 × 2 =", aireRectangle(2.5, 2));
// 3. Une fonction sans return renvoie undefined
function saluer(prenom) {
console.log(`Bonjour ${prenom} !`);
}
const resultat = saluer("Amina");
console.log("Valeur renvoyée par saluer :", resultat);
// 4. return arrête la fonction immédiatement
function mention(note) {
if (note < 0 || note > 20) return "note invalide";
if (note >= 16) return "Très bien";
if (note >= 14) return "Bien";
if (note >= 12) return "Assez bien";
if (note >= 10) return "Passable";
return "Insuffisant";
}
for (const n of [17, 13.5, 10, 7, 25]) console.log(`${n} → ${mention(n)}`);
// 5. Une déclaration de fonction est « remontée » : on peut l'appeler avant de l'écrire
console.log("Double de 21 :", doubler(21));
function doubler(x) {
return x * 2;
}
// 6. Trop ou pas assez d'arguments : pas d'erreur !
console.log("aireRectangle(4) =", aireRectangle(4)); // hauteur vaut undefined
console.log("aireRectangle(4, 3, 9) =", aireRectangle(4, 3, 9)); // 9 est ignoré
// 7. Une fonction est une valeur : on peut la ranger dans une variable
const calcul = aireRectangle;
console.log("typeof calcul =", typeof calcul, "| calcul(5, 5) =", calcul(5, 5));
Résultat dans la console
Aire 4 × 3 = 12 Aire 2,5 × 2 = 5 Bonjour Amina ! Valeur renvoyée par saluer : undefined 17 → Très bien 13.5 → Assez bien 10 → Passable 7 → Insuffisant 25 → note invalide Double de 21 : 42 aireRectangle(4) = NaN aireRectangle(4, 3, 9) = 12 typeof calcul = function | calcul(5, 5) = 25
- Déclarer: le mot-clé
function, un nom, des paramètres entre parenthèses (éventuellement aucun), le corps entre accolades. - Appeler: le nom suivi de parenthèses contenant les arguments. Sans parenthèses (
aireRectangle), on désigne la fonction sans l'exécuter. - Renvoyer:
return valeurrenvoie un résultat et arrête la fonction. Sansreturn, la fonction renvoieundefined. Une fonction qui calcule doit renvoyer son résultat, et laisser à l'appelant le soin de l'afficher. - JavaScript ne vérifie ni le nombre ni le type des arguments : un argument manquant vaut
undefined(d'où leNaN), un argument en trop est ignoré. - Une déclaration de fonction est remontée (hoisting) : on peut l'appeler plus haut dans le fichier. Inutile donc de placer les fonctions dans le
<head>.
3. Bien nommer et bien découper
- Un nom de fonction suit les règles des variables (lettres, chiffres,
_et$, pas d'espace, pas de chiffre au début) et la convention camelCase. - Commencez par un verbe qui dit ce que fait la fonction :
calculerMoyenne,afficherErreur,estValide(qui renvoie un booléen). - Une fonction = une seule tâche, en quelques lignes. Si vous devez écrire « et » pour décrire ce qu'elle fait, découpez-la.
Cette leçon a été mise à jour. L'ancienne version indiquait que le caractère
& est autorisé dans un nom
(c'est $ qui l'est), conseillait de placer les fonctions dans le <head> (inutile grâce à la remontée, et les scripts se placent
en bas de page ou avec defer), présentait new Function("a", "b", "…") (à éviter : c'est l'équivalent de eval) et utilisait
document.write. Les activités donnaient leur correction, et l'une appelait max2 avec trois arguments. Les expressions de fonction
sont détaillées à la leçon 10.5.•
function nom(parametres) { … return resultat; } puis nom(arguments). • Paramètres = noms dans la déclaration ; arguments = valeurs lors de l'appel.
•
return renvoie une valeur et arrête la fonction ; sans return: undefined. • Un verbe pour le nom, une seule tâche par fonction, un résultat renvoyé plutôt qu'affiché.
🛠 Activité 1 — Ma boîte à outils de calcul
Mission : Écrivez un fichier outils.js contenant plusieurs petites fonctions, et testez-les dans la console.
Questions pour avancer (répondez dans votre compte rendu, puis appliquez dans votre projet) :
- Écrivez
max2(a, b)qui renvoie le plus grand de deux nombres, d'abord avecif, puis avec l'opérateur ternaire. Laquelle préférez-vous et pourquoi ? - Écrivez
max3(a, b, c)en réutilisantmax2, sans aucune condition. Qu'est-ce que cela montre sur l'intérêt des fonctions ? - Écrivez
estPair(n). Pourquoi est-il plus utile de renvoyertrue/falseque d'afficher « pair » ou « impair » ? - Écrivez
afficherTable(n)qui affiche la table de multiplication dendans la console. Que vautconst t = afficherTable(7)? Expliquez. - Appelez
max2(5)etmax2("9", "10"). Que se passe-t-il ? Comment protégeriez-vous votre fonction ? - Déplacez toutes vos déclarations à la fin du fichier, après les appels. Le script fonctionne-t-il encore ? Remplacez une déclaration par
const max2 = function (a, b) {…}: et maintenant ?
Je vérifie / je rends :
- ☐ Le fichier
outils.jset les réponses aux questions 4, 5 et 6.
Variables globales et variables locales →