这是怎么来的
var prodataTemp = [];
prodataTemp = prodata;
prodataTemp.shift();
变量prodatTemp和prodata都被转移?我可以在控制台中看到它。
答案 0 :(得分:1)
将JavaScript对象分配给另一个变量,不会复制内容,但它会使左侧变量,即对右侧表达式的引用。所以,
var prodataTemp = [];
使prodataTemp
引用一个空数组然后
prodataTemp = prodata;
使prodataTemp
引用相同的数组对象prodata
指向。 (因此,prodataTemp
)不再引用旧的空数组。
要实际制作副本 ** ,请使用Array.prototype.slice
,就像这样
prodataTemp = prodata.slice();
现在,prodataTemp
引用数组prodata
的副本,因此移位一个不会影响另一个。
** - 制作的副本只是一个浅表副本。因此,如果您有一个数组数组,那么将创建一个新数组,其中包含对旧数组元素的所有引用。因此,改变一个数组元素也会对另一个数组元素产生影响。