阅读 85

函数柯里化

当一个函数需要传入多个参数时,可以对函数进行改造,只传递部分参数,函数里返回一个新的函数,新的函数来接收剩余的参数,而固定的参数则通过闭包来实现。

1.当一个函数有多个参数的时候,先传递一部分参数调用它,这部分参数以后永远不变,

2.返回一个新的函数接受u剩余的参数,返回结果

function checkAge(min){ //min不变,除非再次调用传入新的min生成新的函数,用函数生成函数。     return function(age){         return age>min     } } //min参数是固定的,age是不固定的 let checkAge18 = checkAge(18) checkAge18(20) //传入age 复制代码

loadsh里的柯里化函数 curry()

function curry(func){     return function curriedFn(...args){         console.log(args);         *//判断实参与形参的个数*         //如果值传递部分函数,实参小于形参,则返回一个函数         //然后把第一次传入的参数,和剩余传入的参数合并在一起,         //实参和形参个数相同,就会调用最终的这个函数。         if(args.length<func.length){             return function(){                 return curriedFn(...args.concat(Array.from(arguments)))             }         }             return func(...args)     } } 复制代码

总结:

1.函数的柯里化可以给一个函数传递较少的参数,得到一个已经记住了某些固定参数的新函数,生成一个有固定函数的函数,类似于给同样的纯函数分门别类。

2.同样是一中对函数参数的缓存(闭包),指最初被传递的小形参个数的实参。

3.可以让函数变得更灵活,让函数的粒度变小。

4.把多元函数(多个参数)转换成一元(一个参数)函数,可以组合使用函数产生强大的功能。


作者:拔琴相助
链接:https://juejin.cn/post/7021726591424135182


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐