我假设纯函数必须始终具有返回类型(即不得为void
)并且无论对象的状态如何都必须具有相同的输出,并且不纯函数会更改对象的状态或打印对象的状态。
但是我使用的教科书指出:
我糊涂了。哪一个是正确的?
编辑
澄清一下,让我问的是这个问题:
最后一个问题是“给出所使用的功能的类型”,在此发表评论的人指出,它在打印时是不纯净的功能。
那么此功能是纯净的还是不纯净的?
最佳答案
内容取自this link
纯函数的特征:
因此,如果您使用相同的参数集调用纯函数,则将始终获得相同的返回值。
不纯函数的特征
因此,如果使用相同的参数集调用不纯函数,则可能会获得不同的返回值
例如,Math.random(),Date.now()
function impureFunc(value){
return Math.random() * value;
}
function pureFunc(value){
return value * value;
}
var impureOutput = [];
for(var i = 0; i < 5; i++){
impureOutput.push(impureFunc(5));
}
var pureOutput = [];
for(var i = 0; i < 5; i++){
pureOutput.push(pureFunc(5));
}
console.log("Impure result: " + impureOutput); // result is inconsistent however input is same.
console.log("Pure result: " + pureOutput); // result is consistent with same input
关于java - 纯函数和纯函数之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22395311/