一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数。
为什么要煞费苦心地构建纯函数?因为纯函数非常“靠谱”,执行一个纯函数你不用担心它会干什么坏事,它不会产生不可预料的行为,也不会对外部产生影响。不管何时何地,你给它什么它就会乖乖地吐出什么。如果你的应用程序大多数函数都是由纯函数组成,那么你的程序测试、调试起来会非常方便。
纯函数的几个条件:
- 同样的输入,必须是同样的输出。
- 函数中不能改写参数的值。
- 不会产生任何副作用,不能有网络请求和输入输出设备。
- 不能调用Date.now()和Math.random()等不纯的方法。