浅拷贝和深拷贝的区别

浅拷贝和深拷贝的区别
浅拷贝即传址,传递指针地址,指向原来的值,对指针操作时,是对原来的值直接操作,所以对原来的值有影响。
深拷贝 传值,即复制一个副本,重新分配内存空间,操作这个副本对原来的值无影响。

js中,对象和数组的赋值或作为函数参数传参均为浅拷贝;基础类型的赋值或函数传参为深拷贝。

浅拷贝示例1,数组作为函数参数:
const f2 = (arr) => { arr[0]=0}
const arr1 = [‘2’]
f2(arr1) // -> [‘0’]
浅拷贝示例2,数组赋值:
const a = [‘a’]
const a2 = a
a2[0] = ‘a2’
a // -> ‘a2’
浅拷贝示例3,对象赋值,对象作为函数参数:
const o = { name : ‘o’ }
const lili = o
lili.name = ‘lili’
o // {name: ‘lili’}
const f3 = (o)=>{ o.name = ‘f3’ }
f3(o)
o // {name: ’f3’}

深拷贝示例,基础类型赋值:
const a = 1
let c = a
c = 3
a // -> 1
c // -> 3

深拷贝示例,基础类型作为函数参数:
const f4 = (v)=>{ v = ‘f4’ }
f4©
c // -> 3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值