函数柯里化
- 柯里化的定义,接收一部门分参数,返回一个函数接收剩余参数,接收足够参数后,执行原函数
- 柯里化其实是函数式编程的一个过程,在这个过程中,我们能把一个带有多个参数的函数转换成一系列的嵌套函数。它返回一个新的函数,这个新函数期望传入下一个参数。
- 主要作用和特点就是参数复用、提前返回和延迟执行
- 柯里化把一个多参数函数转换为一系列只带单参数的函数
- 一个简单的柯里化函数
function muti(a) {
return function(b) {
return function(c) {
return a * b * c
}
}
}
console.log(muti(2)(3)(4))
柯里化函数的作用
- 编写小模块的代码,可以更轻松的重用和配置,就像运行npm
- 柯里化实际是把简单的问题复杂化,但是复杂的同时,使函数更多的选择。本质就是降低通用性,提高适用性
- 可以通过一个变量绑定传入第一个值函数,调用该变量输入剩下的函数(这样子就不用重复输入第一个参数)
function volume(l) {
return (w, h) => {
return l * w * h
}
}
const hCy = volume(1);
console.log(hCy(2, 3));
通用的可理化函数
- 开发一个函数,它能接受任何函数并返回一个柯里化版本的函数
function currying(fn, ...args) {
if (args.length >= fn.length) {
return fn(...args)
}
return function(...args2) {
return currying(fn, ...args, ...args2)
}
}
function add(a, b, c, d) {
return a + b + c + d
}
let addPreThreeCurry = currying(add)(1)(2)(3)
console.log(addPreThreeCurry(4))
- 递归的思路,当获取的参数个数大于或者等于 fn 的参数个数的时候,就证明参数已经获取完毕,所以直接执行 fn 了,如果没有获取完,就继续递归获取参数。
- 前端学习交流群:784409139