Skip to content

函数管道是一个很形象的说法,是将多个函数结合起来,将前一个函数的返回值当做第二个函数的参数,依次运行。当然,这些函数必须都是单参函数。

js
        /**
         * 创建一个管道函数,用于将输入值依次通过一组函数处理
         * @param {...Function} fns - 一个或多个函数,将按顺序应用到输入值上
         * @returns {Function} 返回一个函数,该函数接受一个值作为输入,依次通过所有传入的函数处理后返回最终结果
         */
        function pipe() {
            // 将arguments对象转换为数组,包含所有传入的函数
            var fns = Array.from(arguments);
            return function (value) {
                // 遍历函数数组,依次应用每个函数到输入值上
                fns.forEach(function (fn) {
                    value = fn(value);
                });
                // 返回经过所有函数处理后的值
                return value;
            }
        }
        function fn1(a) {
            return a * 2;
        }
        function fn2(a) {
            return a * 3
        }
        var newFn = pipe(fn1, fn2);
        console.log(newFn(4));

由于函数管道都需要单参函数,所以当我们需要使用管道连接多参函数的时候,就可以使用柯里化来将多参函数变成单参函数。

以笔记为镜,可以知得失