为什么要学函数式编程
- 函数式编程随着 React 的流行受到越来越多的关注
- Vue 3也开始拥抱函数式编程
- 函数式编程可以抛弃 this
- 打包过程中可以更好的利用 tree shaking 过滤无用代码
- 方便测试、并行处理
- 有很多库可以帮助我们进行函数式开发:lodash、underscore、ramda
什么是函数式编程
函数式编程(Functional Programming,FP),是一种编程范式。我们常听说的编程范式还有面向过程编程、面向对象编程。(编程范式:思想 + 实现的方式)
面向对象编程:把现实世界中的事物抽象成程序世界中的类和对象,通过封装、继承和多态来演示事物事件的联系。
函数式编程**:把现实世界的事物和事物之间的联系**抽象到程序世界(对运算过程进行抽象)
程序的本质:根据输入通过某种运算获得相应的输出,程序开发过程中会涉及很多有输入和输出的函数。
x -> f(联系、映射) -> y, y=f(x)
函数式编程中的函数指的不是程序中的函数(方法),而是数学中的函数即映射关系,例如:y = sin(x),x和y的关系。
纯函数:相同的输入始终得到相同的输出
函数式编程用来描述数据(函数)之间的映射
// 非函数式的,面向过程
let num1 = 2
let num2 = 3
let sum = num1 + num2
console.log(sum)
// 函数式
function add (n1, n2) {
return n1 + n2
}
let sum = add(2,3)
console.log(sum)