JavaScript中的函数式编程

这是我参与新手入门的第3篇文章

前言

三大编程思想:面向过程函数编程面向对象,今天就来初步了解一下函数编程。大概总结了以下几种表现形式:

柯里化函数

柯里化函数,即把接受多个参数的函数编程接受一个单一参数的函数,并且返回接受余下的参数返回结果的新函数。
普通函数:

function add(a, b){
    return a + b;
}
add(1,1); //2
复制代码

柯里化:

function curryingAdd(a){
    return function(b){
        return a+b;
    }
}
curryingAdd(1)(2); //2
复制代码

从上面的例子上看得出,先将a参数用一个函数接收,再返回一个函数处理b参数。这就是所谓的函数柯里化。

偏应用函数

function foo(a,b,c){
    return a+b+c;
}

function foo6(a,c){
    foo(a,6,c);
}
复制代码

先写一个通用函数,然后再根据具体情况修改参数。这其实对应的就是偏函数。它可以减少任意位置的任意个参数。而柯里化可以看做偏函数的一种特殊的应用,它的作用是将多个参数转换成单一参数。柯里化之后的函数通用性降低了(因为将其他参数固定了),但是适用性提高了(因为其他所有参数都是一致的,我们只需要关心最后一个参数),适用于特定场景下。

组合函数

组合函数,顾名思义是由若干个函数组合成一个新的函数,同时完成数据的传递。

function add(a, b) {
    return a + b;
}
function square(a) {
    return a * a;
}

function compose(fn1, fn2) {
    return (...args) => fn1(fn2(...args));
}

console.log(compose(square, add)(1, 2)); //9
复制代码

以上结合了,偏应用以及柯里化函数。函数compose接受函数addsquare作为参数,并返回一个函数用来处理(1,2)的数据。(1,2)先相加得3,再平方得9

总结

函数式编程是一种编程范式,这篇文章从柯里化、偏应用、组合函数,来了解一下什么是函数式编程。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享