Le guide de Babel sur ES6 dit:
letest le nouveauvar.
Apparemment, la seule différence est que la varportée est affectée à la fonction actuelle , tandis que letle bloc actuel l’ est . Il y a quelques bons exemples dans cette réponse .
Je ne vois aucune raison d'utiliser le varcode ES6. Même si vous souhaitez étendre une variable donnée à l'ensemble de la fonction, vous pouvez le faire leten plaçant la déclaration en haut du bloc de fonction, ce que vous devriez faire de vartoute façon pour indiquer l'étendue réelle. Et si vous voulez inclure plus finement quelque chose dans un forbloc ou quelque chose, vous pouvez le faire aussi.
Donc, mon instinct est de cesser varcomplè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ù varserait préférable sur let?
letdé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 varrend le tout plus clair que simplement le localiser au sommet.
varqui existe toujours est la compatibilité ascendante. Si ce n’était pas le cas, ils se seraient varcomplètement retirés , ou n’auraient jamais été introduits letau départ, changeant plutôt la sémantique de varce qu’elle aurait dû être depuis le début .
varme semblent minces et insuffisantes pour justifier un troisième type de variable qui saute aux yeux. Vous pouvez définir une letfonction entière en la plaçant tout simplement en haut de la fonction, ce qui est beaucoup plus clair que l’écriture vardans 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 letfonction 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 varsemblent 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.
varun 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" .