lodash 中的柯里化函数
2021-03-22 本文已影响0人
KK_boy
_.curry()
- 功能:创建一个函数,该函数接收一个或多个func的参数,如果func所需的参数都被提供则执行func并返回执行的结果,否则继续返回该函数并等待接收剩余参数。
- 参数:需要柯里化的函数
- 返回值:柯里化后的函数
const _ = require('lodash')
// 要柯里化的函数
function getSum (a, b, c) {
return a + b + c
}
// 柯里化后的函数
let curried = _.curry(getSum) // 测试
curried(1, 2, 3)
curried(1)(2)(3)
curried(1, 2)(3)
- 模拟_.curry()实现
const curry = function (func) {
return function curryFn(...arg) {
// 当实际参数小于形式参数时
if (arg.length < func.length) {
return function () {
return curryFn(...arg.concat(Array.from(arguments)));
}
}
// 实参和形参个数相同,调用 func,返回结果
return func(...arg);
}
}