两个变量同时被原数据data赋值,改变其中一个变量,原数据data也发生改变属于数组内存指针问题,需要深度克隆(深拷贝)
javaScript中的两种数据类型:原始类型(即基本数据类型)和对象类型(即引用数据类型)
- js常用的基本数据类型包括undefined、null、number、boolean、string;
- js的引用数据类型也就是对象类型Object,比如:Object、array、function、data等;
引用数据类型赋值时只是给变量保存一个指针,指向存储在堆中的对象,所以两个变量实际上是指向的同一个地方。
解决方法是进行深度复制,因为在拷贝字符串时会开辟新的存储地址,这样就切断了该对象的指针与其指向地址的联系。
let shop = res.data.tkotCategoryResp;
let copyShop = JSON.parse(JSON.stringify(shop))
这样 改变shop的值的时候,copyShop的值是不会跟着改变的。
网友评论