纯函数:就是一个函数的返回结果只依赖于它的参数,不依赖于且不改变它作用域之外的变量状态的函数,并且在执行过程中没有副作用,我们就把这个函数叫做纯函数
1、函数的返回结果只依赖于它的参数
// 不是纯函数,一来了外部变量 a
lat a = 1;
function add(b) { return a + b }
add(1) // 2
// 是纯函数
function add(a, b) { return a + b }
add(1, 2) // 3
2、函数执行过程中没有副作用
// 不是纯函数,有副作用,改变 obj 里面的 a
let obj = { a: 1 }
function mul(obj){
return obj.a *= 2
}
mul(obj) // 2
obj.a // 2
// 是纯函数
let obj = { a : 1 }
function mul(a){
return a*= 2
}
mul(obj.a) // 2
obj.a // 1
优点
- 1、可复用性:纯函数仅依赖于传入的参数,这意味着你可以随意将这个函数移植到别的代码中,只需要提供它需要的参数即可
- 2、可测试性:纯函数非常容易进行单元测试,因为不需要考虑上下文环境,只需要考虑输入和输出
- 3、并行代码:纯函数是健壮的,改变执行次序不会对系统造成影响,因此纯函数的操作可以并行执行
网友评论