Déclarations de fonctions et expressions en JavaScript

1. Déclaration de fonctions : la priorité à l'exécution

Syntaxe de base

Utilisation du mot-clé function pour définir directement une fonction :

function saluer() {
  console.log("Bonjour !");
}
Caractéristiques principales
  • Hoisting (élévation) : Les déclarations de fonctions sont automatiquement déplacées au début de leur portée, permettant de les appeler avant leur définition :
saluer(); // ✅ Fonctionne correctement
function saluer() {
  console.log("Bonjour à tous !");
}
Cas d'utilisation

Idéal pour les modules logiques réutilisables ou les fonctionnalités qui doivent être appelées en premier.

2. Expressions de fonctions : l'initialisation d'abord

Syntaxe de base

Affectation d'une fonction anonyme à une variable :

const additionner = function(a, b) {
  return a + b;
};
Différences clés
  • Pas de hoisting complet : Le nom de la variable est élevé, mais la fonction doit être affectée avant d'être appelée :
saluer(); // ❌ Erreur : non initialisé
const saluer = function() { console.log("Salut !"); };
  • Point-virgule obligatoire : Puisqu'il s'agit fondamentalement d'une instrucsion d'affectation de variable :
const afficher = function(msg) { console.log(msg); }; // ✅ Point-virgule requis
Cas d'utilisation

Convient pour les scénarios nécessitant une affectation flexible (comme les fonctions de rappel ou le choix dynamique de fonctions dans des conditions).

3. Comparaison et points d'erreurs courants

Tableau comparatif : Déclaration vs Expression
Caractéristique Déclaration de fonction Expression de fonction
Comportement de hoisting L'ensemble de la fonction est élevé Le nom de variable est élevé, mais pas l'affectation
Point-virgule à la fin Non requis Obligatoire
Portée d'utilisation Portée globale ou de fonction Peut être utilisée dans une portée de bloc
Exemple : Différence de portée
{
  fonctionInterne() { }  // En réalité élevée à la portée globale
  const fonctionInterneExpr = function() {};
}
console.log(fonctionInterne());          // ✅ S'exécute normalement
console.log(fonctionInterneExpr);     // ❌ ReferenceError (variable non définie)

4. Exercices pratiques

Exercice 1 : Implémenter une multiplication avecc déclaration
function multiplier(x, y) {
  return x * y;
}
console.log(multiplier(5, 6)); // 30
Exercice 2 : Créer un message de bienvenue avec expression
const accueil = function(nom) {
  return `Bienvenue, ${nom} !`;
};
console.log(accueil("Marie")); // Bienvenue, Marie !
Erreurs courantes
  • Oubli du point-virgule (à la fin d'une expression de fonction) :
const ecritureIncorrecte = function() {}   // ❌ Erreur : attendu un séparateur d'instruction

Conclusion

  • Besoin d'appeler avant la définition → Déclaration de fonction
  • Contrôle flexible de la logique → Expression de fonction

Pour les débutants, il est recommandé d'utiliser d'abord les déclarations de fonctions pour éviter les pièges liés au hoisting !

Étiquettes: JavaScript fonctions declarations expressions hoisting

Publié le 4 juin à 23h43