Вы не передаете параметры в упакованную функцию. Функция add
пытается суммировать два значения undefined
, и в результате получается NaN
(не число).
Вы должны передать параметры в упакованную функцию:
return function(a, b) {
return inputFunc(a, b); // <<<
}
Поскольку sometimes
- это функция более высокого порядка, которая требует обтекания различных функций с изменяющимся числом параметров, она не может знать реализацию обернутой функции. Чтобы убедиться в этом, вы должны использовать rest parameters (для сбора параметров в массив) и spread (для преобразования массива обратно в параметры) для передачи аргументов в упакованную функцию.
let add = (a, b) => {
return a + b;
};
myFunc = sometimes(add);
const outputArr = [];
for (let i = 0; i < 3; i++) {
outputArr.push(myFunc(2 + i, 3 + i));
}
function sometimes(inputFunc) {
return function(...args) {
return inputFunc(...args)
}
}
console.log(outputArr);