首页前端开发正文

纯函数

朱绪2021-11-05714JavaScript

函数式编程,一个非常重要的概念是:纯函数。(大多数函数式编程的好处来自于编写纯函数)

下面我就带大家来了解一下什么是纯函数。

纯函数是对给定的输入返回相同的输出的函数。(参考数学里的函数)

写一个简单的纯函数:

var double = (value) => value * 2;

函数double就是典型的“纯函数”,因为给它一个输入,总是返回相同的输出。

纯函数给我们带来的一个好处是,产生可测试的代码。

纯函数是没有副作用的。

举个例子:

var percentValue = 5;
var calculateTax = (value) => { return value/100 * (100 + percentValue)}

这个calculateTax就不是纯函数,因为它依赖外部环境计算其逻辑。

尽管该函数可以运行,但难以测试。

如何修复这个问题?方法是从该函数中移除外部环境依赖,代码如下:

var calculateTax = (value, percentValue) => { return value/100 * (100 + percentValue)}

这时候就可以顺畅地测试calculateTax函数了。

纯函数不应依赖任何外部变量,也不应改变任何外部变量。