当前位置: 首页 > Web前端 > vue.js

【vue3源码】一、理解副作用函数和响应数据

时间:2023-03-31 19:40:45 vue.js

理解副作用函数和响应数据在分析vue3responsive的实现之前,我们需要明确两个概念:副作用函数和响应数据。副作用函数副作用函数,顾名思义,产生副作用的函数称为副作用函数。那么什么是副作用呢?如果几个函数的运行可能会影响其他函数或变量,那么这种影响就是副作用。让我们看两个例子:functionchangeText(text:string){document.body.innerText=text}functiongetText(){returndocument.body.innerText}changeText函数将修改正文的内容。getText将返回正文的内容。如果我们使用changeText修改body内容,会影响getText获取内容,那么changeText是一个副作用函数。副作用函数不一定对某些函数有副作用。如果一个函数修改了全局变量,它实际上是一个副作用函数。varflag=truefunctionchangeFlag(){flag=!flag}changeFlag函数会改变一个全局变量flag,所以这也是一个副作用,所以changeText也是一个副作用函数。响应数据letobj={a:1,b:1}functionsum(a:number,b:number){returna+b}letc=sum(obj.a,obj.b)上面代码的结果c对于2,这很容易。如果我们把obj.a改成2,c的结果不会改变,必须再次调用sum函数才能得到我们想要的结果。想象一下,如果我们改变obj.a或者obj.b,如果不调用sum函数就可以同步更新c就好了。如果能实现这个功能,那么obj就可以称为响应式数据了。