1、安装lodash
yarn add lodash
2、使用es5实现函数柯里化
function add(a, b) {
return function (c, d) {
// console.log(a + b + c + d)
return a + b + c + d
}
}
let num1 = add(1, 1)
console.log(num1(2, 2))
console.log(num1(2, 3)) //柯里化实现成功
3、使用es6简化实现函数柯里化
const es6Add = (a, b) => ((c, d) => (a + b + c + d)) let num2 = es6Add(2, 2) console.log(num2(2, 2)) console.log(num2(2, 3))
4、使用lodash实现函数柯里化
function lodashAdd(a, b, c, d) {
return a + b + c + d
}
let curried = _.curry(lodashAdd) //_.curry的作用就是生成的函数里面传的参数个数全部传就会直接运算,没传完就会返回一个函数接受剩余参数并运算
let num3 = curried(3, 3)
console.log(num3(3, 3))
5、lodash.curry模拟实现
//函数柯里化模拟
function curry(fn) {
return function curryFun(...args) {
if (args.length < fn.length) {
return function () {
return curryFun(...args.concat(Array.from(arguments)))
}
}
return fn(...args)
}
}
function lodashAdd(a, b, c, d) {
return a + b + c + d
}
let curried = curry(lodashAdd)
let num3 = curried(3, 3)
console.log(num3(3, 3))
6、函数柯里化总结:
1、定义函数first接受部分参数。
2、first返回一个新的函数second接受剩余的参数,并把运算结果返回。
3、优点,提高编程的灵活性和执行效率
浙公网安备 33010602011771号