转载于:JS函数柯里化
柯里化:将函数作为参数或者返回值是函数的函数
function addNum(num) {
var sum = num
var func = function(v) {
sum += v
return func
};
func.toString = function () {
return sum
};
return func
}
addNum(1)(2)(3) // 6
也可以用箭头函数
let addNum = a => b => c => a + b + c
addNum(1)(2)(3)
通用函数的封装:
function curry(fn, ...args) {
return fn.length > args.length ? (...args2) => curry(fn, ...args, ...args2) : fn(...args)
}
function fn(a, b, c, d) {
console.log(a + b + c + d)
}
fn = curry(fn)
fn(1)(2)(3, 4) // 10