【发布时间】:2016-05-03 08:29:09
【问题描述】:
为什么spread算子不能多次使用?
let arr = [[[1, 2, 3]]];
console.log(arr); // Array [ Array[1] ]
console.log(...arr); // Array [ Array[3] ]
console.log(...(...arr));
// SyntaxError: expected '=>' after argument list, got ')'
我希望:
console.log(...(...arr)); // Array [ 1, 2, 3 ]
【问题讨论】:
-
...(arr)有效。同...arr -
根据 ES6 规范,当遇到扩展运算符时,会从扩展对象创建迭代器,该对象是评估工作示例
arr中的赋值表达式的结果,例如...arr。使用console.log(...(...arr));,您试图将展开运算符 + 赋值表达式作为赋值表达式传递给另一个展开运算符。见ecma-international.org/ecma-262/6.0/#sec-argument-lists -
您可能想尝试
console.log(...[].concat(...arr))(或任何其他flattening 函数)
标签: javascript ecmascript-6 spread-syntax