在我的一个项目中,我不得不将一个数组的值复制到另一个数组中。
当我尝试这样做时:
var Arr1 = new Array(1,2,3,4,5,6,7,8,9,10);
var Arr2 = Arr1; // will this create a pointer ??
是否正在创建指针?
Fiddle:我的意思是在循环之后,如果我尝试访问Arr1,它将返回空。
for(var i=0;i<Counter;i++)
{
$('#testDiv').append(Arr2.pop() + " ");
}
alert("The element in other array : " + Arr1);
javascript中有指针吗?
答案 0 :(得分:3)
JavaScript中的分配确实在右侧创建了引用。
指针是一种引用,但也有以下两个属性:
纯JavaScript中不满足这两个条件,尽管实现可以为这些提供本机功能。
答案 1 :(得分:2)
答案 2 :(得分:2)
您可以尝试使用Arr1.slice(0)
:
答案 3 :(得分:1)
替换
var Arr2 = Arr1;
与
var Arr2 = Arr1.slice();
点击此处:http://jsfiddle.net/dk7E6/
var Arr2 = Arr1;
这会创建对Arr1
的数组引用,因此如果您修改Arr2
,则Arr1
将自动更改。因此,要获取数组的副本,请使用array.slice()
< / p>
答案 4 :(得分:1)
实质上,是的。 JavaScript中的值是引用,因此变量Arr1
和Arr2
都引用内存中的相同数组实例。所有值都是在赋值时通过引用复制的,因此一切都是JavaScript中的“指针”。