# Le hoisting
---
## Qu'est ce que le hoisting ?
---
Le hoisting, 'hissage' ou 'remontée' en francais, est le fait qu'au moment de la compilation, le moteur va hisser certaines déclarations en haut du contexte d'éxecution.
---
Comme vous le savez, vous savez que l'utilisation d'une variable se fait en trois temps :
- Déclaration
- Initialisation
- Utilisation
---
Dans l'ordre, la déclaration et l'initialisation se fait normalement avant l'utilisation. Ceci est valable pour les variables et les fonctions.
Vous avez cependant remarqué que ce principe ne s'applique pas forcément en javascript.
Cela est rendu possible par une mécanique en JS que l'on appelle le "hoisting".
---
## Le fonctionnement
---
Lors de son interprétation du code, le moteur va récupérer toutes les déclarations de variables pour les faire remonter tout en haut.
JavaScript hisse seulement les déclarations, pas les initialisations. Si vous utilisez une variable qui est déclarée et initialisée après l'avoir utilisée, sa valeur sera undefine.
---
:::info
Même si Javascript permet d'utiliser des variables avant de les déclarer, ce n'est pas une très bonne pratique.
:::
:::warning
Attention, le hoisting ne fonctionne pas de la même façon pour var et const ou let. En effet, const et let sont hissés au début du script mais ne sont pas initialisées automatiquement à undefined comme var, ce qui peut causer une erreur de référence.
:::
---
## Quelques exemples
---

---

---

---

---

---

---

{"metaMigratedAt":"2023-06-16T15:30:27.254Z","metaMigratedFrom":"YAML","title":"Le hoisting","breaks":true,"slideOptions":"{\"theme\":\"night\",\"transition\":\"fade\"}","contributors":"[{\"id\":\"736cd1db-0604-4043-a3fa-c5b9c85a2b58\",\"add\":2501,\"del\":658},{\"id\":\"7d7d7ba4-010d-472e-be71-68cea585bd52\",\"add\":673,\"del\":640}]"}