Разбираю следующий пример из книжки из раздела Функции высшего порядка. Не могу понять откуда появилась переменная "а" в функции mapper(f), как функция mapper смогла передать массив "а" функции map?
const map = function(a, ...args) {
return a.map(...args)
}
function mapper(f) {
return a => map(a, f)
}
const increment = (x) => {
return x+1
}
const incrementAll = mapper(increment)
let res = incrementAll([1,2,3] )
console.log(res)
Алексей Беспалов, Вы из функции другую функцию возвращаете. Порождённая функция будет видеть все переменные родительской функции и глобальной области видимости.
Я не понимаю теперь вот этот момент: const incrementAll = mapper(increment)
в этой строке судя по отладке и скобок сразу происходит выполнение функций mapper и map. Но ведь они без данных, в этот момент. Или в этот момент не происходит выполнение, а только присвоение?
Алексей Беспалов, И даже проще можно const result = [1, 2, 3].map((x) => x + 1);
или const result = [2, 3, 4];
А пример в книге усложнён искусственно, чтобы дать определённую тему.