输出只依赖输入
如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部任何状态或数据的变化,必须只依赖于其输入参数。
// 非纯函数
let a = 10
add =(b)=>{
return a+b
}
add(5)
// 纯函数
add1 =(b,c)=>{
return b+c
}
add1(10,5)
不产生副作用
该函数不会产生任何可观察的副作用,例如网络请求,输入和输出设备或数据突变(mutation)。
// 非纯函数
let a = 10
add =(b)=>{
// 修改了外部变量a的值,产生了副作用
a = a + b
}
add(5)
// 纯函数
add1 =(b)=>{
let c = 10
//修改内部变量,并不会产生副作用
c = 20
b = b+c
}
add1(5)