纯函数三大特点:
1.函数的返回结果只依赖它的参数
如下:
let a = 1
let func = (a) => a+1
fun(a)
反例:
let a =1
let func = (b) => a+b
fun(2)
上面就不是纯函数,因为它的返回结果还受外部变量b的影响
2.函数之行时不会对外部变量产生影响(对外部变量产生影响简称副作用
)
如下:
const counter = {x:1}
let func = (counter) => (
counter.x+1
)
func(counter) //2
举反例:
let counter = { x:1 }
let func = (counter) => {
counter.x=2
return counter.x+1
}
function(counter) //3
counter.x //1
这里对外部变量产生了影响,这就是所谓的副作用
类似的,像Ajax请求后端数据,添加登录监听和取消登录,手动修改DOM这些都是对外部变量产生了影响,都是副作用
总结:
在react中,纯函数的状态只能在函数内部的生命周期存活
网友评论