JavaScript数组引用的操作

javascript

数组存储对象都是存地址的,所以浅复制会导致 a 和 b 指向同一块内存地址;

var a=[1,2]

var b=a

则b存储的地址指向了数组[1,2],

如果直接对数组操作,push,pop等,则a,b都会发生变化,因为a和b都指向了堆中的这个数组

但是假如这样操作,b=[3,4];这个时候发现a没有变化还是[1,2];这是为什么,其实这个不同于刚才的操作,

因为b=[3,4],【】是JavaScript的语法糖,new Array();相当于给b重新开辟了堆空间,所以b的地址指向了新的堆地址,而a还是指向之前的地址,所以a和b变得没有关系了

 

地址存储在栈里面,但是数组内容存储在堆里面,

posted on 2018-10-10 11:17  水寒03  阅读(1886)  评论(0编辑  收藏  举报

导航