2016-07-29 100 views
-1

我复制一个数组到一个临时变量tempPropertyValuesArrayJavascript临时变量值清零后,我清除了原始值。为什么?

,然后当我清除了原有的阵列$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 : 
+0

您目前** **引用它,不是抄袭,这是不同的;) – briosheje

回答

4

在JavaScript我复制一个数组到一个临时变量tempPropertyValuesArray

你没有复制它,你对它做了参考。更改参考,更改原始对象。

如果你真的想要一个副本,这样做:

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

非常感谢我怎么能复制请 – Jay

+0

@Jay - 更新回答 – Jamiec

+1

'Array.prototype.slice'会简单得多... – deceze

相关问题