快捷导航

关于引用类型的问题


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

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员1

你要理解将一个引用类型的值(对象)赋值给变量时,该变量保存的值实际上只是一个指向内存中该对象的指针、一个地址,而不是该对象本身。

你只有通过变量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:如果以上回答能对你有所帮助万望采纳~

回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP