文章目录
每天提高一点点
一、柯里化函数是什么?
柯里化函数:把接收多个参数的函数变成一个可以接收单一参数的函数,并且返回接受余下的参数并返回结果的新函数
二、举例
假定foo是一个计算和的柯里化函数,下面四种调用方式返回的结果都是true
foo(1,2,3) == 6
foo(1,2)(3) == 6
foo(1)(2,3) == 6
foo(1)(2)(3) == 6
不需要使用foo(1)(2)(3)()的方式来调用函数,进行比较时将会调用函数的toString方法返回结果;但是如果直接输出结果为add函数,但是可以通过Number(foo(1)(2)(3))的方法输出结果6
function foo(){
let args = [...arguments]
const add = (...rest) => {
args.push(...rest)
return add
}
// 关键,重写了函数内部的toString,当进行比较的时候就会调用toString
add.toString = function(){
return args.reduce((pre,cur) => {
return pre + cur
},0)
}
return add
}
需要使用foo(1)(2)(3)()的方式来调用函数
const foo = function (func){
let args = []
return function result(...rest){
args.push(...rest)
if (rest.length === 0) {
return args.reduce((pre,cur)=>{
return pre + cur
})
}else {
return result
}
}
}