什么是纯函数

93 阅读1分钟

输出只依赖输入

如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部任何状态或数据的变化,必须只依赖于其输入参数。

// 非纯函数
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)