# 函数柯里化
# 什么是柯里化
- currying,把接受多个参数的函数变换成接受一个单一参数的函数的技术
# 为什么需要柯里化
- 参数复用,减少代码冗余
# 柯里化的实现
sum(1,2)(3)
function currying(fn, curArg) {
return function () {
var args = [].slice.call(arguments)
if (curArg !== undefined) {
args = curArg.concat(args)
}
if (fn.length > args.length) {
return currying(fn, args)
}
return fn.apply(null, args)
}
}
function sum(a, b, c) {
console.log(a + b + c);
}
currying(sum)(1, 2)(2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16