如何区分js数组浅拷贝与深拷贝,实现直接赋值问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计619个文字,预计阅读时间需要3分钟。
1、数组元素的直接赋值属于数组的浅拷贝,JS存储对象都是存储内存地址,因此浅拷贝会导致新数组和旧数组共用同一块内存地址,其中一组数据变化,另一组数据也会相应变化。
1、数组的直接赋值属于数组的浅拷贝,JS存储对象都是存内存地址,所以浅拷贝会导致新数组和旧数组共用同一块内存地址,其中一个数组变化,另一个数组也会相应的变化。
var a =[1,2,3]; var b=a; a[0]=30; console.log(a,b); //结果: [30, 2, 3] [30, 2, 3]
2、数组内部不含有引用类型,使用slice() 、concat() 和 assign() 方法都属于数组的深拷贝,一个数组变化,另一个数组不受影响。
本文共计619个文字,预计阅读时间需要3分钟。
1、数组元素的直接赋值属于数组的浅拷贝,JS存储对象都是存储内存地址,因此浅拷贝会导致新数组和旧数组共用同一块内存地址,其中一组数据变化,另一组数据也会相应变化。
1、数组的直接赋值属于数组的浅拷贝,JS存储对象都是存内存地址,所以浅拷贝会导致新数组和旧数组共用同一块内存地址,其中一个数组变化,另一个数组也会相应的变化。
var a =[1,2,3]; var b=a; a[0]=30; console.log(a,b); //结果: [30, 2, 3] [30, 2, 3]

