我正在阅读的文章将此作为不纯函数的示例(在JavaScript中):
const tipPercentage = 0.15;
const calculateTip = cost => cost * tipPercentage;
这让我感到有点奇怪,因为tipPercentage
是一个具有不可变值的常量。纯函数的常见示例允许在这些常量是函数时依赖于不可变常量。
const mul = (x, y) => x * y
const calculateTip = (cost, tipPercentage) => mul(cost, tipPercentage);
在上面的示例中,如果我错了,请更正我,calculateTip
通常会被归类为纯函数。
所以,我的问题是:在函数式编程中,如果一个函数依赖于一个带有不可变值的外部定义常量,当该值不是一个函数时,它仍然被认为是纯函数吗?
答案 0 :(得分:7)
是的,这是一个纯粹的功能。纯函数是referentially transparent,即可以用其结果替换函数调用而不改变程序的行为。
在您的示例中,替换例如, calculateTip (100)
程序中的任何位置15
的结果都没有任何行为更改,因此功能是纯粹的。