这不是javascript中的指针功能吗?

时间:2013-05-23 10:36:47

标签: javascript jquery variables pointers

在我的一个项目中,我不得不将一个数组的值复制到另一个数组中。

当我尝试这样做时:

 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中有指针吗?

5 个答案:

答案 0 :(得分:3)

JavaScript中的分配确实在右侧创建了引用

指针是一种引用,但也有以下两个属性:

  • 它指的是特定的内存地址。
  • 可以添加或减去它以获得同样有效的其他内存地址。

纯JavaScript中不满足这两个条件,尽管实现可以为这些提供本机功能。

答案 1 :(得分:2)

尝试:

var Arr2 = Arr1.slice(0);

从这里开始:http://davidwalsh.name/javascript-clone-array

答案 2 :(得分:2)

您可以尝试使用Arr1.slice(0)

http://jsfiddle.net/L23nR/

答案 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中的值是引用,因此变量Arr1Arr2都引用内存中的相同数组实例。所有值都是在赋值时通过引用复制的,因此一切都是JavaScript中的“指针”。