Как разомкнуть замыкание?
вот этот код возвращает 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, время: 11:13. |