erstellt von max, am 12.11.2008 15:57
also folgendes script:
for (var i=0; i<2; i++) {
var j = i;
setTimeout(function() { alert("i:" + i + ", j:" + j) }, 1);
}
was wuerde man hier erwarten: also ich:
- 2 alerts
- wobei im einen i:2 j:0
- und im andern i:2 j:1 steht
wieso?
- also die variable i wird ausserhalb vom for scope deklariert, d.h. die zaehlt durch und bleibt bei der 2 stehen.
- und die variable j wird innerhalb vom for scope deklariert, d.h. dadurch dass ich bei setTimeout eine closure uebergebe, sollte der wert einmal 0 und dann 1 aufweisen.
aber! das ergebnis ist zweimal i:2 j:1, und dass versteh ich ueberhaupt nicht. kann mir das jemand erklaeren? oder ist das so eine nicht ganz logische JS optimierung der browser (damit die j variable nicht jedesmal deklariert werden muss ????).
3 Kommentar(e):
Neuen Kommentar schreiben: