柯里化(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))
}
}
}
}