2017-03-01 13 views
1


J'ai un problème, je ne sais pas pourquoi si je l'appelle tab[4]() ou tout autre numéro < 0,9> le résultat dans la console est toujours 10. j'étais deviner le résultat de i serait iconsole.log (i) dans une fonction

var tab = []; 
for (var i = 0; i < 10; i++) { 
    tab[i] = function(){ 
     console.log(i) 
    } 
} 
+1

Il est 'I'. 'i' est' 10' quand vous exécutez la fonction. Vous avez une boucle for qui l'incrémente chaque fois que vous faites le tour de la boucle jusqu'à ce qu'elle atteigne 10 et que la boucle s'arrête. – Quentin

+0

Lire http://stackoverflow.com/questions/38944850/for-variable-within-getjson-displayed-wrong/38944865#38944865 –

+0

Une bonne explication à ceci peut être trouvée ici: https://medium.freecodecamp.com/ 3 questions à surveiller dans une interview javascript 725012834ccb # c5f5. La solution la plus simple consiste à remplacer 'var i = 0' par' let i = 0'. – str

Répondre

0

var tab = []; 
 
for (var i = 0; i < 10; i++) { 
 
    let a = i; 
 
    tab[i] = function(){ 
 
     console.log(a); 
 
    } 
 
} 
 
    
 
tab[1](); 
 
tab[2]();

+1

Quelques commentaires concernant la downvote? – piotrbienias

1

Essayez suivant

var tab = []; 
 
for (var i = 0; i < 10; i++) { 
 
    tab[i] = (function(i) { 
 
    return function() { 
 
     console.log(i) 
 
    } 
 
    })(i); 
 
}