清除原始值后,Javascript临时变量值被清除..为什么?

时间:2016-07-29 10:47:46

标签: javascript

我将数组复制到临时变量tempPropertyValuesArray

然后当我清除原始数组$scope.advancedSearch.businessCard.propertyValues

它还清除了tempPropertyValuesArray

我很惊讶。这是预期的行为吗?

使用Javascript:

var tempPropertyValuesArray = $scope.advancedSearch.businessCard.propertyValues;
$log.debug("tempPropertyValuesArray 1 : " +tempPropertyValuesArray);
$scope.advancedSearch.businessCard.propertyValues.length = 0;
$log.debug("tempPropertyValuesArray 2 : " +tempPropertyValuesArray);

日志:

tempPropertyValuesArray 1 : [object Object],[object Object] 
tempPropertyValuesArray 2 : 

1 个答案:

答案 0 :(得分:4)

  

在Javascript中,我将数组复制到临时变量tempPropertyValuesArray

你没有复制它,你为它做了一个引用。更改参考,更改原始对象。

如果您真的想要副本,请执行以下操作:

var tempPropertyValuesArray 
      = $scope.advancedSearch.businessCard.propertyValues.slice();