Javascript Koans-数组引用
我在理解Javascript koans中的一部分数组引用时遇到问题:Javascript Koans-数组引用,javascript,arrays,Javascript,Arrays,我在理解Javascript koans中的一部分数组引用时遇到问题: it("should know array references", function () { var array = [ "zero", "one", "two", "three", "four", "five" ]; var assignedArray = array; assignedArray[5] = "changed in assignedArray"; expect(array[5]).t
it("should know array references", function () {
var array = [ "zero", "one", "two", "three", "four", "five" ];
var assignedArray = array;
assignedArray[5] = "changed in assignedArray";
expect(array[5]).toBe('changed in assignedArray');
在这里,为什么更改assignedArray[5]会影响阵列?据我了解,,
assignedArray只引用数组,更改assignedArray不会影响数组本身。保存对象的变量的值就是对该对象的引用。也就是说,内存中某处有一个数组,并且数组和assignedArray都指向同一个位置。语句assignedArray=array将数组的值(对数组的引用)分配给assignedArray,以便它们都引用同一个对象。什么是Javascript koans?@RocketHazmat:我猜,可能有些js BookArray是对象,而对象类型的值是对这些对象的引用。所以array和assignedArray是两个不同的值,它们都是对同一事物的引用。如果通过其中一个,并对其后面的对象进行更改,则更改将通过另一个对象可见。这就像C语言中的指针一样。在原语数组上,可以使用slice获得新的副本:var assignedArray=array.slice;这篇文章和那篇相似:[所以你可以从这个链接得到你的答案]