美文网首页
两个变量同时被原数据data赋值,改变其中一个变量,原数据dat

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

作者: 不知荼 | 来源:发表于2020-09-08 09:42 被阅读0次

    两个变量同时被原数据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赋值,改变其中一个变量,原数据dat

          本文链接:https://www.haomeiwen.com/subject/mtuajktx.html