我想知道这段代码是否总能按预期运行:
var a = [0, 1];
var b = a;
b.push(2);
// a is now [0, 1, 2]
理论上,像'push'或'splice'这样的方法可以改变变量的引用(例如,如果前一个对象位置没有足够的内存)?换句话说,在我的例子中,它可以是!= b吗?
答案 0 :(得分:3)
只要您执行b = a
,两个变量都始终引用相同的Array
/ Object
。
如果您正在执行b = a.slice( 0 );
之类的操作,则会创建一个新的,独立的Array
。
答案 1 :(得分:1)
不,您在对象上调用的方法无法更改对象的引用。
对于能够更改引用的方法,您必须将用于引用对象的变量发送到方法中。如果没有这个,方法只知道对象,它不知道你用来存储引用的变量,所以如果它改变了对象的引用,你的变量将不再指向它。