「前端每日一问(16)」深拷贝和浅拷贝的区别?

1,192 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

难度:⭐ ⭐

答:

浅拷贝和深拷贝都是创建一份数据的拷贝。

JS 分为原始类型和引用类型,对于原始类型的拷贝,并没有深浅拷贝的区别,我们讨论的深浅拷贝都只针对引用类型。

  • 浅拷贝和深拷贝都复制了值和地址,都是为了解决引用类型赋值后互相影响的问题。

  • 但是浅拷贝只进行一层复制,深层次的引用类型还是共享内存地址,原对象和拷贝对象还是会互相影响。

  • 深拷贝就是无限层级拷贝,深拷贝后的原对象不会和拷贝对象互相影响。

网络上的很多文章觉得引用类型赋值就是浅拷贝,误导了很多人,我在这篇文章中揭秘了深拷贝和浅拷贝的区别,可以参考一下。

轻松拿下 JS 浅拷贝、深拷贝

平时开发中,一般是使用三方库来处理深拷贝,比如 lodash

处理浅拷贝的话,对象可以使用 Object.assign、扩展运算符,数组可以使用扩展运算符, concat、slice 或者 Array.from 方法。

结尾

如果我的文章对你有帮助,你的👍就是对我最大的支持^_^

我是阿林,输出洞见技术,再会!

上一篇:

「前端每日一问(15)」JavaScript 字符串的常用方法有哪些?

下一篇:

「前端每日一问(17)」手写一个深拷贝