一文大白话讲清楚函数式编程,以及函数式编程的优缺点
文章目录
一文大白话讲清楚函数式编程,以及函数式编程的优缺点
1.编程范式
2.函数式编程
3.高阶函数
4.柯里化函数
5.函数的组合与管道
6.函数式编程的优缺点
6.1优点
6.2 缺点
一文大白话讲清楚函数式编程,以及函数式编程的优缺点
1.编程范式
我们要讲函数式编程,那肯定说明除了函数式编程还有其他编程,是的,还有命令式编程、声明式编程、面向对象编程等
这些统称为编程范式
啥叫编程范式,说白了就是一种编程的方法论
比如说啥叫命令式编程,就是程序的每一步执行都依靠我们给出的明确命令,它更关心的是如何一步一步的按照指令完成任务,而不是关注这是什么任务
let arr=[0,1,2,3,4,5,6]
let sum=0;
for (var i = 0; i < arr.length; i++) {
sum+=arr[i]
}
console.log(sum)//21
程序的每一步执行都按照我们给的指令,但每条指令不一定能知道我们最终要完成什么样的任务
2.函数式编程
函数式编程更加强调程序执行的结果而不是过程,啥意思
比如我们求两个数a和b的和,我不管过程怎么做的,反正我需要这个a+b的和,你给我就行这就是函数式编程
大白话说就是我们可以理解为,函数式编程就是过程进行封装,封装成实现各个功能的函数,然后我们使用的时候的,直接用函数,不管函数里面是怎么实现的。我要做加法,我就给你我的参数,你给我结果就行。至于你怎么算的,我不管
那就会抛出一个问题,封装到什么程度算是ok
好问题,封装到这个函数是元函数或者叫纯函数,也可以叫无副作用函数,都可以,啥意思,有点懵是不
两句话
第一句,我给你一个确定的参数,你就要给我返回一个唯一与之对应的返回值。说白了,就是我只要你接收的参数不变,那么不管你被调用多少变,或者被谁调用,返回的结果是唯一且相等的。
第二句,就是你这个封装好的函数,如果执行了,你不能对外部任何变量产生影响。比如你在函数里面改变了外部变量的值
上代码
let out=1;
function fn(){
out=2;
console.log(