从MDN:Spread Syntax为什么传播元素不适合复制多维数组?
注:通常情况下,传播运营商在ES2015进入深度只有一层,而复制数组。因此,它们不适合复制多维数组。 Object.assign()和Object spread运算符的情况也是如此。请看下面的例子以获得更好的理解。
var a = [[1], [2], [3]];
var b = [...a];
b.shift().shift(); // 1
// Now array b is: [[2], [3]]
什么是上述声明的意义呢?上述代码示例的工作原理与您使用.slice()方法将数组复制到b中相同。我尝试在此处添加另一个维度:https://repl.it/HKOq/2,并且事情仍按预期工作。
那么为什么扩散算子不适合复制多维数组?
我很感激任何帮助。
编辑:
读通过estus和vol7ron答案帮我理出头绪。基本上,正如estus在技术上指出的那样,阵列中只有数组而不是多维数组。
而且,vol7ron只解释了数组的第一层被复制,因此内存中的对象对于任何其他嵌套元素都保持不变。
我也错了,怀疑利用扩展运营商应该比切片运营商不同的行为任何
['''不是操作员!](http://stackoverflow.com/a/37152508/218196) –
@ FelixKling - 请修改MDN文章,该文章多次重复传播错误其余语法。 '...'是用于休息和传播语法的[*标点符号*](http://ecma-international.org/ecma-262/7.0/index.html#sec-punctuators)。 – RobG