помогите понять код с замыканием
Почему не видна переменная 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, время: 02:38. |