我在udacity论坛上看到这个函数是一个不纯的函数,但我认为它的纯函数。我很迷惑。有人可以解释一下。
const addAndPrint = (a, b) => {
const sum = a+b;
console.log(`The sum is ${sum}`);
return sum;
};
答案 0 :(得分:11)
这不是pure function,因为
console.log(`The sum is ${sum}`);
违反第2点:
- 评估结果不会导致任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I / O设备
醇>
答案 1 :(得分:2)
对于相同的输入,它总是会给你相同的结果。您的函数内部没有任何外部引用,因此它仅取决于input
参数。
在你的函数中可以被视为不纯的东西是,(与返回值无关)有人可以改变console
的{{1}}函数来做另一件事。 / p>
例如
log

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