Cod*_*101 4 javascript functional-programming
我在udacity论坛上看到这个函数是一个不纯的函数,但我认为它的纯函数.我很迷惑.有人可以解释一下.
const addAndPrint = (a, b) => {
const sum = a+b;
console.log(`The sum is ${sum}`);
return sum;
};
Run Code Online (Sandbox Code Playgroud)
Nin*_*olz 13
它不是一个纯函数,因为
console.log(`The sum is ${sum}`);
Run Code Online (Sandbox Code Playgroud)
违反第2点:
- 对结果的评估不会导致任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I/O设备
对于相同的输入,它总是会给出相同的结果。函数内部没有任何外部引用,因此它仅取决于参数input。
在函数内部可以被认为是不纯粹的事情是,(与返回值无关)有人可以更改 的函数console来log执行另一件事。
例如
const addAndPrint = (a, b) => {
const sum = a+b;
console.log(`The sum is ${sum}`);
return sum;
};
console.log(addAndPrint(4,5));
const log = console.log;
console.log = (t) => log('Not the same output');
console.log(addAndPrint(4,5));Run Code Online (Sandbox Code Playgroud)
正如@Nina 回答的那样,它违反了第二点,因此根据纯函数的声明,它不是纯函数。
| 归档时间: |
|
| 查看次数: |
689 次 |
| 最近记录: |