JS纯函数
2019-04-24 本文已影响0人
vinterx
纯函数简单定义
1.函数返回的结果只依赖它的参数
2.函数的执行不会对该函数之外的其他对象等造成影响(副作用)
举例说明1
let a = 1
let fn = (b) => {
return a + b
}
fn(9) // 10
函数返回的结果依赖了外部变量a的影响,所以不是纯函数。
let fn = (a, b) => {
return a + b
}
fn(1, 9) // 10
完全依赖传入的参数,所以是纯函数。
举例说明2
let arr = [1, 2]
let fn = (a, b) => {
return a + b
}
fn(arr[0], 9)
这还是纯函数,改变一下
let arr = [1, 2]
let fn = (a, b) => {
a[0] = 2
return a[0] + b
}
fn(arr, 9)
console.log(arr) // [2, 2]
函数的执行,改变了外部数组arr的值,产生副作用,所以不是纯函数。
总结
纯函数在复杂的代码中是非常有用的,它的结果只依赖传递的参数,且不会对外部造成任何影响,高可控又复用。