为了账号安全,请及时绑定邮箱和手机立即绑定

关于引用类型的问题

关于引用类型的问题

为什么打印b不是等于[4,44]?而是[4],按照引用数据的逻辑,b和a指向的是同一个地址,a作改变b也应该作改变
查看完整描述

1 回答

已采纳
?
千秋此意

TA贡献158条经验 获得超187个赞

你要理解将一个引用类型的值(对象)赋值给变量时,该变量保存的值实际上只是一个指向内存中该对象的指针、一个地址,而不是该对象本身。
 
你只有通过变量a中保存的这个指针去操作内存中的对象并使其发生改变后,再通过b去访问该对象时,才会出现 "我改变了a,所以b也跟着改变了" 这种错觉,实际上在以上操作前提下,a和b都没有发生过改变,改变的只是内存中的那个对象。

你这个demo的问题出在第12行,你在这里通过字面量的方式创建了一个新的引用类型的值,并将其引用赋值给了变量a,此时变量a中所保存的值也就变成了指向这个新的对象在内存中地址的指针了,而b还是指向第一个对象,所以你打印b就还是输出 "[4]"

再然后在14行,你又将b所保存的值赋值给了a, 此时b和a再次指向一开始所创建的那个对象(即“[4]”),然后你在第15行通过"b.push"来操作了该对象,使对象的值发生了改变,因为此时a和b指向同一对象,所以在16行通过a去访问该对象时自然打印出改变后的值,即 "[4,44]"


ps:如果以上回答能对你有所帮助万望采纳~

查看完整回答
1 反对 回复 2018-03-19
  • 1 回答
  • 0 关注
  • 988 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信