频道栏目
首页 > 资讯 > JavaScript > 正文

javascript中的深拷贝和浅拷贝讲解

18-03-17        来源:[db:作者]  
收藏   我要投稿

一、遇到的问题:

写了以下的一段js

var a = [a,b,c];

var c = a;

c.push(d);

然后console.log(a);会发现a中也多了d;

二、查找资料并找到原因:

因为在js中,对象和数组都是引用传递,所谓引用传递就是当变量c赋值为数组a后,a和c便指向了同一个地址,这个地址的值便是[a,b,c]这个数组,所以当修改c,也就是修改了c指向地址的数组,而a也指向这个数组,所以a的值也会跟着变化

三、总结:

js中的赋值是分为深层拷贝以及浅层拷贝的,我们通常所用的“=”赋值,其实都是属于浅拷贝,也就是如图所示:

而如果想达到值传递的效果,也就是改变c而不引起a的改变,则可以使用json解析反解析的方式实现,具体使用如下:c = JSON.parse(JSON.stringify(a));也就达到了如图所示的效果:

相关TAG标签
上一篇:关于vue过滤的代码教程
下一篇:ArcGIS API for javascript如何解决打印输出的中文为乱码问题?
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站