3-4-3

来源:3-7 选择题

DaDaDaLa

2018-05-02 22:02:31

根据答案我的理解如下:

  1. 栈中a指向堆中的一个引用对象【4】;

  2. a指向的地址赋给b;

  3. 改变a指向的地址,现在指向了引用对象【4,44】;

  4. 再将b指向的地址赋给a;

  5. b指向的引用对象数组推入一个44.

    我的问题是:第3步,a指向的地址改变,而不是改变了a原来指向的引用对象的值;

                        第5步,b改变原来指向的引用对象的值,而没有改变指向的地址。

                       这两种改变的差异请老师解释一下?

写回答

1回答

一路电光带火花

2018-05-03

a=[4,44]这种创建函数的方式,相当于重新new了一个数组对象,原对象和新对象肯定是不等的,因为地址发生了改变。因此a的变化不会影响b-->[4] 

而,b.push(44),这种方式的改变只不过是在原来的对象上添加了一些数据而已,地址指向并不会发生改变。所以b的变化会影响a-->[4,44]

0

0 学习 · 4826 问题

查看课程