函数式编程的好处

一、什么是纯函数?

由上文可以知道,纯函数就是对给定的输入返回相同的输出的函数。
纯函数遵守引用透明性

二、纯函数有哪些好处

2.1纯函数产生可测试的代码

不纯的函数可能会依赖外部环境,当函数可以运行,但难于测试。

var global = 'globalValue'
var badFunction = (value) => {
    global = "changed";
    return value* 2
}

而纯函数不改变任何外部环境的变量,即不依赖外部变量也不改变外部变量。

2.2合理的代码

通过纯函数开发者可以更加方便的阅读代码。便于理解和测试。

2.3并发代码

纯函数总是允许我们并发的执行代码。因为纯函数不会改变环境,这意味着不用担心同步问题!(虽然js是单线程,但特殊环境也会遇到多线程状况,如node)

2.4可缓存

由于纯函数总是为给定的输入返回相同的输出,那么我们就可以缓存函数的输出。例如已知一个longRunning是一个纯函数,那么对于多次调用该函数就可以避免重复计算,因为纯函数总是为给定的输入返回相同的输出

2.5管道与组合

纯函数因该被设计为只做一件事。很像Linux的命令,如grep搜索文件、cat打印文件内容。多个命令可以组合使用。

cat jsbook | grep -i "composing" | wc

函数也可以通过组合来使用。

数学中的函数

维基百科中:

函数在数学中为两不为空集的集合间的一种对应关系:输入值集合中的每项元素皆能对应唯一一项输出值集合中的元素。

数学函数