Hoisting

JavaScript 🟢 Junior

Définition

Mécanisme par lequel les déclarations de variables (var) et fonctions sont remontées en haut de leur scope durant la phase de compilation. Les let/const sont hoistees mais restent dans la Temporal Dead Zone.

Analogie

Comme un prof qui note tous les noms au tableau avant le début du cours, mais ne remplit les notes qu'au fur et a mesure.

Exemple de code

console.log(a); // undefined (var hoiste)
var a = 5;

sayHi(); // OK, declaration hoistee
function sayHi() { console.log('Hi'); }

console.log(b); // ReferenceError (TDZ)
let b = 10;

Cas d'usage

Comprendre pourquoi une variable vaut undefined au lieu de lancer une erreur, debugger l'ordre d'exécution.

Anti-pattern

Utiliser var et compter sur le hoisting au lieu de déclarer les variables en haut du scope.
#core#interview#fondamental

En entretien

  1. C'est quoi le hoisting ?

    C'est le mécanisme par lequel les déclarations de var et de fonctions sont remontées en haut de leur scope durant la phase de compilation. C'est comme un prof qui note tous les noms au tableau avant le début du cours, mais ne remplit les notes qu'au fur et à mesure.

  2. Pourquoi console.log(a) avant var a = 5 affiche undefined et pas une erreur ?

    Parce que la déclaration var a est hoistée mais pas son initialisation, donc a existe déjà avec la valeur undefined au moment du log. C'est différent d'un let/const qui serait en Temporal Dead Zone et lancerait un ReferenceError.

  3. Pourquoi c'est un anti-pattern de compter sur le hoisting avec var ?

    Parce que ça rend le code imprévisible au lieu de déclarer clairement les variables en haut du scope. Il vaut mieux déclarer explicitement en haut plutôt que de s'appuyer sur ce comportement implicite.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre