J'étais juste en train de linting un code JavaScript en utilisant JSHint. Dans le code, j'ai deux boucles for, toutes deux utilisées comme ceci :
for (var i = 0; i < somevalue; i++) { ... }
Les deux boucles for utilisent donc la variable i pour l'itération.
Maintenant, JSHint me montre une erreur pour la deuxième boucle for : "'i' est déjà défini". Je ne peux pas dire que ce n'est pas vrai (car c'est évidemment le cas) mais j'ai toujours pensé que cela n'avait pas d'importance puisque la var i n'est utilisée qu'à cet endroit précis.
Est-ce une mauvaise pratique d'utiliser les boucles for de cette façon ? Devrais-je utiliser une variable différente pour chaque boucle for de mon code, par exemple
//for-loop 1
for (var i = 0; ...; i++) { ... }
//for-loop 2
for (var j = 0; ...; j++) { ... }
Ou est-ce une des erreurs que je peux ignorer (parce que cela ne casse pas mon code, il fait toujours ce qu'il est censé faire) ?
En fait, JSLint arrête de valider à la première boucle for parce que je ne définis pas var i au début de la fonction (c'est pourquoi je suis passé à JSHint en premier lieu). Donc selon l'exemple de cette question : Dois-je utiliser la validation JavaScript JSLint ou JSHint ? - Je devrais utiliser des boucles for comme ça de toute façon pour confirmer JSLint :
...
var i;
...
//for-loop 1
for (i = 0; ...; i++) { ... }
...
//for-loop 2
for (i = 0; ...; i++) { ... }
Cela me semble également bon, car de cette façon je devrais éviter les deux erreurs dans JSLint et JSHint. Mais ce que je ne sais pas, c'est si je dois utiliser une variable différente pour chaque boucle for comme ceci :
...
var i, j;
...
//for-loop 1
for (i = 0; ...; i++) { ... }
//for-loop 2
for (j = 0; ...; j++) { ... }
Existe-t-il une meilleure pratique en la matière ou puis-je choisir l'un des codes ci-dessus, c'est-à-dire choisir "ma" meilleure pratique ?