Pages

Hoisting : le saviez vous ?

hoisting = La remontée de variables

Les déclarations de variables sont traitées avant que n'importe quel autre code soit exécuté. Les affectations sont réalisées après.

var x;
x = 2;

est équivalent à

x = 2;
var x;

Comprenons les exemples suivants.

La variable a n'est pas déclarée = error



La variable b est déclarée et affectée



La variable b est déclarée (hoisting) mais pas affectée. il n'y a donc pas de message d'erreur.


Notez l'équivalence des deux fonctions suivantes :

function testHoisting (cond){

  if (cond) {
    console.log(b);
  }
  else {
    var b = 2;

  }  
}

function testHoisting (cond){
  var b;
  if (cond) {
    console.log(b); // ici b est déclaré, pas affecté.
  }
  else {
    b = 2;
  }  
}



Introduction de let : retour vers la notion de portée de bloc.

function testHoisting (cond){
   
  if (cond) {
    console.log(b);
  }
  else {
    let b = 2;
    console.log(b);
  }    
}

🪳testHoisting(true);
🆒testHoisting(false);