помогите понять код с замыканием
Почему не видна переменная i внутри ф-ции. Знаю что дело в замыкании. Читал но понять не могу. И как можно переделать чтобы i была доступна в function()?
var i=0;
var arr=[];
for ( i=0; i<5; i++ )
{
arr.push((function()
{
alert(i);
}
));
}
//alert(i);
var j=0;
//alert(arr); //массив содержит 5 expression functions
for ( j=0; j<5; j++ )
{
arr[j](); // вызов expression function - вызов на месте через выражение '()'
}
|
Переменная i и так видна внутри функции, но после выполнения цикла она всегда имеет значение 5.
|
а как сделать чтобы выводились алерты 0,1,2,3,4? в цикле по переменной j именно надо не быть привязаным к i. Как можно модифицировать?
|
alexandr_poskrobka,
var i=0;
var arr=[];
for ( i=0; i<5; i++ )
{
arr.push((function(x) {
return function() {
alert( x );
};
})(i));
}
//alert(i);
var j=0;
//alert(arr); //массив содержит 5 expression functions
for ( j=0; j<5; j++ )
{
arr[j](); // вызов expression function - вызов на месте через выражение '()'
}
|
Спасибо то что надо
|
| Часовой пояс GMT +3, время: 16:42. |