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 :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.
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);