引用数据类型的赋值

引用数据类型的赋值分为两种类型:浅拷贝和深拷贝。

浅拷贝:直接赋值,赋值的是内存地址,赋值之后 两个变量使用的相同内容,一个操作,另一个也会改变。

深拷贝:只赋值引用数据类型中的数值,而不是赋值地址,数据赋值后二者互不相干。

示例程序如下:

        var arr1 = [1,2,3,4,5,6];

        // 浅拷贝

        // arr1 变量中存储的是数组的内存地址

        // 将arr1存储的内存地址,赋值给arr2,两个变量存储的是相同的内存地址

        var arr2 = arr1;

        // 输出arr2

        console.log(arr2);

        // 改变arr1中的数据

        arr1[0] = '北京';

        // arr1与arr2中的数据都改变

        console.log(arr1)

        console.log(arr2);

        // 深拷贝

        // arr1[1]中存储的是数据,将数据赋值给arr3

        var arr3 = arr1[1];

        // 输出 arr3

        console.log(arr3);

        // arr1中赋值给arr3的数据进行改变

        arr1[1] = '你好';

        // arr1中的数据改变

        console.log(arr1);

        // arr3中的数据没有改变

        console.log(arr3);

        // 如果想要获得数组中的全部数据,则通过循环遍历的方式赋值

程序运行结果如下:

 

 

 

可以看到16行为arr2的输出,20、21行为数据改变后的arr1、arr2的输出,可以看到arr1、arr2中的数据都被改变。这是浅拷贝的规则。

26行为arr3的输出,30、32行为数据改变后的arr1、arr3的输出,可以看到arr1被改变,而arr3的数据并未被改变。这是深拷贝的规则。

posted @ 2020-03-29 19:21  Glimmer'  阅读(40)  评论(0)    收藏  举报