这个功能纯净还是不纯?

时间:2017-09-05 07:59:06

标签: javascript functional-programming

我在udacity论坛上看到这个函数是一个不纯的函数,但我认为它的纯函数。我很迷惑。有人可以解释一下。

const addAndPrint = (a, b) => { 
  const sum = a+b;
  console.log(`The sum is ${sum}`);
  return sum;
};

2 个答案:

答案 0 :(得分:11)

这不是pure function,因为

console.log(`The sum is ${sum}`);

违反第2点:

  
      
  1. 评估结果不会导致任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I / O设备
  2.   

答案 1 :(得分:2)

对于相同的输入,它总是会给你相同的结果。您的函数内部没有任何外部引用,因此它仅取决于input参数。

在你的函数中可以被视为不纯的东西是,(与返回值无关)有人可以改变console的{​​{1}}函数来做另一件事。 / p>

例如



log




正如@Nina回答的那样,它违反了第二点,所以基于纯函数的声明,它不是一个纯粹的函数。