При помощи функций call/apply/bind реализовать функцию, которая будет оборачивать другую функцию таким образом, чтобы результатом была тоже функция, но при этом она могла принимать заданное количество аргументов.
Функция принимает на вход другую функцию и число аргументов которое необходимо собрать чтобы передать в функцию которая была передана первым аргументом.
Пример:
function watchArgs(fn, argumentsLength) {
// Реализовать данную функцию
}
function test1(a, b, c) {
return a + b + c;
}
function test2(a, b, c, d) {
return a + b + c + d;
}
let result;
const t1 = watchArgs(test1, 3);
result = t1(); // все еще функция, необходимо учитывать если аргументы не были переданы
result = t1(1, 2); // все еще функция
result = t1(3); // 6 - результат выполнения функции test1 с аргументами 1, 2 и 3
const t2 = watchArgs(test2, 4);
result = t2(1);
result = t2(1);
result = t2(1, 1); // 4
result = t2(5); // 4