`var`, `let`, et `const` sont tous les trois utilisés pour déclarer des variables en JavaScript, mais ils ont des différences concernant leur portée et leur mutabilité.
`var` est la manière traditionnelle de déclarer des variables en JavaScript. Une variable déclarée avec `var` a une portée de fonction et est “hoisted”, c’est-à-dire qu’elle est remontée au haut de sa portée actuelle. Si elle est déclarée en dehors d’une fonction, elle a une portée globale.
`let` a été introduit avec ES6 (ECMAScript 6) et a une portée de bloc, c’est-à-dire que la variable existe uniquement dans le bloc de code où elle a été déclarée. `let` n’est pas hoisted.
`const` fonctionne comme `let`, mais ne peut pas être réaffectée. Cela signifie qu’une fois qu’une variable a été déclarée avec `const`, sa valeur ne peut pas être changée. Cependant, si cette valeur est un objet ou un tableau, les propriétés ou les éléments de l’objet ou du tableau peuvent être modifiés.
Résumé :
- `var` : portée de fonction, peut être réaffectée, hoisted.
- `let` : portée de bloc, peut être réaffectée, non hoisted.
- `const` : portée de bloc, ne peut pas être réaffectée, non hoisted.