Функция, которую addLoggingToDispatch
возвращает , закрывает параметр store
.Затем, когда эта функция вызывается, ей передается аргумент для action
.Поэтому, когда эта возвращаемая функция выполняется, она имеет доступ к action
(потому что это один из ее параметров) и store
(потому что она закрывается над параметром addLoggingToDispatch
).
Когда функция создается внутри другой функции, и внутренняя функция продолжает существовать после возврата внешней функции (потому что внешняя функция возвращает ее или она была добавлена в список функций, таких как список обработчиков событий и т. Д.),внутренняя функция имеет постоянную ссылку на контекст, в котором она была создана (вызов внешней функции) и все параметры / переменные в этом контексте (store
, в этом примере).
Вот более простой пример:
function createAdderFunction(a) {
return function(b) {
return a + b;
};
}
var addFive = createAdderFunction(5);
// Now, `addFive` is a function that will add 5 to whatever you call it with
console.log(addFive(2)); // 7
console.log(addFive(37)); // 42
var addTen = createAdderFunction(10);
// And `addTen` is a function that will add 10 to whatever you call it with
console.log(addTen(15)); // 25
// `addFive` and `addTen` are separate from each other and work independently
console.log(addFive(0)); // 5
console.log(addTen(0)); // 10