@Yura07

Каким образом свойство функции 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;
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Этот вопрос и именно этот пример подробно разбирается на learn.javascript.ru в разделе Армия функций.

Нажмите кнопку Решение там внизу.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Negwereth
@Negwereth
lvivcss.com.ua
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы