ECMAScript SPEC中的[Yield, Await, In, Return]表达的是什么

StatementList[Return]:
ReturnStatement
ExpressionStatement
是下面的缩写
StatementList:
ReturnStatement
ExpressionStatement
StatementList_Return:
ReturnStatement
ExpressionStatement
但是并不知道,后面加一个_Return具体表达了一个什么意思
哪位大神指导一下,困惑好几天了

阅读 3k
1 个回答

就是把两条语法写一起了啊。表示啥意思要看它用在了什么地方。这给得找真语法看了。必然两个会有所不同(通常是用在了不同的地方),才会分成两个的。这里只是个示例,并不是真语法,没法解释区别。

另外标准里也写了,由于这种简写,可能很生成一些根本用不到的语法,忽略就好了。

比如说,FunctionBody 是带 [Yield, Await]的,一共有四个版本。

FunctionExpression 用了 FunctionBody

GeneratorBody 用了 FunctionBody_Yield

AsyncGeneratorBody 用了 FunctionBody_Yield_Await

AsyncFunctionBody 用了 FunctionBody_Await

从上面来看,没后缀的版本用于普通函数, _Yield 版本用于 Generator, _Yield_Await 版本用于 Async Generator ,_Await 版本用于 async 函数。

另外,标准里的一些 note 解释了一些参数的作用。比如_In

The [In] grammar parameter is needed to avoid confusing the in operator in a relational expression with the in operator in a for statement.
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题