var items = new Array("one", "two", "three");
var itemsRef = items;
items.push("four");
console.debug(itemRef);
console.debug(items);
在items
引用itemsRef
之后,我真的不明白上面的itemsRef
和items
是如何相同甚至是添加了“4”的项目。 itemsRef
应该只有(“一”“两”“三”)不合理吗?
如果itemsRef
永远指向items
,为什么我们会使用像items = itemsRef
这样无用的论点?我仍然没有得到这个想法。任何人都可以告诉我这是如何工作的以及为什么JavaScript让变量永远指向对方?
答案 0 :(得分:4)
Javascript按引用分配对象和数组,而不是按值/副本分配。这就是你看到这种行为的原因。有很多关于此的网络文档。
但如果您的目标是复制数组,请执行以下操作:
var newArray = oldArray.slice(0);
答案 1 :(得分:1)
在这种情况下,itemsRef不指向项目,而是指向对象(数组)项目引用。换句话说,items和itemsRef指向同一个对象而不是彼此。