Heim > Web-Frontend > js-Tutorial > Hauptteil

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

WBOY
Freigeben: 2016-05-16 16:36:28
Original
1297 Leute haben es durchsucht

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage