作者:910621rh_270 | 来源:互联网 | 2022-12-07 05:50
下面是一个名为functionA的高阶函数示例,它将customValue作为输入,并返回一个获取输入并使用自定义值来详细说明结果的函数:
let functiOnA= (customValue) => {
let value = customValue || 1;
return input => input * value;
};
这是一些结果:
functionA()(4)
// => returns 4
functionA(2)(4)
// => returns 8
functionA(3)(4)
// => returns 12
functionA(4)(4)
// => returns 16
功能A返回的功能可以被认为是纯粹的吗?
更新:以上示例仅使用数字输入.正如@CRice所描述的那样,只有当customValue是常量且没有内部状态(如类)时,返回的函数才能被认为是纯函数.
1> CRice..:
使用Pure Function的这个定义:
在计算机编程中,纯函数是具有以下属性的函数:
它的返回值对于相同的参数是相同的(本地静态变量,非局部变量,可变引用参数或来自I/O设备的输入流没有变化).
它的评估没有副作用(没有局部静态变量,非局部变量,可变参考参数或I/O流的变异).
然后,不,functionA
不会总是返回纯函数.
这是一种使用方法,functionA
以便它不返回纯函数:
let functiOnA= (customValue) => {
let value = customValue || 1;
return input => input * value;
};
class Mutater {
constructor() {
this.i = 0;
}
valueOf() {
return this.i++;
}
}
const nOnPureFunction= functionA(new Mutater());
// Produces different results for same input, eg: not pure.
console.log(nonPureFunction(10));
console.log(nonPureFunction(10));