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变得没有关系了

 

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM