2016-07-29 4 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); 

ログ:JavaScriptで

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

を、それは違う;) – briosheje

答えて

4

私はあなたが、あなたにそれをコピーしていない一時的な変数tempPropertyValuesArray

に配列をコピーします参照を作成しました。参照を変更すると、元のオブジェクトが変更されます。

あなたが本当にコピーをしたい場合は、この操作を行います。コピーしない、**それを参照**あなたが現在いる

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

多くのおかげでどのように私は – Jay

+0

@Jayをしてくださいコピーすることができます - 更新答え – Jamiec

+1

'Array.prototype.slice'はもっと簡単になります... – deceze

関連する問題