引用型数据类型的赋值操作——深浅拷贝

①浅拷贝:直接将一个引用数据的地址赋值给另一个变量。

<script>
      
        var arr1 = [1, 2, 3, 4, 5];  
        var arr2 = arr1;                  //将arr1赋值给arr2,直接赋值,赋值的是内存地址
        arr1[0] = '改变';                 //对arr1操作,arr2也会改变,同样对arr2操作,arr1也会改变
        console.log(arr1, arr2);         //输出结果相同

</script>

浅拷贝:赋值的是内存地址;一个操作,另一个也会改变

②深拷贝:赋值应用类型中的数据,而不是内容。

<script>

        var arr1 = [1, 2, 3, 4, 5];  
        var arr2 = [];
        arr1.forEach(function(val){
            arr2.push(val);             //循环遍历,将arr1中的数据赋值给arr2
        })
        console.log(arr2);              //赋值后的arr2数组
        arr1[0] = '改变';               //对arr1进行操作
        console.log(arr1,arr2);         //数组arr2不会受影响

</script>

深拷贝:赋值的是内容;对一个操作,不会影响另一个。

猜你喜欢

转载自www.cnblogs.com/wangjj2/p/12550559.html