欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

纯函数(pure function )

程序员文章站 2022-04-01 09:54:26
...

总是会看见 纯函数(pure function )这个名词,但是都不知道什么是纯函数,它与一般函数的区别是什么?

  • 相同的输入,永远会得到相同的输出
    Fure Function 的返回值,只能由其函数入参所决定,而不能有其他的干扰因素
    例如:
var number=3;
function add ( n ) {
    return n+number;
}

这里add函数的返回值不仅由参数n决定,还由外部变量number决定,当改变外部变量number的值时,对传入相同的n值,并不能得到相同的返回值,所以add不是纯函数。

  • Pure Function 在计算返回值的时候不会产生副作用(Side Effect)
    什么是副作用?
    副作用是在计算结果的过程中,系统状态的一种改变,或是外部世界可观察的交互作用。
    例如I/O 操作,修改函数入参或函数外部的变量,抛出异常,发送http请求等,只要与function外部环境发生交互作用的都是副作用。

    就 JavaScript 而言,我们常用的 console.log() 函数 – 会输出内容到控制台,用来生成随机数的 Math.random() – 会改变全局的 seed……

纯函数的优点

每个 Pure Function 的运行结果都是可重现的。这样的好处就是 Pure Function 十分容易进行测试 – 因为这完全是一个透明的盒子。