Maison  >  Article  >  interface Web  >  Utilisez des fonctions anonymes auto-exécutables pour résoudre le problème de l'utilisation des fermetures dans les compétences for loops_javascript

Utilisez des fonctions anonymes auto-exécutables pour résoudre le problème de l'utilisation des fermetures dans les compétences for loops_javascript

WBOY
WBOYoriginal
2016-05-16 16:36:281290parcourir

Ce code génère 10 10 au lieu des 0 à 9 attendus, car la fermeture contient une référence à i, puis i est devenu 10 lorsque la fonction est exécutée

function f1(){
for(var i = 0; i < 10; i++) {
setTimeout(function() {
alert(i); 
}, 1000);
}
}
f1();

Pour résoudre les problèmes ci-dessus, vous pouvez utiliser des fonctions anonymes auto-exécutables

function f2(){
for(var i = 0; i < 10; i++) {
(function(e) {
setTimeout(function() {
alert(e); 
}, 1000);
})(i);
}
}
f2();

La fonction anonyme ici prend i comme paramètre, et le e ici aura une copie de i, et la référence est une référence à e, ce qui évite le problème ci-dessus

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn