javaScript基础-函数式编程中函数柯里化和组合函数的实现

函数式编程

函数式编程是一种编程范式,函数是第一等公民,函数可以出现在任何地方,比如说参数或者返回值等

函数柯里化

函数柯里化是指把具有多个参数的函数转化为接收一个参数的函数,并且返回一个新的函数,新的函数接收余下的参数,
可以理解为在柯里化的过程中固定了某些参数。

函数柯里化的实现代码

// 柯里化函数的实现
function hycurry(fn) {
    let len = fn.length
    return function curried(...args) {
        // 判断接收参数的数量是否达到原函数的形参数量
        if (args.length < len) {
            // 返回函数,处理接下来的参数
            return function (...args1) {
                return curried(...args, ...args1)
            }
        } else {
            // 返回函数执行的结果
            return fn.call(this,...args)
        }
    }
}
function sum(num1, num2, num3) {
    return num1+num2+num3
}
let newSum = hycurry(sum)
console.log(newSum(10)(20)(30)) //60

组合函数

组合函数是javaScript开发中函数的一种使用技巧。
当需要对某一个数据进行调用得到结果,并且是要通过调用多个函数依次执行得到结果,这些函数的关系是:上一个函数返回的结果是下一个执行函数的输入时。就可以使用用组合函数的技巧。

组合函数的实现代码

// 组合函数的实现,参数为不定长度
function hycompose(...fn) {
    if (fn.length !== 0) {
        return function (...args) {
            let res = args
            fn.forEach((cur, index) => {
                if (index === 0) {
                    res=cur.call(this,...res)
                } else {
                    res=cur.call(this,res)
                }
                
            })
            return res
        }
    }
}
function add2(num) {
    return num+2
}
function multiply(num) {
    return num*4
}
let newCompose = hycompose(add2, multiply)
console.log(newCompose(2))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值