Maison > Article > interface Web > Problèmes auxquels vous devez prêter attention lors de l'utilisation de la fonction de fermeture de setTimeout() de Javascript
Cet article présente principalement les problèmes auxquels il faut prêter attention lors de l'utilisation de la fonction de fermeture de setTimeout(0) de Javascript. Les amis dans le besoin peuvent s'y référer
setTimeout est souvent utilisé pour retarder l'exécution de. une certaine fonction. L'utilisation est la suivante :
Copier le code Le code est le suivant :
setTimeout(function(){ … }, timeout);
Parfois setTimeout(function. ..,0) est utilisé pour le traitement asynchrone ; par exemple :
Copier le code Le code est le suivant :
function f(){ … // get ready setTimeout(function(){ …. // do something }, 0); return …; }
Avant le processeur de fonction défini par setTimeout, la fonction f renvoie ;
Soyez particulièrement prudent lorsque vous utilisez un traitement asynchrone, en particulier lorsque vous utilisez des fonctionnalités de fermeture
Par exemple :
Copier le code Code comme suit :
for(var i = 0 ; i < 10; i++){ setTimeout(function(){ console.log(i); }, 0); }Pour les étudiants qui utilisent cette méthode pour la première fois, ils peuvent penser que le programme imprimera 0...9, mais le résultat affichera en effet 10 10s ;
Le problème est que lorsque la boucle est terminée, la fonction est exécutée et i est devenu 10, ce qui est 10 utilisé dans console.log(i) !
Si votre objectif est d'imprimer 0...9, alors vous pouvez changer la manière et utiliser les paramètres de fonction pour enregistrer 0...9 (en fait, les fermetures sont également utilisées) :
Copiez le code Le code est le suivant :
for(var i = 0 ; i < 10; i++){ setTimeout((function(i){ return function(){ console.log(i); } })(i), 0); }Pour d'autres problèmes auxquels il faut prêter attention lors de l'utilisation de la fonction de fermeture de setTimeout de Javascript ( ), veuillez faire attention au site Web PHP chinois pour les articles connexes !