理解函数副作用:
函数副作用是指函数在正常工作任务之外对外部环境施加的影响。具体地说,函数副作用是指函数被调用,完成了函数既定的计算任务,但同时访问了外部数据,尤其是对外部数据进行了写操作,从而一定程度上改变了系统环境。
具体表现为:
- 修改了全局变量的值
- 修改了主调用函数中声明的变量的值(通过参数来进行修改)
缺点:
会给程序设计带来不必要的麻烦,给程序带来十分难以查找的错误,降低程序的可读性!!!
理解纯函数: 一个函数的输出完全由它的输入决定
纯函数需要遵循以下规则:
-
至少接收一个参数
-
返回一个值或者其他函数
-
返回的结果只依赖于输入的参数(函数耦合性小)
-
不会产生副作用:
- 将传入的参数当作不可变数据,即不修改传入的参数 - 不修改全局变量!!
优点:
-
可移植性
- 返回的结果仅依赖于传入的参数,函数耦合性小 -
可测试性
-
可并发性
- 不会产生副作用,相对于外界独立,因此纯函数可并发执行!!
理解函数式编程:
- 函数就是,数据输入、数据输出的过程 ---- 分离数据与行为
- 代码即数据 ---- 使用函数作为数据
- 一路向下组合 ---- 组合简单的函数以形成更强大的函数
常用的 compose() 组合函数:
compose(...functions) 从右向左用来组合多个函数,即从最右的函数开始,把最右面的函数的返回值作为参数传入它左边的相邻的函数,这样依次进行。
compose(funcA , funcB , funcC) 相当于 compose(funcA(funcB(funC)))