柯里化的概念:
当函数有多个参数的时候,调用一个函数只传递部分参数(这部分参数会固定不变),并返回一个新的函数,而新的函数传递剩余的参数,并返回结果
//硬编码 // 柯里化可以解决硬编码问题
function checkAge(age) {
let min = 18;//硬编码
return age >= min;
}
//普通纯函数
function checkAge(min,age) {//该函数输入相同的值始终会得到相同的输出,所以属于纯函数。而且内部的逻辑不依赖外部的变量,内部的变量也没有固定写死的值,不存在硬编码问题
return age >= min;
}
//函数柯里化 :将参数拆成及部分,将函数拆成有闭包的多个函数
function checkAge(min) {
return function(age) {
return age >= min;
}
}
//es6箭头函数
let checkAge = (min) => {return (age) => {return age >= min;}}
let checkAge = min => (age => age >= min);
//箭头函数内部需要返回的函数可以直接()包裹表示;箭头函数中如果只写一句代码,相当于return 这句代码
// console.log(checkAge(18)(22));
总结:
- 函数柯里化可以让我们给一个函数传递较少的参数得到一个已经记住了某写固定参数的新函数
- 这是一种对函数参数的缓存
- 让函数变得更灵活,让函数的粒度更小
- 可以把多元函数转换成一元函数,可以组合使用函数产生强大的功能