Как разомкнуть замыкание?
вот этот код возвращает 2, 2, 2
как сделать, чтобы он возвращал 0, 1, 2? я уже стал создавать переменную и присваивать в нее i через parseInt(i.toString()), и потом класть в алерт - все-равно не помогает
var data = [];
for(var i = 0; i < 3; i++) {
var b = parseInt(i.toString());
var curr = function() { alert(b); };
data.push(curr);
}
for(var j = 0; j < 3; j++) {
data[j]();
}
http://jsfiddle.net/ateregulov/kdZ9h/ |
Классика жанра.
var data = [];
for(var i = 0; i < 3; i++) {
var curr = (function(i) { return function() { alert(i); } })(i);
data.push(curr);
}
for(var j = 0; j < 3; j++) {
data[j]();
}
Ну, а вообще желательно ознакомиться с этим: http://learn.javascript.ru/closures http://learn.javascript.ru/closures-usage |
Название темы - зачёт.)
|
Цитата:
|
Цитата:
добавил всего один new и вторая функция не нужна!!!! |
| Часовой пояс GMT +3, время: 17:34. |