【问题标题】:Javascript temporary variable value cleared once I cleared the original value..why? [duplicate]清除原始值后清除 Javascript 临时变量值..为什么? [复制]
【发布时间】:2016-12-04 01:24:14
【问题描述】:

我将一个数组复制到一个临时变量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 : 

【问题讨论】:

  • 您当前是在引用它,而不是复制它,它是不同的;)

标签: javascript


【解决方案1】:

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

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

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

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

【讨论】:

  • 非常感谢,请问如何复制
  • @Jay - 更新答案
  • Array.prototype.slice 会简单很多...
  • @deceze - pfft,当然会。我一定有一个 id10t 错误。
  • 但是为什么要走简单的路线,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
相关资源
最近更新 更多