Синтаксис списка параметров
UniqueFormalParameters [Yield, Await] :
FormalParameters [?Yield, ?Await]
FormalParameters [Yield, Await] :
[empty]
FunctionRestParameter [?Yield, ?Await]
FormalParameterList [?Yield, ?Await]
FormalParameterList [?Yield, ?Await] ,
FormalParameterList [?Yield, ?Await] , FunctionRestParameter [?Yield, ?Await]
FormalParameterList [Yield, Await] :
FormalParameter [?Yield, ?Await]
FormalParameterList [?Yield, ?Await] , FormalParameter [?Yield, ?Await]
FunctionRestParameter [Yield, Await] :
BindingRestElement [?Yield, ?Await]
FormalParameter [Yield, Await] :
BindingElement [?Yield, ?Await]
Статическая семантика: ранние ошибки
UniqueFormalParameters : FormalParameters
- Это синтаксическая ошибка, если BoundNames из FormalParameters содержит какие-либо повторяющиеся элементы.
FormalParameters : FormalParameterList
- Это синтаксическая ошибка, если IsSimpleParameterList из FormalParameterList имеет значение false, а BoundNames из FormalParameterList содержит любые повторяющиеся элементы.
Несколько вхождений одного и того же BindingIdentifier в FormalParameterList разрешено только для функций, которые имеют простые списки параметров и не определены в коде строгого режима.
Статическая семантика: Содержит выражение — ContainsExpression
{ }
1. Вернуть false.
ObjectBindingPattern : { BindingPropertyList , BindingRestProperty }
1. Вернуть ContainsExpression из BindingPropertyList.
ArrayBindingPattern : [ Elision opt ]
1. Вернуть false.
ArrayBindingPattern : [ Elision opt BindingRestElement ]
1. Вернуть ContainsExpression из BindingRestElement.
ArrayBindingPattern : [ BindingElementList , Elision opt ]
1. Вернуть ContainsExpression из BindingElementList.
ArrayBindingPattern : [ BindingElementList , Elision opt BindingRestElement ]
1. Пусть has будет ContainsExpression из BindingElementList. 2. Если has является true (истина), вернуть true (истину). 3. Вернуть ContainsExpression из BindingRestElement.
BindingPropertyList : BindingPropertyList , BindingProperty
1. Пусть has будет ContainsExpression из BindingPropertyList. 2. Если has является true (истина), вернуть true (истину). 3. Вернуть ContainsExpression из BindingProperty.
BindingElementList : BindingElementList , BindingElisionElement
1. Пусть has будет ContainsExpression из BindingElementList. 2. Если has является true (истина), вернуть true (истину). 3. Вернуть ContainsExpression из BindingElisionElement.
BindingElisionElement : Elision opt BindingElement
1. Вернуть ContainsExpression из BindingElement.
BindingProperty : PropertyName : BindingElement
1. Пусть has будет IsComputedPropertyKey из PropertyName. 2. Если has является true (истина), вернуть true (истину). 3. Вернуть ContainsExpression из BindingElement.
BindingElement : BindingPattern Initializer
1. Вернуть true.
SingleNameBinding : BindingIdentifier
1. Вернуть false.
SingleNameBinding : BindingIdentifier Initializer
1. Вернуть true.
BindingRestElement : … BindingIdentifier
1. Вернуть false.
BindingRestElement : … BindingPattern
1. Вернуть ContainsExpression из BindingPattern.
FormalParameters : [empty]
1. Вернуть false.
FormalParameters : FormalParameterList , FunctionRestParameter
1. Если ContainsExpression из FormalParameterList является true (истинно), вернуть true (истину). 2. Верните ContainsExpression из FunctionRestParameter.
FormalParameterList : FormalParameterList , FormalParameter
1. Если ContainsExpression из FormalParameterList является true (истинно), вернуть true (истину). 2. Верните ContainsExpression из FormalParameter.
ArrowParameters : BindingIdentifier
1. Return false.
ArrowParameters : CoverParenthesizedExpressionAndArrowParameterList
1. Пусть formals будет параметрами ArrowFormalParameters, которые покрываются CoverParenthesizedExpressionAndArrowParameterList. 2. Вернуть ContainsExpression от formals.
AsyncArrowBindingIdentifier : BindingIdentifier
1. Return false.
Статическая семантика: Является Ли Простым Списком Параметров? — IsSimpleParameterList
BindingElement : BindingPattern
1. Вернуть false.
BindingElement : BindingPattern Initializer
1. Вернуть false.
SingleNameBinding : BindingIdentifier
1. Вернуть true.
SingleNameBinding : BindingIdentifier Initializer
1. Вернуть false.
FormalParameters : [empty]
1. Вернуть true.
FormalParameters : FunctionRestParameter
1. Вернуть false.
FormalParameters : FormalParameterList , FunctionRestParameter
1. Вернуть false.
FormalParameterList : FormalParameterList , FormalParameter
1. Если IsSimpleParameterList из FormalParameterList имеет значение false, вернуть false. 2. Вернуть IsSimpleParameterList из FormalParameter.
FormalParameter : BindingElement
1. Вернуть IsSimpleParameterList из BindingElement.
ArrowParameters : BindingIdentifier
1. Вернуть true.
ArrowParameters : CoverParenthesizedExpressionAndArrowParameterList
1. Пусть formals будут параметрами ArrowFormalParameters, которые покрываются CoverParenthesizedExpressionAndArrowParameterList. 2. Вернуть IsSimpleParameterList из formals.
AsyncArrowBindingIdentifier : BindingIdentifier
1. Вернуть true.
CoverCallExpressionAndAsyncArrowHead : MemberExpression Arguments
1. Пусть head будет AsyncArrowHead, который покрывается CoverCallExpressionAndAsyncArrowHead. 2. Вернуть IsSimpleParameterList из head.
Статическая семантика: Имеет инициализатор? — HasInitializer
BindingElement : BindingPattern
1. Вернуть false.
BindingElement : BindingPattern Initializer
1. Вернуть true.
SingleNameBinding : BindingIdentifier
1. Вернуть false.
SingleNameBinding : BindingIdentifier Initializer
1. Вернуть true.
FormalParameterList : FormalParameterList , FormalParameter
1. Если HasInitializer из FormalParameterList имеет значение true, вернуть true. 2. Вернуть HasInitializer из FormalParameter.
Статическая семантика: Ожидаемое количество аргументов — ExpectedArgumentCount
[empty]
1. Вернуть 0.
FormalParameters : FormalParameterList , FunctionRestParameter
1. Вернуть ExpectedArgumentCount из FormalParameterList.
ExpectedArgumentCount в FormalParameterList — это количество FormalParameters слева от оставшегося параметра или первого FormalParameter с инициализатором. FormalParameter без инициализатора допускается после первого параметра с инициализатором, но такие параметры считаются необязательными, с undefined в качестве значения по умолчанию.
FormalParameterList : FormalParameter
1. Если HasInitializer для FormalParameter является true (истинно), вернуть 0. 2. Вернуть 1.
FormalParameterList : FormalParameterList , FormalParameter
1. Пусть count будет ExpectedArgumentCount из FormalParameterList. 2. Если HasInitializer для FormalParameterList является true (истинно) или HasInitializer для FormalParameter является true (истинно), вернуть счетчик count. 3. Вернуть count + 1.
ArrowParameters : BindingIdentifier
1. Вернуть 1.
ArrowParameters : CoverParenthesizedExpressionAndArrowParameterList
1. Пусть formals будут параметрами ArrowFormalParameters, которые покрываются CoverParenthesizedExpressionAndArrowParameterList. 2. Вернуть ExpectedArgumentCount из formals.
PropertySetParameterList : FormalParameter
1. Если HasInitializer для FormalParameter является true (истинно), вернуть 0. 2. Вернуть 1.
AsyncArrowBindingIdentifier : BindingIdentifier
1. Вернуть 1.
Информационные ссылки
Стандарт ECMAScript — Раздел «15.1 Parameter Lists» — https://tc39.es/ecma262/#sec-parameter-lists