js深浅拷贝:保证赋值后改变第二个变量的值,不影响第一个变量的值

本文探讨JavaScript中深浅拷贝的概念,解释了浅拷贝仅能解决一级对象赋值问题,而深拷贝适用于复杂数据类型的复制。通过for循环、展开运算符和递归函数等方法实现深浅拷贝,并对比了不同方法的适用场景和局限性,如JSON.parse()和JSON.stringify()不支持undefined值的拷贝。
摘要由CSDN通过智能技术生成

  • 对于基本数据来说,将一个变量赋值给另一个变量,第二个变量值改变了,不会影响第一个变量;
  • 但对于复杂类型中的对象来讲,将一个对象赋值给另外一个对象,其实是将放对象内容的地址赋值给了第二个对象,它们指的都是一个内容,当第二个对象把内容改了,那第一个对象指的也是这个内容,那就会造成第一个变量也会被改变;
  • 由此我们有了浅copy和深copy两个概念;
  • 浅拷贝:只能解决复杂类型对象中一级对象的赋值问题;
  • 一级对象指的是:value值只是基本的数据类型,例如:{name:”yiyi“,age:21}这样的;
  • 深拷贝:解决复杂类型的赋值问题;
  • 复杂类型指的是:例如:{name:"yiyi",location:{city:"zr",province:"hn"}}
  • 深浅拷贝都是为了保证赋值时,改变第二个变量的值(赋值号左边),不会影响第一个变量的值(赋值号右边);

1、浅copy:针对一级对象赋值问题的解决办法:

  • for循环遍历法:
<script>
        //一级对象,for循环
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陌一一

你的鼓励是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值