Avez-vous une question? (216) 97 656 803 hajjriadh@gmail.com
JavaScript

Les fonctions en JavaScript

Les fonctions en JavaScript. Dans cette leçon du cours JavaScript, vous apprendrez à : savoir à quoi sert une fonction et quand en écrire une ; déclarer une fonction, l'appeler et récupérer sa valeur ...

0 chapitres 0 QCM Accès gratuit
Dans cet article

À propos de ce cours

Les fonctions en JavaScript. Dans cette leçon du cours JavaScript, vous apprendrez à : 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.

Chapitre 10 — Les fonctions en JavaScript · Les fonctions en JavaScript

🎯 Objectifs de la leçon
• 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.

Anatomie d'une fonction
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 valeur renvoie un résultat et arrête la fonction. Sans return, la fonction renvoie undefined. 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ù le NaN), 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.
✅ Correction par rapport à l'ancienne version
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.
ℹ️ À retenir
• 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) :

  1. Écrivez max2(a, b) qui renvoie le plus grand de deux nombres, d'abord avec if, puis avec l'opérateur ternaire. Laquelle préférez-vous et pourquoi ?
  2. Écrivez max3(a, b, c) en réutilisant max2, sans aucune condition. Qu'est-ce que cela montre sur l'intérêt des fonctions ?
  3. Écrivez estPair(n). Pourquoi est-il plus utile de renvoyer true/false que d'afficher « pair » ou « impair » ?
  4. Écrivez afficherTable(n) qui affiche la table de multiplication de n dans la console. Que vaut const t = afficherTable(7)? Expliquez.
  5. Appelez max2(5) et max2("9", "10"). Que se passe-t-il ? Comment protégeriez-vous votre fonction ?
  6. 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.js et les réponses aux questions 4, 5 et 6.

Variables globales et variables locales →