【问题标题】:Cannot understand why spread operator is used无法理解为什么使用传播运算符
【发布时间】:2018-05-08 07:00:36
【问题描述】:

我正在使用 ngx-charts(Angular2+ 的图表库),我发现这行代码我不明白。

@Input() activeEntries: any[] = [];

/* ... */

/* Then, in a function */
this.activeEntries = [...this.activeEntries];

对我来说,它没有任何作用。你知道这种用法和它的作用吗?

谢谢

【问题讨论】:

  • 数组是一个对象。 JS 中的对象是使用引用分配的。因此,如果您直接分配它,两个变量将指向相同的位置。 [...this.activeEntries] 这将制作一个副本。这与array.slice(0) 相同
  • 创建一个新数组而不是复制一个引用。

标签: javascript arrays spread-syntax


【解决方案1】:

通过传播数组文字中this.activeEntries的内容,这段代码正在创建该数组的副本

然后将对该副本的引用分配回this.activeEntries,覆盖原来的引用。鉴于为什么有必要,从上下文中尚不清楚。

【讨论】:

  • 问题:有什么理由比更直接和清晰的Array.from()更可取?
  • 我希望这只是为了保持一致性 - 同一个库大量使用 array = [ new_element, ... array ] 作为前置操作。
猜你喜欢
  • 2015-11-28
  • 1970-01-01
  • 2020-12-12
  • 2023-03-19
  • 2021-04-28
  • 2017-12-09
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多