Le hoisting ou “hissage” est un comportement spécifique au langage JavaScript qui a trait à la déclaration des variables et des fonctions. Le principe du hoisting est que les déclarations de variables et de fonctions sont “hissées” ou “remontées” en haut de leur portée actuelle.
Cela signifie que vous pouvez utiliser des variables et des fonctions avant même de les avoir déclarées. Par exemple :
```
console.log(myVar); // undefined
var myVar = 5;
console.log(myVar); // 5
```
Dans cet exemple, la première instruction renvoie “undefined” et non une erreur de référence, car la déclaration de la variable `myVar` a été hissée au sommet de sa portée. Toutefois, l’initialisation (`= 5`) n’est pas hissée, d’où la valeur “undefined”.
Pour les fonctions, le hoisting se comporte légèrement différemment et hisse également la définition de la fonction :
```
console.log(myFunction()); // “Hello, world!”
function myFunction() {
return “Hello, world!”;
}
```
Dans ce cas, la fonction est utilisable avant sa déclaration dans le code, car sa déclaration et sa définition ont été hissées.
Il est important de noter que le hoisting est généralement considéré comme une mauvaise pratique car il peut rendre le code difficile à comprendre et à maintenir, et peut conduire à des bugs inattendus. En général, il est recommandé de toujours déclarer les variables et les fonctions en haut de leur portée pour éviter la confusion.