История изменений
Исправление Bad_ptr, (текущая версия) :
#> cat test.js
var last = 0
funcarray = [];
for (var i = 0; i < 10; i++) {
funcarray[i] = function() {
console.log("last: " + last)
}
last += 1
}
for (var i = 0; i < funcarray.length; i++) {
funcarray[i]()
}
last = 0
funcarray = [];
function copy_value(last) {
return function() {
console.log("last: " + last)
}
}
for (var i = 0; i < 10; i++) {
funcarray[i] = copy_value(last)
last += 1
}
for (var i = 0; i < funcarray.length; i++) {
funcarray[i]()
}
#> node test.js
last: 10 last: 10 last: 10 last: 10 last: 10 last: 10 last: 10 last: 10 last: 10 last: 10 last: 0 last: 1 last: 2 last: 3 last: 4 last: 5 last: 6 last: 7 last: 8 last: 9
Исходная версия Bad_ptr, :
Ну короче ты понял.
#> cat test.js
var last = 0
funcarray = [];
for (var i = 0; i < 10; i++) {
funcarray[i] = function() {
console.log("last: " + last)
}
last += 1
}
for (var i = 0; i < funcarray.length; i++) {
funcarray[i]()
}
last = 0
funcarray = [];
function copy_value(last) {
return function() {
console.log("last: " + last)
}
}
for (var i = 0; i < 10; i++) {
funcarray[i] = copy_value(last)
last += 1
}
for (var i = 0; i < funcarray.length; i++) {
funcarray[i]()
}
#> node test.js ...