描述: 一个函数的返回结果只依赖于它的参数,并且在执行过程中没有副作用(不会对外部环境产生影响),把它叫做纯函数。纯函数是无状态和数据不可变的。
举例:
let a = 1;
const foo = (b) => a + b;
foo(2); // 不是纯函数,因为a是一个外部变量,a的变化是不可预料的
/*************************************************************/
const foo = (a, b) => a + b;
foo(1, 2) // 是纯函数,因为函数foo的返回结果只于依赖传入的参数,且没有产生副作用
/*************************************************************/
const foo = (obj, b) => obj.x + b;
const obj = {x: 1};
foo(obj, 1) // 是纯函数,因为函数foo的返回结果只于依赖传入的参数,且没有产生副作用
/*************************************************************/
const foo = (obj, b) {
obj.x = 2;
return obj.x + b;
}
const obj = {x: 1};
foo(obj, 2); // 不是纯函数,因为改变了外部变量
/*************************************************************/
const foo = (b) => {
const obj = {x: 1};
obj.x = 2;
return obj.x + b;
}
foo(2); // 是纯函数,因为改变的是局部变量,没有对外部环境产生副作用