Salut, c'est Mathias je suis développeur web freelance et j'écris des tutoriels à propos des technologies Javascript, de la JAMSTACK et d'autres trucs.
© 2019 Mathias BéraudPublié le 21 oct. 2019
Depuis ES2015 il y a 3 manières de déclarer une variable et de lui assigner une valeur :
const
let
var
La plupart du temps on préfèrera utiliser const
, on a ainsi la garantie que la valeur ne peut être assignée qu'une fois et c'est donc plus sûr.
Cependant, si la valeur a vocation à changer on préfèrera presque toujours let
.
Même si var
peut encore être utiliser c'est fortement déconseillé si l'on veut un programme robuste et limiter les mauvaises surprises. Après tout var
est surtout là pour des questions de rétrocompatibilité et l'idée avec ES2015 était bien de le remplacer par let
.
Mais quelle est la différence?
La première différence, c'est le scope. Là où le scope de let
sera le block le plus proche, comme la plupart des languages populaires, pour var
ça sera la fonction la plus proche.
Par exemple une variable déclarée avec let
dans un if
ou un for
loop sera locale à ceux-ci alors qu'avec var
elle pourra être accessible à l'extérieur du block, ce qui pourrait causer des bugs.
Il faut toujours utiliser l'outil le moins puissant afin d'avoir un maximum de contrôle sur son code.
Un autre différence c'est qu'une déclaration avec var
hors d'une fonction crée une variable globale rattachée à l'objet global (window
) et peut être utiliser depuis l'extérieur de vos fichiers. Avec let
la variable est accessible mais n'est pas rattachée à l'objet global et ne peut donc pas être utilisée depuis l'extérieur.
Enfin let
renvoit une erreur si 2 variable du même nom sont déclarées en mode Strict, ce qui peut toujours nous éviter des erreurs idiotes.