如何区分js数组浅拷贝与深拷贝,实现直接赋值问题?

2026-04-02 07:420阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计619个文字,预计阅读时间需要3分钟。

如何区分js数组浅拷贝与深拷贝,实现直接赋值问题?

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分钟。

如何区分js数组浅拷贝与深拷贝,实现直接赋值问题?

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() 方法都属于数组的深拷贝,一个数组变化,另一个数组不受影响。

阅读全文