-
Notifications
You must be signed in to change notification settings - Fork 0
/
curry.js
28 lines (24 loc) · 730 Bytes
/
curry.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
const curry = (func) => {
return curriedFn = (...args) => {
// 判断实参、形参个数
if (args.length < func.length) {
return (...args1) => {
// 这个func用来获取arguments
//下面三种写法都可以
// return curriedFn(...args.concat(Array.from(args1)));
// return curriedFn(...args.concat(...args1));
return curriedFn(...args.concat(args1));
}
}
return func(...args);
}
}
const getSum = (a, b, c) => {
return a + b + c;
};
const curried = curry(getSum);
console.log(curried(1, 2, 3));
console.log(curried(1,2)(3));
console.log(curried(1)(2, 3));
console.log(curried(1)(2)(3));
//from:https://juejin.cn/post/7040813656371625998