Каким образом свойство функции me i (me.i) получает доступ к значению цикла?
Всем доброго времени суток. Выручайте. Не могу понять процесс в выделенном коде, а именно процесс получения i в первом и втором варианте. Как через свойство me.i мы получаем значение цикла и почему, второй вариант не работает? Интересна сам механизм происходящего, как shooter.i =i в первом случае находится первым в зоне видимости при поиске i и почему во втором варианте, так сказать, не "прикрепляются" значения текущего цикла, а берется последнее отработавшее? Прошу простить за пьяный код(
Первый участок:
function makeArmy() {
var shooters = [];
for (var i=1; i<10; i++) { var shooter = function me() {
alert(me.i);
};
shooter.i =i;
shooters.push(shooter);
}
return shooters;
}
var army = makeArmy();
army[0](); // выведет 0
army[1](); // выведет 1
Второй вариант:
///////////////////////////// А здесь при любом вызове будет последнее значение i.
for (var i=1; i<10; i++) { var shooter = function () {
alert(shooter.i);
}; shooter.i =i;