内容取自
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