在许多编程语言中,传递参数和赋值是通过值的直接复制或者引用复制完成的。在JavaScript中,对于值是直接进行复制还是引用复制在语法上是没有区别的,完全是根据值的类型来决定的。

在JavaScript中,简单值总是通过值的直接复制来进行赋值传递的(null,undefined,字符串,数字,布尔,symbol),而复合值(对象(包括数组等)和函数)总是通过引用复制的方式来进行赋值和传递的。

下面的例子能加深理解:

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

var a = 1;var b = a;
b++;
a; //1b; //2var c = [1,2];var d = c;
d.push(3);
c; //[1,2,3]d; //[1,2,3]

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 

数组的浅拷贝

上面例子对于数组的赋值操作就是数组的浅拷贝,不难发现问题当一个数组改变的时候,其他赋值的数组也会改变,在很多类似备份的情况中,这并不是我们想要的结果。

        		

网友评论