什么是EcmaScript语法中的[Yield,Await,In,Return]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是EcmaScript语法中的[Yield,Await,In,Return]相关的知识,希望对你有一定的参考价值。
EcmaScript中的许多作品都带有以下“修饰符”:
[Yield, Await, In, Return]
这里有一些例子:
ArrayLiteral[Yield, Await]:
...
ElementList[Yield, Await]:
... AssignmentExpression[+In, ?Yield, ?Await]
我已经通过规范搜索了解释,特别是Grammar Notation
部分,但找不到它。应该在那里。有人可以请我指出相关段落并提供一个简短的解释吗?
Section 5.1.5: Grammar Notation -
可以通过“[参数]”形式的下标注释来参数化生成,其可以作为由生产定义的非终结符号的后缀。 “参数”可以是单个名称,也可以是逗号分隔的名称列表。参数化生产是一组生产的简写,这些生产定义参数名称的所有组合,前面带有下划线,附加到参数化的非终结符号。这意味着:
StatementList[Return]: ReturnStatement ExpressionStatement是一个方便的缩写:
StatementList: ReturnStatement ExpressionStatement StatementList_Return: ReturnStatement ExpressionStatement然后:
StatementList[Return, In]: ReturnStatement ExpressionStatement是以下内容的缩写:
StatementList: ReturnStatement ExpressionStatement StatementList_Return: ReturnStatement ExpressionStatement StatementList_In: ReturnStatement ExpressionStatement StatementList_Return_In: ReturnStatement ExpressionStatement多个参数产生组合数量的产品,并非所有产品都必须在完整的语法中引用。
它继续谈论有关参数化右侧,添加“选择”等。
(搜索时,不要只是寻找[Return]
,特别是这样,因为它们可以并且通常会出现在像[Yield, Await, Return]
和[?Yield, ?Await, ?Return]
这样的组中,就像Block的语法一样。)
Section 12.1.1: Identifiers - Static Semantics: Early Errors -
如果此生产具有[Yield]参数且Identifier的StringValue为“yield”,则为语法错误。
如果此生产具有[Await]参数且Identifier的StringValue为“await”,则为语法错误。
Section 12.10: Relational Operators -
需要[In]语法参数以避免在
in
语句中将in
运算符与for
运算符中的qazxswpoi运算符混淆。
以上是关于什么是EcmaScript语法中的[Yield,Await,In,Return]的主要内容,如果未能解决你的问题,请参考以下文章
C#中的yield return与Unity中的Coroutine(协程)
ECMAScript 文档中的 SpreadElement 是啥?和 MDN 的 Spread 语法一样吗?