一、纯函数: Pure Function
- 如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部任何状态或数据的变化,必须只依赖于其输入参数。
- 该函数不会产生任何可观察的副作用,例如网络请求,输入和输出设备或数据突变(mutation)。
二、副作用
除了修改外部的变量,一个函数在执行过程中还有很多方式产生外部可观察的变化,比如说调用 DOM API 修改页面,或者你发送了 Ajax 请求,还有调用 window.reload 刷新浏览器,甚至是 console.log 往控制台打印数据也是副作用。
//=========================================纯函数实例
function add(x,y){
let x = x * 10
return x+y
}
let result1 = add(2,8)
let result2 = add(1,8)
let result3 = add(1,8)
let result4 = add(1,8)
//===============================有副作用的不纯函数实例
// 输入相同参数,返回结果不同
function add(x,y){
let x = x * 10
let c = Math.random()
return x+y+c
}
// let a = 8;
function add(x,y){
let x = x * 10
//副作用
let input = document.querySelector(".txt")
input.value = '123'
//副作用
a = 12
//副作用
console.log(1111)
//副作用
fetch("http://www.api.com").then...
return x+y+c
}
三、纯函数的好处
- 代码实现简洁
- 易于后期测试
- 纯函数还使得维护和重构代码变得更加容易