forked from thmoon-team/IU5-Frontend-2022
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2.js
31 lines (28 loc) · 804 Bytes
/
2.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* Напишите функцию curry(f),
* входные данные - функция
* выходные данные - функция, или результат если количество аргументов достаточно
* Примеры:
*
* function add(a, b, c) {
* return a + b + c;
* }
*
* console.log(curry(add)(1)(2)(3)); //6
* console.log(curry(add)(1)(2, 3)); //6
* console.log(curry(add)(1, 2, 3)); //6
*/
function add(a, b, c) {
return a + b + c;
}
function curry(f) {
let len = f.length;
return function first(...args) {
if (args.length === len) return f(...args);
return function(...args2) {
return first(...(args.concat(args2)));
};
}
}
module.exports = curry;
console.log(curry(add)(1)(2)(3)); //6