在javascript中引用变量

时间:2012-05-04 01:03:38

标签: javascript

var items = new Array("one", "two", "three");
var itemsRef = items;
items.push("four");
console.debug(itemRef);
console.debug(items);

items引用itemsRef之后,我真的不明白上面的itemsRefitems是如何相同甚至是添加了“4”的项目。 itemsRef应该只有(“一”“两”“三”)不合理吗?

如果itemsRef永远指向items,为什么我们会使用像items = itemsRef这样无用的论点?我仍然没有得到这个想法。任何人都可以告诉我这是如何工作的以及为什么JavaScript让变量永远指向对方?

2 个答案:

答案 0 :(得分:4)

Javascript按引用分配对象和数组,而不是按值/副本分配。这就是你看到这种行为的原因。有很多关于此的网络文档。

但如果您的目标是复制数组,请执行以下操作:

var newArray = oldArray.slice(0);

答案 1 :(得分:1)

在这种情况下,itemsRef不指向项目,而是指向对象(数组)项目引用。换句话说,items和itemsRef指向同一个对象而不是彼此。