在javascript中多次使用spread操作符? [英] Using spread operator multiple times in javascript?

查看:127
本文介绍了在javascript中多次使用spread操作符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  let arr = [[[1,2,3] ]]; 

console.log(arr); // Array [Array [1]]
console.log(... arr); // Array [Array [3]]
console.log(...(... arr));
// SyntaxError:expected'=>'参数列表后,得到''''

我会期待:

  console.log(...(... arr)); // Array [1,2,3] 


解决方案


为什么不能多次使用运算符?


... 不是运算符。 (... arr)是无效的JavaScript。 ... 只允许在数组文字和参数列表中,但这些是语法的特殊形式(注意 ...



ArrayLiteral

  ArrayLiteral:
[Elision_opt]
[ElementList]
[ElementList,Elision_opt]

元素列表:
Elision_opt SpreadElement
ElementList,Elision_opt SpreadElement

SpreadElement:
... AssignmentExpression

参数

 参数:
()
(ArgumentList)

ArgumentList:
AssignmentExpression
... AssignmentExpression
ArgumentList,AssignmentExpression
ArgumentList,... AssignmentExpression


Why can't spread operator be used multiple times?

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 ')'

I would expect:

console.log(...(...arr)); // Array [ 1, 2, 3 ]

解决方案

Why can't spread operator be used multiple times?

... is not an operator. (...arr) is not valid JavaScript. ... is only allowed inside array literals and in arguments lists, but those are special forms of the syntax (notice the ... in the production rules below).

ArrayLiteral

ArrayLiteral :
  [ Elision_opt ]
  [ ElementList ]
  [ ElementList , Elision_opt ]

ElementList :
  Elision_opt SpreadElement
  ElementList , Elision_opt SpreadElement

SpreadElement:
  ... AssignmentExpression

Arguments

Arguments :
  ( )
  ( ArgumentList )

ArgumentList :
  AssignmentExpression
  ... AssignmentExpression
  ArgumentList , AssignmentExpression
  ArgumentList , ... AssignmentExpression

这篇关于在javascript中多次使用spread操作符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆