【问题标题】:What is the significance of variable = [...variable] in es6 [duplicate]es6中variable = [...variable]的意义是什么[重复]
【发布时间】:2018-05-25 12:04:08
【问题描述】:

我有一个变量 arg,它被分配如下

arg = [...arg]; 

这个作业是什么意思?

【问题讨论】:

  • 虽然上述文档可能解释了扩展运算符,但我认为 OP 提出了一些更具体的问题 - “为什么使用扩展运算符将变量 分配给自身? "
  • 我的意思是......我们可以告诉你这是做什么的,但这真的是你要问的吗?因为鉴于有关该主题的文档或一些 console.logs,这非常明显。
  • 意义在于写这个的人需要学习如何写出更清晰的代码。
  • 是的,我想问一下数组是否被过滤如下 args.forEach((Item: any) => {...} . 后跟 args= [...args]; args = [...args] 的意义是什么?

标签: javascript ecmascript-6


【解决方案1】:

假设原来的arg是一个数组

这里发生的事情最好用一个例子来说明

const x = [1,2,3,4];
const y = [...x];
x == y; // false
x === y; // false
x[0] == y[0]; // true
x[0] === y[0]; // true

因此,虽然数组的内容保持不变,但数组本身是另一个引用。所以这创建了数组的副本,因此原始数组不会被修改。

这方面的一个例子可以在方法中

function example1(x) {
  x = [...x];
  x[0] = 0;
  return x;
}
function example2(x) {
  x[0] = 0;
  return x;
}

const a = [1,2,3];
console.log(a);
const b = example1(a);
// The input variable is not mutated
console.log(a); // [1,2,3]
console.log(b); // [0,2,3]
const c = example2(a);
// The input variable is mutated as well
console.log(a); // [0,2,3]
console.log(c); // [0,2,3]

【讨论】:

  • 基于这个问题,还有相当大的猜测空间。从代码质量的角度来看,将字符串散布到这样的数组中似乎是不正确的。最可能的用例是快速创建数组的副本以防止触及原始引用
  • 是的,我在意识到之后删除了我的评论。话虽如此,我并没有投反对票 - 尽管我有一种预感,这可能是因为您提交了一个“猜测”作为答案(正如您自己承认的那样)。
猜你喜欢
  • 2021-10-11
  • 2015-10-23
  • 2017-06-09
  • 1970-01-01
  • 2019-11-16
  • 2015-06-25
  • 2011-08-18
  • 1970-01-01
  • 2014-04-21
相关资源
最近更新 更多