Sortie de valeur consécutive avec setTimeout dans for-Loop
Vous rencontrez un problème lorsque vous tentez d'imprimer des valeurs consécutives à l'aide de setTimeout dans une boucle for, mais cela entraîne l'impression de la dernière valeur deux fois. Cela se produit car lorsque vous utilisez la variable i directement dans la fonction setTimeout, sa valeur est mise à jour au moment de l'exécution de la fonction. Pour résoudre ce problème, il est essentiel de créer une copie distincte de i pour chaque itération.
La solution fournie y parvient en déclarant une fonction d'assistance appelée doSetTimeout. Dans cette fonction, une nouvelle variable est déclarée pour contenir la valeur actuelle de i, qui est ensuite passée en argument lors de la création du délai d'attente. Cela garantit que chaque fonction de délai d'attente possède sa propre copie distincte de i, éliminant ainsi tout problème de mise à jour des valeurs lors de l'exécution.
function doSetTimeout(i) { setTimeout(function() { alert(i); }, 100); } for (var i = 1; i <= 2; ++i) doSetTimeout(i);
Avec cette solution, vous pouvez imprimer avec succès les valeurs consécutives 1 et 2 comme prévu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!