J'ai l'extrait de code suivant.
function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function () {
alert(i);
};
document.body.appendChild(link);
}
}
Le code ci-dessus est pour la génération 5 liens et de lier chaque lien avec un événement d'alerte pour afficher le lien de l'id. Mais Ça ne fonctionne pas. Lorsque vous cliquez sur les liens générés, ils disent tous "lien 5".
Mais les codes suivants extrait fonctionne comme notre attente.
function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function (num) {
return function () {
alert(num);
};
}(i);
document.body.appendChild(link);
}
}
Ci-dessus 2 extraits sont cités à partir d' ici. Comme l'auteur de l'explication semble la fermeture de fait de la magie.
Mais comment elle fonctionne et comment la fermeture permet de travailler sont tous au-delà de ma compréhension. Pourquoi le premier ne fonctionne pas, alors que le second fonctionne? Quelqu'un peut-il donner une explication détaillée de la magie?
merci.