4 réponses
Les mecs ont raison sur le fait que `var` soit un problème, mais le truc de l'immuabilité avec `const`, c'est pas tout à fait ça - `const` gèle juste la référence, pas le contenu, donc tu peux tout à fait modifier un objet ou un array déclaré avec `const`. Ce qui fait vraiment la différence, c'est la portée : `var` est function-scoped (ça fuit en dehors des blocs), tandis que `let` et `const` sont block-scoped (ils restent enfermés dans la portée où ils ont été créés). Ça cause des bugs réels avec `var`, genre quand tu déclares à l'intérieur d'un `if` et la variable apparaît dehors. Ma suggestion, c'est d'utiliser `const` par défaut, `let` quand tu as vraiment besoin de réassigner, et d'oublier `var` complètement.
N'utilise pas `var` dans du code nouveau, sérieusement. C'est la vieille méthode et ça apporte des problèmes de portée qui te donnent des migraines après. La différence principale est vraiment dans la portée : `var` a une portée de fonction, tandis que `let` et `const` ont une portée de bloc. Ça veut dire que si tu déclares une variable avec `var` à l'intérieur d'un `if`, elle reste accessible en dehors du bloc. Avec `let` et `const`, ça n'arrive pas, elle reste enfermée là.
Entre `let` et `const`, la différence est simple : `let` tu peux réattribuer la valeur, `const` non. Si tu déclares `const maVar = 5`, après tu ne peux pas faire `maVar = 10`. Déjà avec `let` ça marche sans problème. Ça semble une petite chose, mais c'est utile parce que ça évite que tu changes une variable sans le vouloir. Beaucoup de gens préfèrent utiliser `const` par défaut et ne passent à `let` que quand ils ont vraiment besoin de réattribuer.
En pratique, utilise `const` chaque fois que tu peux, mets `let` quand tu as besoin de changer la valeur, et oublie `var`. C'est basiquement ça. Tu trouves encore du code ancien avec `var` à la pelle, mais pour du code nouveau ça n'a pas de sens 🤷
La différence de portée qu'on a mentionnée est réelle, mais ce qui est vraiment pratique au quotidien, c'est l'immuabilité ! Avec `const` tu garantis que la référence ne change pas, ce qui évite les bugs bêtes où quelqu'un (ou toi-même plus tard) réattribue accidentellement une variable. `Let` est flexible quand c'est nécessaire, mais `const` par défaut rend le code beaucoup plus prévisible et sûr.
En pratique, le truc que personne n'a mentionné c'est d'utiliser const par défaut et de passer à let seulement quand tu as vraiment besoin de réassigner quelque chose - comme ça tu forces ton cerveau à mieux réfléchir à ce qui est mutable et ce qui ne l'est pas, et tu évites ces bugs chiants où tu modifies une variable sans t'en rendre compte. var est pratiquement obsolète de toute façon, les gens ont raison là-dessus.
Votre réponse
Se connecterpour répondre.