今天谈谈纯函数和不纯函数

纯函数的定义是:

  1. 如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部任何状态或数据的变化,必须只依赖于其输入参数。

  2. 该函数不会产生任何可观察的副作用,例如网络请求,输入和输出设备或数据突变(mutation)。

这就是纯的函数。 如果一个函数符合上述 2 个要求,它就是纯函数。反之则不是纯函数;

例子说明:

例子1:function priceAfterTax(productPrice) { return (productPrice * 0.20) + productPrice;}

priceAfterTax这个函数的结果只依赖形参productPrice,不依赖于任何外部输入,不改变任何外部数据、没有副作用。

所以说,这个是纯函数;

例子2:

var tax = 20;

function calculateTax(productPrice) { return (productPrice * (tax/100)) + productPrice; }

priceAfterTax这个函数的结果,取决于外部定义的变量tax,而纯函数不能依赖外部变量。它没有满足定义中的第一个要求,因此这个函数是不纯的。

 

posted @ 2020-03-24 15:05  KG-work-space  阅读(585)  评论(0)    收藏  举报