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 请求、没有变量修改,单纯执行计算。

你可能感兴趣的:(JS纯函数概念)