前端开发:JS中深拷贝和浅拷贝的区别

前言

前端开发中,关于JS原生的原理使用是前端开发者的看家本领,尤其是关于底层和原理的掌握使用,甚为重要。而且编程语言有一些比较共性的概念在不同的编程语言中会有相同的概念,比如深拷贝和浅拷贝它们不仅在JS中有,在其他编程语言中也经常被提及到,而且在实际开发过程中也常常需要区分当前使用的到底是浅拷贝还是深拷贝,如果没有区分正确,在该需要使用深拷贝的时候使用了浅拷贝,那就容易埋下bug隐患,而且不易排查出来。在JS中深拷贝和浅拷贝的使用是比较常用的知识点,而且在前端求职面试的时候二者也是必考知识点,可以说非常重要,那么本文就来做一下总结,方便查阅使用。

JS数据类型

要谈浅拷贝和深拷贝之前,前提是要先聊聊JS的数据类型,众所周知,JS数据类型分为:基本数据类型和引用数据类型。基本数据类型包含number、string、boolean、Null、undefined和ES6语法的Symbol等,它们是存储在程序等栈内存中;引用数据类型包含Array、Object、function(函数)以及ES6语法的Set和Map等,它们是将其地址存储在程序的栈内存中,但真实数据存储在程序的堆内存中。另外,程序的内存又被分为栈内存和堆内存,不管是number、string、boolean、Null、undefined和ES6语法的Symbol还是Array、Object、function(函数)都会被存储在内存中。具体如图所示:

需要明确

猜你喜欢

转载自blog.csdn.net/CC1991_/article/details/129187409