нужна помощь в понимании кода JS [закрыто]
Привет, я новичок в JavaScript, и я не могу понять следующий код:
var createAdders = function () {
var fns = [];
for (var i = 1; i < 4; i++) {
fns[i] = (function (n) {
return i + n;
});
}
return fns;
}
var adders = createAdders();
adders[1](7); //11 ??
adders[2](7); //11 ??
adders[3](7); //11 ??
Из того, что я понимаю, 7 передается в качестве аргумента, ноcreateAdders()
Безразлично»t присваивает 7 любой переменной, значит ли это, что 7 передается следующей функции внутриcreateAdders()
то есть анонимная функция и назначенная переменная.n
Правильна ли моя логика?
Код выше, кажется, работает, но для каждого вызова результат равен 11. Я нашел этот код в очень надежном блоге в качестве примера для ситуации, когда замыкания были бы полезны. Приведенный выше код затем изменяется следующим образом, чтобы процитировать Преимущества закрытий.
var createAdders = function () {
var fns = [];
for (var i = 1; i < 4; i++) {
(function (i) {
fns[i] = (function (n) {
return i + n;
});
})(i) //// why is (i) used here? what purpose does it serve??////
}
return fns;
}
var adders = createAdders();
adders[1](7); //8
adders[2](7); //9
adders[3](7); //10
Применяется ли здесь та же логика?
Мне нужно понять, как n присваивается значение 7
Почему (i) используется в конце функции в новом коде? I '