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

我真的不明白在引用后添加“四个”的项目是如何上面itemsitemsRef相同的。应该只有(“一”“二”“三”)不是很合理吗?itemsRefitemsitemsRef

如果永远itemsRef指向items,为什么我们要使用这样一个无用的论点items = itemsRef?我还是不明白。谁能告诉我这是如何工作的以及为什么 JavaScript 让变量永远指向彼此?

4

2 回答 2

4

Javascript通过引用而不是通过 value/copy来分配对象和数组。这就是为什么你会看到这种行为。有很多关于此的网络文档。

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

var newArray = oldArray.slice(0);
于 2012-05-04T01:09:43.073 回答
1

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

于 2012-05-04T01:10:17.237 回答