ECMAScript | Списки параметров (Parameter Lists)

ECMAScript | Списки параметров (Parameter Lists)

Синтаксис списка параметров

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

Примечание

Несколько вхождений одного и того же BindingIdentifier в FormalParameterList разрешено только для функций, которые имеют простые списки параметров и не определены в коде строгого режима.

 

Статическая семантика: Содержит выражение — ContainsExpression

ObjectBindingPattern :

{ }

{ BindingRestProperty }

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

FormalParameters :

[empty]

FunctionRestParameter

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