纯函数
纯函数
① 函数的执行过程完全由输入参数决定,不会受除参数之外的任何数据的影响。
② 函数不会修改任何外部状态,比如修改全局变量或传入的参数对象。
- 函数式编程 需要遵守的
- 像 map 之类输出数组的函数,很多时候在其中修改 item 的值, 这样函数最主要的输出功能没有了
- 一类特别的函数,只要是同样的输入(实参),必定得到同样的输出 (返回)。(就像数学公式一样的。什么参数就是什么值)
- 其实纯函数才是真正意义上的 “函数”, 它意味着**相同的输入,永远会得到相同的输出**。
- 必须遵守以下的约束
- 不得修改参数的数据
- 比如在函数中 对数组进行 pop、shift 等添加删除方法、要修改原数组的是不纯的行为。一般使用扩展运算符拷贝下来添加删除。
纯了
- 不能产生任何的副作用,列如网络请求、输入和输出设备
- 不能调用 Date.now()或者 Math.random()等不存的方法。
- 不得修改参数的数据
- redux 中的 reducer 函数就必须是一个纯函数
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!