当前位置: 首页 > Web前端 > JavaScript

1.1.2Currying

时间:2023-03-27 12:07:35 JavaScript

Currying:当一个函数有多个参数时,先传递一部分参数来调用它(这部分参数以后永远不会改变),然后返回一个新的函数来接收剩下的参数并返回结果。编程先学了C语言,面面程式编程,后来又接触了C++、JAVA、OC面面对象编程,但还是一下子过不去函数式编程。对此,后续需要在工作中逐渐改变。例如:解决硬编码问题,纯函数的写法不够灵活。//纯函数functioncheckAge(age){letmin=18;returnage>=min;}functioncheckAge(min,age){returnage>=min;}Curry写法,函数粒度变得更小更扁平。functioncheckAge(min){returnfunction(age){返回年龄>=min;}}//es6写法letcheckAge=min=>(age=>age>=min);//testletcheckAge18=checkAge(18);检查年龄18(24);lodash中有一个curry方法可以实现curry功能:创建一个函数,接收func的一个或多个参数,如果提供了func需要的所有参数,则执行func并返回执行结果。否则,继续返回函数,等待接收剩余的参数。参数:待柯里化的函数const_=require('lodash')//待柯里化的函数functiongetSum(a,b,c){returna+b+c}//柯里化后的函数letcurried=_.curry(getSum)//测试curried(1,2,3)curried(1)(2)(3)curried(1,2)(3)curry函数模拟实现functionmycurry(func){returnfunctioncurriedFn(args){if(args.length