函数柯里化: 一个函数只传部分参数调用,让其返回一个函数处理剩余参数。
let add = x => y => z => x + y + z
add(1)(2)(3)
function add2(x) {
return function (y) {
return function (z) {
return x + y + z
}
}
}
add2(1)(2)(3)
用途:
- 参数复用
- 对参数可单独处理逻辑
function currying(fn) {
function curried(...args) {
if (args.length >= fn.length) {
return fn.apply(this, args)
} else {
return function (...args2) {
return curried.apply(this, [...args, ...args2])
}
}
}
return curried
}
let foo = currying(function (x, y, z) { return x + y + z })
foo(1, 2)(2)