两个变量同时被原数据data赋值,改变其中一个变量,原数据data也发生改变

两个变量同时被原数据data赋值,改变其中一个变量,原数据data也发生改变属于数组内存指针问题,需要深度克隆(深拷贝)

javaScript中的两种数据类型:原始类型(即基本数据类型)和对象类型(即引用数据类型)

  1. js常用的基本数据类型包括undefined、null、number、boolean、string;
  2. js的引用数据类型也就是对象类型Object,比如:Object、array、function、data等;
    引用数据类型赋值时只是给变量保存一个指针,指向存储在堆中的对象,所以两个变量实际上是指向的同一个地方。

解决方法是进行深度复制,因为在拷贝字符串时会开辟新的存储地址,这样就切断了该对象的指针与其指向地址的联系。

let shop = res.data.tkotCategoryResp;
let copyShop = JSON.parse(JSON.stringify(shop))
这样 改变shop的值的时候,copyShop的值是不会跟着改变的。

参考文章:
JavaScript 基本数据类型和引用类型的区别详解
详解js的六大数据类型

你可能感兴趣的:(两个变量同时被原数据data赋值,改变其中一个变量,原数据data也发生改变)