var i, f = [ ], base = 1;
for (i = 0; i < 10; i++) {
f.push(function() { return base + i; });
}
alert(f[0]());
Resultaat: -> 11
Nesten van functions maakt niet uit:
var i,
f = [ ],
base = 1;
for (i = 0; i < 10; i++) {
f.push(function() { return function() { return base + i; } });
}
alert(f[0]()());
-> 11
Solution:
De enige oplossing is de volgende:
var i,
f = [ ],
base = 1;
for (i = 0; i < 10; i++) {
f.push((function(base, i) {
return function() { return base + i; }
})(base, i));
}
alert(f[0]());
-> 1
a must read on the subject: https://spin.atomicobject.com/2014/10/20/javascript-scope-closures/
Geen opmerkingen:
Een reactie posten