纯函数(pure function )

总是会看见 纯函数(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 十分容易进行测试 – 因为这完全是一个透明的盒子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值