3-4-3
来源:3-7 选择题
DaDaDaLa
2018-05-02 22:02:31
根据答案我的理解如下:
栈中a指向堆中的一个引用对象【4】;
a指向的地址赋给b;
改变a指向的地址,现在指向了引用对象【4,44】;
再将b指向的地址赋给a;
b指向的引用对象数组推入一个44.
我的问题是:第3步,a指向的地址改变,而不是改变了a原来指向的引用对象的值;
第5步,b改变原来指向的引用对象的值,而没有改变指向的地址。
这两种改变的差异请老师解释一下?
1回答
a=[4,44]这种创建函数的方式,相当于重新new了一个数组对象,原对象和新对象肯定是不等的,因为地址发生了改变。因此a的变化不会影响b-->[4]
而,b.push(44),这种方式的改变只不过是在原来的对象上添加了一些数据而已,地址指向并不会发生改变。所以b的变化会影响a-->[4,44]
相似问题