我将全局变量globalValue
的值分配给本地数组localArray
。在更改localArray
的值时,globalValue
也会更改。为什么会发生这种情况,我该如何解决?
var globalValue=[];
globalValue['firstIndex']=1;
globalValue['secondIndex']=2;
globalValue['thirdIndex']=3;
globalValue['checkIndex']="CHECK";
function checkGlobalChange()
{
var localArray=globalValue;
localArray['checkIndex']="CHECKCHANGE";
return true;
}
function callCheckFuction()
{
alert("Global Array checkIndex Value Before Call : "+globalValue['checkIndex']);
if(checkGlobalChange())
{
alert("Global Array checkIndex Value After Call : "+globalValue['checkIndex']);
}
}
<html>
<body>
<input type="button" value="Check" onclick="callCheckFuction()">
</body>
</html>
答案 0 :(得分:5)
您有两个指向一个数组的变量。
要拥有不同的数组,必须克隆第一个数组。这通常使用slice函数完成:
var localArray=globalValue.slice();
但是slice
只会复制int索引属性(通常在数组中使用的属性)。你想要的是深度(或非深度)克隆功能。如果需要,简单搜索“javascript深度克隆”会为您提供这样的功能。