千秋此意
你要理解将一个引用类型的值(对象)赋值给变量时,该变量保存的值实际上只是一个指向内存中该对象的指针、一个地址,而不是该对象本身。 你只有通过变量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:如果以上回答能对你有所帮助万望采纳~