闭包实现函数柯里化,js实现
- 函数柯里化定义
- 代码实现
函数柯里化定义
柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术
即函数可以接收单个或多个参数,并按照单个参数进行处理,以下是调用例子
代码实现
实现方式采用闭包来实现
const currying = function() {
// 柯里化函数参数不限制个数,可以任意组合,所以利用arguments来获取
let args = [...arguments];
// 由于柯里化函数可以用括号多次调用,因此没执行一次都要返回柯里化函数继续处理
// 利用闭包,可以直接调用父级函数的变量
let callback = function() {
// 参数统一存储到父级
args.push(...arguments)
// 由于需要括号连续调用,所以需要返回本身引用
return callback
}
// 按照参数处理,并通过+号隐式获取返回值
callback.toString = function() {
return args.reduce((prev, cur) => {
return prev + cur
}, 0)
}
return callback
}
console.log('柯里化', +currying(2, 6)(5))