JS纯函数概念

判断是否为纯函数的两个指标

1、函数的返回结果只依赖于它的参数。
2、不改变函数体外部数据、函数执行过程里面没有副作用。


纯函数和非纯函数的简单例子

1、纯函数

以下是一个计算产品税后价格(英国税率是20%)的纯函数的例子:
function priceAfterTax(productPrice) { 
      return (productPrice * 0.20) + productPrice;
}
它符合我们所说的两条纯函数的定义。不依赖于任何外部输入,不改变任何外部数据、没有副作用。

2、非纯函数

var tax = 20; 
function calculateTax(productPrice) { 
    return (productPrice * (tax/100)) + productPrice; 
}
其中函数的计算结果取决于外部 tax 变量,而纯函数不能依赖外部变量。
它没有满足定义中的第一个要求,因此这个函数是不纯的。


Redux中对使用纯函数reducer的要求

只需要谨记 reducer 一定要保持纯净。
只要传入参数相同,返回计算得到的下一个 state 就一定相同。
没有特殊情况、没有副作用,没有 API 请求、没有变量修改,单纯执行计算。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。