为什么不能多次使用运算符?
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,3 ]
解决方法
Why can’t spread operator be used multiple times?
…不是操作符. (… arr)是无效的JavaScript. …只允许在数组文字和参数列表中,但这些是语法的特殊形式(请注意下面的生产规则中的…).
ArrayLiteral : [ Elision_opt ] [ ElementList ] [ ElementList,Elision_opt ] ElementList : Elision_opt SpreadElement ElementList,Elision_opt SpreadElement SpreadElement: ... AssignmentExpression
Arguments : ( ) ( ArgumentList ) ArgumentList : AssignmentExpression ... AssignmentExpression ArgumentList,AssignmentExpression ArgumentList,... AssignmentExpression