Les fermetures sont une de ces choses qui ont été beaucoup discuté, mais cette situation apparaît beaucoup pour moi et je suis toujours à la gauche de me gratter la tête.
var funcs = {};
for (var i = 0; i < 3; i++) { // let's create 3 functions
funcs[i] = function() { // and store them in funcs
console.log("My value: " + i); // each should log its value.
};
}
for (var j = 0; j < 3; j++) {
funcs[j](); // and now let's run each one to see
}
Il affiche ceci:
Ma valeur: 3
Ma valeur: 3
Ma valeur: 3
Alors que j'aimerais qu'il sortie:
Ma valeur: 0
Ma valeur: 1
Ma valeur: 2
Quelle est la solution à ce problème de base?