2016-07-29 99 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

相關問題