Javascript fondamentaux
Thème :
Intermédiaire
1 vues ·5/19 leçonsJAVASCRIPT - LES FONCTIONS (GUIDE COMPLET POUR DÉBUTANTS)
PLAN DÉTAILLÉ
- Concepts Fondamentaux
- Fonctions Globales
- Fonctions Fléchées
- Return Implicite
- Cas Pratiques
- Pièges Courants
📖 SECTION 1 : CONCEPTS FONDAMENTAUX
1.1 Qu’est-ce qu’une Fonction ?
Définition Simple
Une fonction est un bloc de code réutilisable qui effectue une tâche spécifique.
Analogie du Monde Réel
🏭 Usine de Chocolat
├─ Entrée : Cacao brut
├─ Fonction : Transformer le cacao
└─ Sortie : Chocolat fini
💻 Fonction JavaScript
├─ Entrée : Paramètres
├─ Fonction : Code à exécuter
└─ Sortie : Résultat (return)
Pourquoi les Fonctions ?
| Avantage | Explication |
|---|---|
| Réutilisabilité | Écrire une fois, utiliser partout |
| Clarté | Code plus lisible et organisé |
| Maintenance | Modifier au même endroit |
| Modularité | Diviser le code en petites parties |
1.2 Les Trois Composantes d’une Fonction
1️⃣ Paramètres (Entrées)
// Les paramètres sont les ENTRÉES de la fonction
// ↓ Paramètres
function additionner(a, b) {
return a + b;
}
// Appel avec des ARGUMENTS (valeurs réelles)
// ↓ Arguments
additionner(5, 3); // 8
2️⃣ Code (Logique)
function additionner(a, b) {
// ↓ Le code à exécuter
const resultat = a + b;
console.log(`${a} + ${b} = ${resultat}`);
// ↑ Logique de la fonction
return resultat;
}
3️⃣ Return (Sortie)
function additionner(a, b) {
return a + b; // ← La SORTIE (résultat)
}
const resultat = additionner(5, 3);
console.log(resultat); // 8
1.3 Flux d’Exécution d’une Fonction
// Étape 1 : Définition (préparation)
function saluer(nom) {
console.log(`Bonjour ${nom}`);
return `Salutation envoyée à ${nom}`;
}
// Étape 2 : Appel (exécution)
const message = saluer('myra');
// Flux :
// 1. saluer('myra') est appelée
// 2. nom = 'myra'
// 3. console.log exécuté → "Bonjour myra"
// 4. return exécuté → message = "Salutation envoyée à myra"
// 5. Fonction terminée
console.log(message); // "Salutation envoyée à myra"
📖 SECTION 2 : FONCTIONS GLOBALES (DÉCLARATION CLASSIQUE)
2.1 Syntaxe de Base
Structure Complète
function nomDeLaFonction(parametre1, parametre2) {
// Code à exécuter
return resultat;
}
Exemple Simple
// Fonction qui additionne deux nombres
function additionner(a, b) {
const resultat = a + b;
return resultat;
}
// Appel
console.log(additionner(5, 3)); // 8
console.log(additionner(10, 20)); // 30
2.2 Fonctions sans Paramètres
Syntaxe
function nomFonction() {
// Code sans paramètres
return resultat;
}
Exemples
// ✅ Fonction simple sans paramètres
function obtenirDate() {
return new Date().toLocaleDateString('fr-FR');
}
console.log(obtenirDate()); // "25/01/2026"
// ✅ Fonction qui affiche un message
function afficherBienvenue() {
console.log('Bienvenue sur notre site !');
return true;
}
afficherBienvenue(); // "Bienvenue sur notre site !"
// ✅ Fonction qui génère un nombre aléatoire
function nombreAleatoire() {
return Math.floor(Math.random() * 100);
}
console.log(nombreAleatoire()); // 42 (par exemple)
2.3 Fonctions avec Paramètres
Un Paramètre
function doubler(nombre) {
return nombre * 2;
}
console.log(doubler(5)); // 10
console.log(doubler(10)); // 20
Plusieurs Paramètres
function calculerRectangle(largeur, hauteur) {
const aire = largeur * hauteur;
return aire;
}
console.log(calculerRectangle(5, 3)); // 15
console.log(calculerRectangle(10, 4)); // 40
Paramètres avec Valeurs par Défaut
// Si l'utilisateur ne fournit pas de paramètre, utiliser la valeur par défaut
function saluer(nom = 'Visiteur') {
return `Bonjour ${nom}`;
}
console.log(saluer('myra')); // "Bonjour myra"
console.log(saluer()); // "Bonjour Visiteur"
2.4 Fonctions avec Multiple Return
Un Seul Return
// ✅ BON : Un seul return
function obtenirStatut(age) {
if (age >= 18) {
return 'Adulte';
} else {
return 'Mineur';
}
}
console.log(obtenirStatut(20)); // "Adulte"
console.log(obtenirStatut(15)); // "Mineur"
Return Précoce (Early Return)
// ✅ BON : Retourner dès que possible
function validerEmail(email) {
// Vérifier si vide
if (!email) {
return false; // Sortir immédiatement
}
// Vérifier si contient @
if (!email.includes('@')) {
return false; // Sortir immédiatement
}
// Si tout est bon
return true;
}
console.log(validerEmail('')); // false
console.log(validerEmail('myra')); // false
console.log(validerEmail('myra@example.com')); // true
2.5 Fonctions sans Return
Fonctions qui Effectuent une Action
// ✅ Fonction sans return (effectue une action)
function afficherMessage(message) {
console.log(message);
// Pas de return = return undefined
}
### **Return Implicite (undefined)**
```javascript
function test() {
console.log('Test');
// Pas de return explicite
}
const resultat = test(); // "Test"
console.log(resultat); // undefined
2.6 Cas Pratiques - Fonctions Globales
Cas 1 : Calculatrice Simple
function additionner(a, b) {
return a + b;
}
function soustraire(a, b) {
return a - b;
}
function multiplier(a, b) {
return a * b;
}
function diviser(a, b) {
if (b === 0) {
return 'Erreur : division par zéro';
}
return a / b;
}
// Utilisation
console.log(additionner(10, 5)); // 15
console.log(soustraire(10, 5)); // 5
console.log(multiplier(10, 5)); // 50
console.log(diviser(10, 5)); // 2
console.log(diviser(10, 0)); // "Erreur : division par zéro"
Cas 2 : Validation de Formulaire
function validerNom(nom) {
if (nom.length < 3) {
return 'Le nom doit avoir au moins 3 caractères';
}
return true;
}
function validerAge(age) {
if (age < 18) {
return 'Vous devez être majeur';
}
return true;
}
function validerFormulaire(nom, age) {
const valNom = validerNom(nom);
const valAge = validerAge(age);
if (valNom !== true) return valNom;
if (valAge !== true) return valAge;
return 'Formulaire valide !';
}
// Utilisation
console.log(validerFormulaire('Al', 20)); // "Le nom doit avoir au moins 3 caractères"
console.log(validerFormulaire('myra', 15)); // "Vous devez être majeur"
console.log(validerFormulaire('myra', 25)); // "Formulaire valide !"
📖 SECTION 3 : FONCTIONS FLÉCHÉES (ARROW FUNCTIONS)
3.1 Qu’est-ce qu’une Fonction Fléchée ?
Définition
Une fonction fléchée est une syntaxe courte pour écrire des fonctions en JavaScript, introduite en ES6 (2015).
Syntaxe de Base
// Fonction classique
function additionner(a, b) {
return a + b;
}
// Fonction fléchée (équivalente)
const additionner = (a, b) => {
return a + b;
};
// Les deux font exactement la même chose !
3.2 Syntaxes des Fonctions Fléchées
Syntaxe 1 : Avec Accolades et Return
// Structure complète
const nomFonction = (param1, param2) => {
// Code
return resultat;
};
// Exemple
const additionner = (a, b) => {
const resultat = a + b;
return resultat;
};
console.log(additionner(5, 3)); // 8
Syntaxe 2 : Sans Accolades (Return Implicite)
// Syntaxe courte (return implicite)
const nomFonction = (param1, param2) => resultat;
// Exemple
const additionner = (a, b) => a + b;
console.log(additionner(5, 3)); // 8
Syntaxe 3 : Un Seul Paramètre
// Avec un paramètre, les parenthèses sont optionnelles
const doubler = (nombre) => nombre * 2;
const doubler = (nombre) => nombre * 2; // Parenthèses optionnelles
console.log(doubler(5)); // 10
Syntaxe 4 : Pas de Paramètres
// Sans paramètres, les parenthèses sont obligatoires
const obtenirDate = () => new Date().toLocaleDateString('fr-FR');
console.log(obtenirDate()); // "25/01/2026"
3.3 Tableau Comparatif
| Cas | Fonction Classique | Fonction Fléchée |
|---|---|---|
| Deux paramètres | function add(a, b) { return a + b; } |
const add = (a, b) => a + b; |
| Un paramètre | function double(n) { return n * 2; } |
const double = n => n * 2; |
| Pas de paramètre | function getDate() { return new Date(); } |
const getDate = () => new Date(); |
| Code complexe | function calc(a, b) { const r = a + b; return r * 2; } |
const calc = (a, b) => { const r = a + b; return r * 2; }; |
📖 SECTION 4 : RETURN IMPLICITE
4.1 Qu’est-ce que le Return Implicite ?
Définition
Le return implicite signifie que la fonction retourne automatiquement le résultat sans écrire return.
Condition
Le return implicite fonctionne SEULEMENT avec les fonctions fléchées SANS accolades.
// ✅ Return implicite (pas d'accolades)
const additionner = (a, b) => a + b;
// ❌ Pas de return implicite (avec accolades)
const additionner = (a, b) => {
return a + b;
};
4.2 Exemples de Return Implicite
Exemple 1 : Calcul Simple
// ✅ Return implicite
const doubler = (n) => n * 2;
console.log(doubler(5)); // 10
// Équivalent à :
const doubler = (n) => {
return n * 2;
};
Exemple 2 : Opération Mathématique
// ✅ Return implicite
const calculerAire = (largeur, hauteur) => largeur * hauteur;
console.log(calculerAire(5, 3)); // 15
// Équivalent à :
const calculerAire = (largeur, hauteur) => {
return largeur * hauteur;
};
Exemple 3 : Chaîne de Caractères
// ✅ Return implicite
const saluer = (nom) => `Bonjour ${nom}`;
console.log(saluer('myra')); // "Bonjour myra"
// Équivalent à :
const saluer = (nom) => {
return `Bonjour ${nom}`;
};
Exemple 4 : Comparaison
// ✅ Return implicite
const estMajeur = (age) => age >= 18;
console.log(estMajeur(25)); // true
console.log(estMajeur(15)); // false
// Équivalent à :
const estMajeur = (age) => {
return age >= 18;
};
4.3 Return Implicite avec Objets
⚠️ Attention : Les Accolades
// ❌ ERREUR : Les accolades sont interprétées comme le bloc de code
const creerUtilisateur = nom => { nom: nom, age: 25 };
// Résultat : undefined (car pas de return)
// ✅ CORRECT : Entourer l'objet de parenthèses
const creerUtilisateur = nom => ({ nom: nom, age: 25 });
console.log(creerUtilisateur('myra')); // { nom: 'myra', age: 25 }
// ✅ CORRECT : Utiliser des accolades avec return
const creerUtilisateur = nom => {
return { nom: nom, age: 25 };
};
Pourquoi les Parenthèses ?
// Les accolades {} sont ambiguës en JavaScript
// Elles peuvent signifier :
// 1. Un bloc de code
// 2. Un objet littéral
// Donc pour un objet, on utilise des parenthèses pour clarifier
const objet = () => ({ cle: 'valeur' }); // Clair : c'est un objet
const fonction = () => {
return { cle: 'valeur' };
}; // Clair : c'est un bloc de code
📖 SECTION 5 : COMPARAISON COMPLÈTE
5.1 Fonction Classique vs Fonction Fléchée
Exemple 1 : Addition
// ❌ Fonction classique (long)
function additionner(a, b) {
return a + b;
}
// ✅ Fonction fléchée avec return implicite (court)
const additionner = (a, b) => a + b;
// Utilisation (identique)
console.log(additionner(5, 3)); // 8
Exemple 2 : Validation
// ❌ Fonction classique
function validerEmail(email) {
if (!email.includes('@')) {
return false;
}
return true;
}
// ✅ Fonction fléchée avec return implicite
const validerEmail = (email) => email.includes('@');
// Utilisation
console.log(validerEmail('myra@example.com')); // true
console.log(validerEmail('myra')); // false
📖 SECTION 6 : PIÈGES COURANTS
6.1 Piège 1 : Oublier les Parenthèses pour un Objet
// ❌ ERREUR : Pas de parenthèses
const creerUtilisateur = (nom) => {
nom: nom;
};
console.log(creerUtilisateur('myra')); // undefined
// ✅ CORRECT : Avec parenthèses
const creerUtilisateur = (nom) => ({ nom: nom });
console.log(creerUtilisateur('myra')); // { nom: 'myra' }
6.2 Piège 2 : Confondre Return Implicite et Explicite
// ❌ ERREUR : Accolades sans return
const additionner = (a, b) => {
a + b; // Pas de return !
};
console.log(additionner(5, 3)); // undefined
// ✅ CORRECT : Avec return
const additionner = (a, b) => {
return a + b;
};
console.log(additionner(5, 3)); // 8
// ✅ CORRECT : Sans accolades (return implicite)
const additionner = (a, b) => a + b;
console.log(additionner(5, 3)); // 8
6.3 Piège 3 : Oublier les Parenthèses pour un Paramètre
// ✅ BON : Parenthèses optionnelles pour 1 paramètre
const doubler = n => n * 2;
// ✅ BON : Parenthèses explicites
const doubler = (n) => n * 2;
// ❌ ERREUR : Pas de paramètres, parenthèses obligatoires
const obtenirDate = => new Date(); // Erreur !
// ✅ CORRECT : Parenthèses obligatoires
const obtenirDate = () => new Date();
6.4 Piège 4 : Le Contexte ‘this’
// ❌ ERREUR : Arrow function change 'this'
const utilisateur = {
nom: 'myra',
saluer: () => {
console.log(`Bonjour ${this.nom}`); // this = undefined
},
};
utilisateur.saluer(); // "Bonjour undefined"
// ✅ CORRECT : Fonction classique
const utilisateur = {
nom: 'myra',
saluer: function () {
console.log(`Bonjour ${this.nom}`); // this = utilisateur
},
};
utilisateur.saluer(); // "Bonjour myra"
📖 SECTION 7 : EXERCICES PROGRESSIFS
7.1 Niveau 1 : Débutant
Exercice 1 : Fonction Simple
// Créer une fonction qui retourne le double d'un nombre
function doubler(n) {
return n * 2;
}
console.log(doubler(5)); // 10
// Avec fonction fléchée
const doubler = (n) => n * 2;
console.log(doubler(5)); // 10
Exercice 2 : Fonction avec Deux Paramètres
// Créer une fonction qui calcule l'aire d'un rectangle
function calculerAire(largeur, hauteur) {
return largeur * hauteur;
}
console.log(calculerAire(5, 3)); // 15
// Avec fonction fléchée
const calculerAire = (largeur, hauteur) => largeur * hauteur;
console.log(calculerAire(5, 3)); // 15
Exercice 3 : Fonction avec Condition
// Créer une fonction qui vérifie si un nombre est pair
function estPair(n) {
return n % 2 === 0;
}
console.log(estPair(4)); // true
console.log(estPair(5)); // false
// Avec fonction fléchée
const estPair = (n) => n % 2 === 0;
console.log(estPair(4)); // true
console.log(estPair(5)); // false
7.2 Niveau 2 : Intermédiaire
Exercice 4 : Fonction qui Retourne un Objet
// Créer une fonction qui crée un utilisateur
function creerUtilisateur(nom, email) {
return {
nom: nom,
email: email,
dateCreation: new Date(),
};
}
console.log(creerUtilisateur('myra', 'myra@example.com'));
// Avec fonction fléchée
const creerUtilisateur = (nom, email) => ({
nom,
email,
dateCreation: new Date(),
});
console.log(creerUtilisateur('myra', 'myra@example.com'));
Exercice 5 : Fonction avec Validation
// Créer une fonction qui valide un mot de passe
function validerMotDePasse(mdp) {
if (mdp.length < 8) {
return 'Le mot de passe doit avoir au moins 8 caractères';
}
if (!/[A-Z]/.test(mdp)) {
return 'Le mot de passe doit contenir une majuscule';
}
if (!/[0-9]/.test(mdp)) {
return 'Le mot de passe doit contenir un chiffre';
}
return true;
}
console.log(validerMotDePasse('abc')); // "Le mot de passe doit avoir au moins 8 caractères"
console.log(validerMotDePasse('abcdefgh')); // "Le mot de passe doit contenir une majuscule"
console.log(validerMotDePasse('Abcdefgh')); // "Le mot de passe doit contenir un chiffre"
console.log(validerMotDePasse('Abcdefgh1')); // true
Exercice 6 : Fonction avec Tableau
// Créer une fonction qui calcule la moyenne
function calculerMoyenne(notes) {
let somme = 0;
for (let i = 0; i < notes.length; i++) {
somme += notes[i];
}
return somme / notes.length;
}
console.log(calculerMoyenne([10, 15, 20])); // 15
// Avec fonction fléchée et reduce
const calculerMoyenne = (notes) => notes.reduce((acc, n) => acc + n, 0) / notes.length;
console.log(calculerMoyenne([10, 15, 20])); // 15
7.3 Niveau 3 : Avancé
Exercice 7 : Fonction Composée
// Créer des fonctions qui se composent
const additionner = (a, b) => a + b;
const multiplier = (a, b) => a * b;
const diviser = (a, b) => a / b;
// Composer les fonctions
const calculer = (a, b, c) => {
const etape1 = additionner(a, b); // 5 + 3 = 8
const etape2 = multiplier(etape1, c); // 8 * 2 = 16
const etape3 = diviser(etape2, 2); // 16 / 2 = 8
return etape3;
};
console.log(calculer(5, 3, 2)); // 8
Exercice 8 : Fonction d’Ordre Supérieur
// Créer une fonction qui retourne une fonction
function creerMultiplicateur(facteur) {
return (n) => n * facteur;
}
const doubler = creerMultiplicateur(2);
const tripler = creerMultiplicateur(3);
console.log(doubler(5)); // 10
console.log(tripler(5)); // 15
Exercice 9 : Fonction avec Callback
// Créer une fonction qui accepte un callback
function traiterTableau(tableau, callback) {
const resultat = [];
for (let i = 0; i < tableau.length; i++) {
resultat.push(callback(tableau[i]));
}
return resultat;
}
const nombres = [1, 2, 3, 4, 5];
const doubles = traiterTableau(nombres, (n) => n * 2);
console.log(doubles); // [2, 4, 6, 8, 10]
const carres = traiterTableau(nombres, (n) => n * n);
console.log(carres); // [1, 4, 9, 16, 25]
📖 SECTION 8 : RÉSUMÉ VISUEL
8.1 Diagramme de Décision
┌─────────────────────────────────────────┐
│ Dois-je créer une fonction ? │
└────────────────┬────────────────────────┘
│
┌────────▼────────┐
│ Code complexe ? │
└────────┬────────┘
│
┌────────▼────────┐
│ OUI : Classique │
│ NON : Fléchée │
└────────┬────────┘
│
┌────────▼────────────────┐
│ Une seule ligne ? │
└────────┬────────────────┘
│
┌────────▼────────────────┐
│ OUI : Sans accolades │
│ NON : Avec accolades │
└────────┬────────────────┘
│
┌────────▼────────────────┐
│ Retourne un objet ? │
└────────┬────────────────┘
│
┌────────▼────────────────┐
│ O
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur JAVASCRIPT - LES FONCTIONS (GUIDE COMPLET POUR DÉBUTANTS). Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.