1.问题
我有一个数组,希望分多次遍历它们,想借助slice()
函数在每次遍历前,得到一些连续的数组元素。
slice()
的官方文档说:
slice() 方法会浅复制(shallow copy)数组的一部分到一个新的数组,并返回这个新数组。
这里说的浅复制该怎样理解?
2.代码
比如我的代码:
var a = ["php", "python", "java", "c++", "matlab", "ruby", "R", "julia"]
var b = a; // 个人认为这个是“浅复制”
b === a // true
var c = a.slice()
// 看了下c的内容:
c
["php", "python", "java", "c++", "matlab", "ruby", "R", "julia"]
c === a // false 为什么是false呢,slice()不是返回浅复制吗?
我对“浅复制”的理解是“赋予相同的内存地址”,所以b===a
是true
,但是c===a
为什么不是true
呢,slice()
返回的不是浅复制吗?
这个浅复制指的是元素的浅复制, 而不是整个数组的浅复制啊. 数组还是新的, 和原来不是一个