JS函数柯里化,偏函数。最简洁的版本

函数柯里化就是将使用多个参数的函数转化为一系列使用一个参数的函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数柯里化</title>
</head>
<body>

    <script>
        function add(a,b,c,d) {
            return a+b+c+d;

        }
        
        function curry(func) {
        //judge是一个匿名函数
            let judge = (...args) => {
                if (args.length === func.length){
                    return func(...args)
                }
                return (...arg) => judge(...args,...arg)
            }
             return judge
        }
        
        //更简洁的写法,其实上面的已经很简洁了
        function curr(func){
            let judge = (...args) => {
                return args.length === func.length ? func(...args) : (...arg) =>judge(...arg,...args)
            }
            return judge
        }

        // let addCurry = curr(add)
        console.log(addCurry(1)(2)(3)(4));
        /*
         *函数柯里化就是将使用多个参数的函数转换为一系列使用一个参数的函数的技术  额 技术?? 
         */
        
    </script>
</body>
</html>

偏函数与函数柯里化有些类似。偏函数就是将一个 n 参的函数转换成固定 x 参的函数,剩余参数(n - x)将在下次调用全部传入。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>偏函数</title>
</head>
<body>
    <script>

        function add(a,b,c) {
            return a+b+c;

        }
        
        function partial(func, ...args) {
            return (...arg) => {
               return  func(...arg,...args)
            }

        }


        let partialAdd=partial(add,1)
        console.log(partialAdd)
        console.log(partialAdd(2, 3));
    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值