《JavaScript函数式编程思想》——部分应用和复合

本文深入探讨JavaScript函数式编程中的两个重要概念:部分应用和复合,特别是柯里化(Currying)。柯里化将多参数函数转化为单参数函数链,简化处理并提供灵活性。文章介绍了不同形式的柯里化,包括增强版、右向左和性能考虑,并讨论了柯里化如何与高阶函数结合。同时,复合作为另一关键特性,通过组合多个函数形成新的功能,提高代码的可读性和效率。最后,文章探讨了函数化操作符、方法和控制流语句在提升性能和可读性方面的作用。
摘要由CSDN通过智能技术生成

第5章  部分应用和复合

一等值的函数,是函数式编程的基石。部分应用和复合,则是函数式编程的重要特征。采用命令式编程时,每当我们感觉需要抽象出一个新的功能时,就会定义一个函数。在函数式编程中,被同样需要的新函数,往往无需定义,就能像变魔术一样产生,两位魔术师的名字就叫做部分应用和复合。
5.1  部分应用

5.2  柯里化

我们已经体会到部分应用一个函数的好处,那么对部分应用得到的函数,假如有再次部分应用的必要,自然没有理由不能这样做。还是以rangeRoutine2函数为例。对rangeRoutine2函数的step参数进行部分应用,得到一个产生间隔为1的序列的函数range,这个新函数能满足绝大多数情况的需要,使用起来又比原函数方便,就像调用rangeRoutine函数时省略step参数一样。接下来,大部分场景中序列的起点为0,为此可以对range函数的start参数进行部分应用,得到一个调用时只需提供一个参数的rangeFrom0函数,就像调用rangeRoutine函数时省略start参数一样。更为灵活的是,对于需要序列的起点为其他数字的场景,可以对range函数的start参数用该数字进行部分应用,比如rangeFrom1函数返回的就是以1为起点的序列。

const range = f.partial(rangeRoutine2, 1);

const rangeFrom0 = f.partial(range, 0);

const rangeFrom1 = f.partial(range, 1);

f.log(rangeFrom0(10));
//=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

f.log(r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值