【学习Day21】什么是函数的副作用?为什么优先选择无副作用的函数?

在这里插入图片描述

一、函数的副作用?

函数内部操作改变了全局的数据对象,这就是函数的副作用

二、为什么选择无副作用的函数?

有副作用的函数会带来什么样的问题
实例代码:
在这里插入图片描述
通过以上代码可以看到通过get方法对全局的user对象进行处理,并且改变了user对象的值,进而导致我主函数的if没有执行,这就是函数的副作用导致的,排查问题非常的时候很困

改善
在这里插入图片描述
if执行,原user的值未改变

注意: 如果直接通过user1 = user来赋值的话结果还是改变全局对象,原因是,对象之间的赋值传递的不是值而是地址,而这些引用是存在栈中,值存堆中,通过=来赋值就是把user对象所对应的堆地址给了user1,值还是同一个。一个堆地址,可以有多个栈引用。

  • 查找问题困难
  • 可读性差(多个函数操作全局对象,结果难料)

什么东西是两面性有好有坏,有副作用的好处呢,效率高,减少局部变量的代码。设计这些函数的时候,要根据实际情况来设计,保证程序的正确性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值