纯函数

纯函数

① 函数的执行过程完全由输入参数决定,不会受除参数之外的任何数据的影响。

② 函数不会修改任何外部状态,比如修改全局变量或传入的参数对象。

  • 函数式编程 需要遵守的
  • 像 map 之类输出数组的函数,很多时候在其中修改 item 的值, 这样函数最主要的输出功能没有了
  • 一类特别的函数,只要是同样的输入(实参),必定得到同样的输出 (返回)。(就像数学公式一样的。什么参数就是什么值)
  • 其实纯函数才是真正意义上的 “函数”, 它意味着**相同的输入,永远会得到相同的输出**
  • 必须遵守以下的约束
    1. 不得修改参数的数据
      • 比如在函数中   对数组进行 pop、shift 等添加删除方法、要修改原数组的是不纯的行为。一般使用扩展运算符拷贝下来添加删除。
      • 纯了
    2. 不能产生任何的副作用,列如网络请求、输入和输出设备
    3. 不能调用 Date.now()或者 Math.random()等不存的方法。
  • redux 中的 reducer 函数就必须是一个纯函数

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!