(函数表达式){使用分组运算符将函数表达式括起来}是否实际有效

Is (function expression) {Using grouping operator to surround a function expression} actually valid?

本文关键字:函数 表达式 起来 是否 有效 运算符      更新时间:2023-09-26

基于 2011 年 6 月 5.1 日的官方 ECMA-262 版标准:

语法摘要定义分组运算符(括号)只能包含一个表达式:

PrimaryExpression :
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )
表达式

只能是赋值表达式(或这些表达式的序列)(滚动到第 A.3 节末尾)

Expression :
AssignmentExpression
Expression , AssignmentExpression

因此,根据ECMA-262版本5.1,以下内容应该是不正确的:(FunctionExpression)

经过一番挖掘,我发现它实际上是有效的。这是完整的推导(要追溯它,请转到第 A.3 节的末尾,并从 Expression 开始向上跟踪推导:

Expression -> AssignmentExpression -> ConditionalExpression ->
LogicalORExpression -> LogicalANDExpression -> 
BitwiseORExpression -> BitwiseXORExpression -> 
BitwiseANDExpression -> EqualityExpression -> 
RelationalExpression -> ShiftExpression -> AdditiveExpression -> 
MultiplicativeExpression -> UnaryExpression -> 
PostfixExpression -> LeftHandSideExpression -> NewExpression -> 
MemberExpression -> FunctionExpression