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
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