Le guide de Babel sur ES6 dit:
let
est le nouveauvar
.
Apparemment, la seule différence est que la var
portée est affectée à la fonction actuelle , tandis que let
le bloc actuel l’ est . Il y a quelques bons exemples dans cette réponse .
Je ne vois aucune raison d'utiliser le var
code ES6. Même si vous souhaitez étendre une variable donnée à l'ensemble de la fonction, vous pouvez le faire let
en plaçant la déclaration en haut du bloc de fonction, ce que vous devriez faire de var
toute façon pour indiquer l'étendue réelle. Et si vous voulez inclure plus finement quelque chose dans un for
bloc ou quelque chose, vous pouvez le faire aussi.
Donc, mon instinct est de cesser var
complètement d’ utiliser lors de l’écriture de code ES6.
Ma question est la suivante: est-ce que je me trompe? Y at-il un cas légitime où var
serait préférable sur let
?
let
déclaration au sommet d'une fonction, je pense qu'il est tout aussi évident que vous vouliez l'étendre à l'ensemble de la fonction. Je ne pense pas que l’utilisation var
rend le tout plus clair que simplement le localiser au sommet.
var
qui existe toujours est la compatibilité ascendante. Si ce n’était pas le cas, ils se seraient var
complètement retirés , ou n’auraient jamais été introduits let
au départ, changeant plutôt la sémantique de var
ce qu’elle aurait dû être depuis le début .
var
me semblent minces et insuffisantes pour justifier un troisième type de variable qui saute aux yeux. Vous pouvez définir une let
fonction entière en la plaçant tout simplement en haut de la fonction, ce qui est beaucoup plus clair que l’écriture var
dans un bloc (afin de l’extraire de ce bloc afin que vous puissiez ensuite l’utiliser en dehors du bloc). - bizarre). Il prévient que si vous définissez une let
fonction comme une fonction, "c'est simplement la position qui indique la différence, plutôt que la syntaxe", mais je pense que c'est une bonne chose.
var
. les exemples qu’il donne à garder var
semblent artificiels - et sont basés sur de graves erreurs de codage. Il est bien mieux de se heurter à une erreur et d’être forcé de la corriger que d’utiliser des fonctions de langage qui laissent l’échapper! Ensuite, nous vous conseillons de tout inclure dans un essai / accrochage pour éviter les collisions? Le reste de ce lien est bon mais je ne suis pas du tout d'accord avec cela.
var
un indicateur conscient du fait que cette variable est destinée à être étendue à l'ensemble de la fonction pourrait être une convention utile de "documentation automatique" .