gpt4 book ai didi

javascript - 为什么我们不能在数组函数参数中省略数组破坏中的括号?

转载 作者:搜寻专家 更新时间:2023-10-30 20:58:36 25 4
gpt4 key购买 nike

假设我有以下代码:

  1. 这个例子有效

    ...
    .filter(([,second]) => console.log(second))
  2. 这不是

    ...
    .filter([,second] => console.log(second))

为什么我们必须将数组破坏包装在括号中?这不是样板文件吗?

最佳答案

这正是 ES2015 规范规定的行为。 () 只有在参数列表只是一个简单的参数时才是可选的。

来自spec

ArrowFunction[In, Yield] :
ArrowParameters[?Yield] [no LineTerminator here] => ConciseBody[?In]
ArrowParameters[Yield] :
BindingIdentifier[?Yield]
CoverParenthesizedExpressionAndArrowParameterList

因此箭头参数可以是绑定(bind)标识符或CoverParenthesizedExpressionAndArrowParameterList

CoverParenthesizedExpressionAndArrowParameterList 是一个常规参数列表(如 here 所示)

CoverParenthesizedExpressionAndArrowParameterList[Yield] :
( Expression[In, ?Yield] )
( )
( ... BindingIdentifier[?Yield] )
( Expression[In, ?Yield] , ... BindingIdentifier[?Yield] )

所以我们可以编写一个简单参数的情况是 BindingIdentifier 情况,如 here 所示只是一个简单的标识符,所以你不能使用解构模式:

BindingIdentifier[Yield] :Identifier

关于javascript - 为什么我们不能在数组函数参数中省略数组破坏中的括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53204573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com