纯函数可以在同一个类中使用私有常量变量吗?
例如:class TimesThousand {
const CONSTANT = 1000;
function calculate(number) {
return number * CONSTANT;
}
}
calculate()
可以看作是pure function
吗?
当返回值仅由其输入值决定时,纯函数是纯函数,没有任何可观察到的副作用。
所以函数是纯函数。由于CONSTANT
的值(顾名思义)是常数,因此输出完全由输入决定。
一个函数可以被认为是一个纯函数,如果关于该函数的下列语句同时成立:
- 给定相同的参数值,函数总是计算相同的结果值。函数的结果值不能依赖于任何隐藏的信息或状态,这些信息或状态可能在程序执行过程中或在不同的程序执行之间发生变化,也不能依赖于任何来自I/O设备的外部输入。
- 对结果的评估不会导致任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I/O设备。