组合函数理解和应用

  ◼ 组合(Compose)函数是在JavaScript开发过程中一种对函数的使用技巧、模式:
    比如我们现在需要对某一个数据进行函数的调用,执行两个函数fn1和fn2,这两个函数是依次执行的;
    那么如果每次我们都需要进行两个函数的调用,操作上就会显得重复;
    那么是否可以将这两个函数组合起来,自动依次调用呢?
    这个过程就是对函数的组合,我们称之为组合函数(Compose Function);
案例:
    <script>
    var num = 100
    //    第一步 对数组 *2
    function double(num){
    return num *2
    }
    //    第二部 对数组平方
    function  pow (num){
    return num **2
    }
    
    console.log(pow(double(num)))
    console.log(pow(double(55)))
    console.log(pow(double(22)))
    
    //    将上面的两个函数组合在一起生成一个新的函数
    function composeFn(num){
    return pow(double(num))
    }
    console.log(composeFn(num))
    console.log(composeFn(55))
    console.log(composeFn(22))
    </script>

实现组合函数

    //通用的封装函数:传入多个函数,自动将多个函数组合到一起挨个调用
    function 
    
    
    
    (...fns){
        // 1.边界判断
        var length = fns.length
        if (length <=0){
            throw  new Error("请输入内容!!!")
        }
        for (var i = 0 ; i<length ; i++){
            var fn = fns[i]
            if(typeof fn !== "function"){
                throw new Error(`传入的第${i+1}个参数不是函数`)
                // break
            }
        }
        // 2.返回的新函数
        return function (...args){
            var result = fns[0].apply(this,args)
            for (var i =1 ;i<length;i++){
                var fn = fns[i]
                result  = fn.apply(this,[result])
            }
            return result
        }
    }
    var newFn = composeFn(double,pow)
    console.log(newFn(55))
posted @ 2024-10-20 01:23  韩德才  阅读(2)  评论(0编辑  收藏  举报