扫码关注官方订阅号
为什么下面console.log打印出来不是[1,100],[10,2]。
走同样的路,发现不同的人生
这样属于深拷贝吧,直接改变数组的指针指向吧。如果用slice赋值,原数组就不会变。
这里b和a指向的是同一个对象,b[0]=10和b[1]=100都是对同一个对象的操作。
可以去查阅js的堆、栈、基本类型、引用类型
附带参考链接 http://www.tuicool.com/articl...
js在传值时,如果值是一个对象或数组时,传递的就只是地址
就是说对象a,b都指向了内存中一个存放1,2这两个值的地址,
那么对a,b的值的改变就是对内存中这两个值的改变
你先定义了a,并且赋了值,然后b=a就是把b也指向了a这两个值,b[0]跟a[1]都改变了这两个值。他们指向同一个地址。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这样属于深拷贝吧,直接改变数组的指针指向吧。
如果用slice赋值,原数组就不会变。
这里b和a指向的是同一个对象,b[0]=10和b[1]=100都是对同一个对象的操作。
可以去查阅js的堆、栈、基本类型、引用类型
附带参考链接 http://www.tuicool.com/articl...
js在传值时,如果值是一个对象或数组时,传递的就只是地址
就是说对象a,b都指向了内存中一个存放1,2这两个值的地址,
那么对a,b的值的改变就是对内存中这两个值的改变
你先定义了a,并且赋了值,然后b=a就是把b也指向了a这两个值,b[0]跟a[1]都改变了这两个值。他们指向同一个地址。