如果Array.prototype.slice()方法返回浅拷贝,为什么更改切片数组的值不会更改原始值

时间:2014-06-19 19:23:43

标签: javascript

Array.prototype.slice()方法documentation

  

slice()方法将数组的一部分的浅表副本返回到新的数组对象中。

如果是这种情况,为什么修改Array.prototype.slice()返回的数组不会改变原始值。

> a = [1, 2, 3]
[ 1, 2, 3 ]
> b = a.slice(0)
[ 1, 2, 3 ]
> b[0] = 4
4
> b
[ 4, 2, 3 ]
> a // the expected output should be the same as output of b if b is shallowcopy of a.
[ 1, 2, 3 ]

尝试修改数组 a 时,可能会发生写入时的复制。如果是这样,说 Array.prototype.slice()确实返回浅拷贝在技术上是正确的。

1 个答案:

答案 0 :(得分:0)

a.slice的结果是一个新数组,它不是指向初始变量的指针。