这是我参与新手入门的第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
接受函数add
和square
作为参数,并返回一个函数用来处理(1,2)
的数据。(1,2)
先相加得3
,再平方得9
。
总结
函数式编程是一种编程范式,这篇文章从柯里化、偏应用、组合函数,来了解一下什么是函数式编程。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END