Skip to main content

柯里化(Currying)

柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。

造成闭包,性能低 例如

function add(a, b) {
return a + b
}

// 执行 add 函数,一次传入两个参数即可
add(1, 2) // 3

// 假设有一个 curry 函数可以做到柯里化
var addCurry = curry(add)
addCurry(1)(2) // 3

实现

function curry(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func.apply(this, args)
} else {
return function (...args2) {
return curried.apply(this, args.concat(args2))
}
}
}
}