Почему функция так работает?
function sum(a) {
const add = function(b) {
if (b !== undefined) {
console.log(b);
a = a + b;
return add;
}
return a;
}
return add;
}
console.log(sum(1)(2)(3)(4)()) //10
Почему sum возвращает 10, если b нигде не передается? Почему console.log(b) возвращает 2,3,4? Где 1 потрялся?
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Функция sum возвращает другую функцию, где имя параметра b. Первый вызов sum с аргументом (1) вернёт функцию add. Последующие вызовы (2),(3),(4) будут уже этого самого метода. У которого у параметра имя b и будет принимать эти самые значения
После первого вызова функции sum мы получили фактически вот это
function add(b) {
if (b !== undefined) {
console.log(b);
a = a + b;
return add;
}
return a;
}
На самом деле даже это не всё. Но пока бОльшее знать не нужно