redux源码分析:什么是纯函数

redux 中的 reducer 希望是一个纯函数,那么这个概念来源是什么
更新于: 2021-12-19 12:57:28

定义

  • 相同的输入永远会得到相同的输出
  • 没有任何可观察的副作用
  • 简单来说,一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数。
  • 纯函数条件之一:不得修改传入的参数

优点

  • 方便缓存:因为纯函数对相同的输入始终有相同的结果,所以可以把纯函数的结果缓存起来
  • 测试方便:因为我们的纯函数,始终有输入和输出,而单元测试,其实就是在测试这个函数的结果,所以我们的纯函数都是可测试的函数
  • 并行处理
    • 在多线程环境下并行操作共享的内存数据很可能会出现意外情况
    • 纯函数不需要访问共享的内存数据,所以在并行环境下可以任意运行纯函数(Web Worker)

关于副作用

现实开发中,副作用不可能完全禁止,尽可能控制他们在可控范围内发生

 

参考

https://blog.jerry-hong.com/series/rxjs/thirty-days-RxJS-02/

https://juejin.cn/post/6844903842237120519

https://blog.csdn.net/CS_DGD/article/details/108467707