49. Hoisting de fonction
Le Hoisting (Levage) est le comportement de JavaScript consistant à déplacer les déclarations (mais pas les assignations) vers le haut de la portée actuelle pendant la compilation.
1. Hoisting de déclaration de fonction
La définition entière de la fonction est levée, ce qui signifie que vous pouvez appeler la fonction n'importe où dans la portée, même avant sa définition.
javascript hello(); // Résultat : 'La fonction marche !'
function hello() { console.log('La fonction marche !'); }
2. Hoisting de variable var
Seule la déclaration (var name;) est levée, mais l'assignation (= 'Valeur') reste à sa place. La variable est initialisée avec undefined.
javascript console.log(x); // Résultat : undefined (pas une erreur !) var x = 5;
3. Hoisting de let et const
let et const sont techniquement levés, mais ils sont placés dans un état appelé Zone Morte Temporelle (TDZ - Temporal Dead Zone) jusqu'à ce que leur ligne de déclaration soit atteinte. Y accéder dans la TDZ entraîne une ReferenceError.
javascript // console.log(y); // ERREUR : Impossible d'accéder à 'y' avant l'initialisation (TDZ) let y = 5;
Conclusion : Fiez-vous au hoisting de fonction si nécessaire, mais déclarez toujours les variables let/const avant de les utiliser.