Heim  >  Artikel  >  Web-Frontend  >  Verwenden Sie selbstausführende anonyme Funktionen, um das Problem der Verwendung von Abschlüssen in for-loops_javascript-Kenntnissen zu lösen

Verwenden Sie selbstausführende anonyme Funktionen, um das Problem der Verwendung von Abschlüssen in for-loops_javascript-Kenntnissen zu lösen

WBOY
WBOYOriginal
2016-05-16 16:36:281290Durchsuche

Dieser Code gibt 10 10s anstelle der erwarteten 0 bis 9 aus, da der Abschluss einen Verweis auf i enthält und i dann bei Ausführung der Funktion zu 10 geworden ist

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

Um die oben genannten Probleme zu lösen, können Sie selbstausführende anonyme Funktionen verwenden

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

Die anonyme Funktion hier verwendet i als Parameter, und das e hier hat eine Kopie von i, und die Referenz ist eine Referenz auf e, wodurch das obige Problem vermieden wird

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn