函数式编程
函数式编程的三大特征:
- 纯函数
- 不可变值
- 函数是一等公民
纯函数
- 相同输入总是获得相同输出
- 不会产生副作用
纯的本质:有且仅有显式数据流。数据的来源和出口严格约束。
数据仅以入参形式传入,仅以返回值形式输出。
不直接通过作用域链依赖外部数据,不直接在函数内部修改外部数据。
TIP
非纯的特征是具有传递性的。函数 A 调用了一个非纯函数,则函数 A 也为非纯函数。
TIP
只要函数跟外部环境发生了交互,即产生了副作用。
常见副作用:
- DOM 操作
- LOG 打印
- 网络请求
- 定时器
- 监听器
- 等等
不可变值
原始数据类型的数据皆为不可变值,能够变化的是引用类型对象。
为了确保引用类型对象数据不可变,诞生了 Immer 等解决方案。
函数是一等公民
- 函数可以被赋值给一个变量
- 函数可以作为一个函数的入参
- 函数可以作为一个函数的返回值
。