副作用函数与纯函数

本文介绍了函数的主要作用,包括处理参数并返回值,以及无参数函数通常作为副作用函数的角色。副作用函数在执行时可能改变外部状态,增加程序复杂性。纯函数则是只依赖输入参数且没有副作用,它们是引用透明的,对于相同的输入总是产生相同输出。Vue3.0中的响应式系统中,副作用函数与响应式数据的交互被跟踪和管理,确保在依赖变化时重新计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数的主要作用就是运行处理参数,返回一个值。
无参数的函数一般是副作用函数?

副作用函数

函数在运行过程中,除了返回值之外,改变了函数作用域外,程序的状态(数据变化),这些变化则称为副作用或作用(effect)。此函数也因此被称为副作用函数。
常见的副作用:

  1. 函数外变量的改变
  2. 函数外数据结构的变化,如改变复合数据类型参数值
  3. 抛出异常
  4. 控制台输出或读取用户输入
  5. 读取文件到内存中或者写入
  6. UI或DOM变化

副作用函数会使程序之间耦合增加,难以寻找处理错误,增加测试难度

纯函数

函数与函数外界的交流只有函数的参数和返回值,不与函数外界其他数据或东西进行交流访问。纯函数对于相同的输入参数总是返回相同的结果

引用透明

如果可以用固定的值替代程序中的某一函数参数表达式,且不改变程序运行状态,则说明这个函数是引用透明的。
函数的返回值只依赖于其输入值,这种特性就称为引用透明性

function  sum(x,y){
  return x+y;
}
s1 = sum(2,2)+b;
s1 = 4+b;

如果前后2种s1的写法不会对程序产生任何变化,则说明sum是引用透明的。
由于引用透明不会对程序产生副作用,所以纯函数一定是引用透明的。

Vue3.0中的副作用函数

深入Vue响应式
如果一个副作用函数中,使用(getter)或者赋值(setter)了响应式数据,那么这个副作用函数会被作为这些响应式数据的订阅,响应式数据作为函数的依赖。

let A2 
// A0,A1是响应式数据
function update() {
  A2 = A0 + A1
}

update就是A0,A1的订阅,A0和A1叫做update副作用函数的依赖。副作用函数需要在依赖依赖更新的时候重新调用计算。
在副作用第一次使用依赖,进行运行时,会被track记录在订阅为key的WeakMap中。
在依赖被赋值时,在setter时,会通过trigger重新调用次依赖的订阅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨灰ash2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值