什么是函数式编程
函数式编程的思维方式:把现实世界的事物和事物之间的联系抽象到程序世界(对运算过程进行抽
象)
程序的本质:根据输入通过某种运算获得相应的输出,程序开发过程中会涉及很多有输入和
输出的函数
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)
为什么还要学函数式编程?
- 函数式编程是随着 React 的流行受到越来越多的关注
- Vue 3也开始拥抱函数式编程
- 函数式编程可以抛弃 this
- 打包过程中可以更好的利用 tree shaking 过滤无用代码
- 方便测试、方便并行处理
- 有很多库可以帮助我们进行函数式开发:lodash、underscore、ramda
前置知识
- 函数是一等公民
函数可以存储在变量中
函数作为参数
函数作为返回值
把函数赋值给变量
-
高阶函数
-可以把函数作为参数传递给另一个函数
-可以把函数作为另一个函数的返回结果 -
闭包
```javascript
let obj = {
data: [ 'hello', 'world' ],
[Symbol.iterator]() {
const self = this;
let index = 0;
return {
next() {
if (index < self.data.length) {
return {
value: self.data[index++],
done: false
};
}
return { value: undefined, done: true };
}
};
}
};