?
u
m
/
Various ECMAScript language elements cause the creation of ECMAScript
Multiple occurrences of the same
The syntax-directed operation ContainsExpression takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The syntax-directed operation IsSimpleParameterList takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The syntax-directed operation HasInitializer takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The syntax-directed operation ExpectedArgumentCount takes no arguments and returns an
The ExpectedArgumentCount of a
The
The syntax-directed operation FunctionBodyContainsUseStrict takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The syntax-directed operation EvaluateFunctionBody takes arguments functionObject and argumentsList (a
The syntax-directed operation InstantiateOrdinaryFunctionObject takes arguments env and privateEnv and returns a
An anonymous export default
declaration, and its function code is therefore always
The syntax-directed operation InstantiateOrdinaryFunctionExpression takes optional argument name and returns a
The
An alternative semantics is provided in
A
When processing an instance of the production
the interpretation of
The syntax-directed operation ConciseBodyContainsUseStrict takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The syntax-directed operation EvaluateConciseBody takes arguments functionObject and argumentsList (a
The syntax-directed operation InstantiateArrowFunctionExpression takes optional argument name and returns a
An arguments
, super
, this
, or new.target
. Any reference to arguments
, super
, this
, or new.target
within an super
, the super
is always contained within a non-super
is accessible via the env that is captured by the
The syntax-directed operation HasDirectSuper takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The syntax-directed operation SpecialMethod takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The syntax-directed operation DefineMethod takes argument object and optional argument functionPrototype and returns either a
The syntax-directed operation MethodDefinitionEvaluation takes arguments object and enumerable and returns either a
The syntactic context immediately following yield
requires use of the
The syntax-directed operation EvaluateGeneratorBody takes arguments functionObject and argumentsList (a
The syntax-directed operation InstantiateGeneratorFunctionObject takes arguments env and privateEnv and returns a
An anonymous export default
declaration, and its function code is therefore always
The syntax-directed operation InstantiateGeneratorFunctionExpression takes optional argument name and returns a
The
throw
method are propagated. throw
method are processed similarly to an inner next
.throw
method, this throw is going to terminate the yield*
loop. But first we need to give iterator a chance to clean up.yield*
protocol violation: iterator does not have a throw
method.The syntax-directed operation EvaluateAsyncGeneratorBody takes arguments functionObject and argumentsList (a
The syntax-directed operation InstantiateAsyncGeneratorFunctionObject takes arguments env and privateEnv and returns a
An anonymous export default
declaration.
The syntax-directed operation InstantiateAsyncGeneratorFunctionExpression takes optional argument name and returns a
The
A class definition is always
It is a Syntax Error if
await
is The syntax-directed operation ClassElementKind takes no arguments and returns
The syntax-directed operation ConstructorMethod takes no arguments and returns a
Early Error rules ensure that there is only one method definition named
The syntax-directed operation IsStatic takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The syntax-directed operation NonConstructorElements takes no arguments and returns a
The syntax-directed operation PrototypePropertyNameList takes no arguments and returns a
The syntax-directed operation AllPrivateIdentifiersValid takes argument names and returns a Boolean.
Every grammar production alternative in this specification which is not listed below implicitly has the following default definition of AllPrivateIdentifiersValid:
The syntax-directed operation PrivateBoundIdentifiers takes no arguments and returns a
The syntax-directed operation ContainsArguments takes no arguments and returns a Boolean.
Every grammar production alternative in this specification which is not listed below implicitly has the following default definition of ContainsArguments:
The syntax-directed operation ClassFieldDefinitionEvaluation takes argument homeObject and returns either a
The syntax-directed operation ClassStaticBlockDefinitionEvaluation takes argument homeObject and returns a
The syntax-directed operation EvaluateClassStaticBlockBody takes argument functionObject and returns either a
The syntax-directed operation ClassElementEvaluation takes argument object and returns either a
The syntax-directed operation ClassDefinitionEvaluation takes arguments classBinding and className and returns either a
For ease of specification, private methods and accessors are included alongside private fields in the [[PrivateElements]] slot of class instances. However, any given object has either all or none of the private methods and accessors defined by a given class. This feature has been designed so that implementations may choose to implement private methods and accessors using a strategy which does not require tracking each method or accessor individually.
For example, an implementation could directly associate instance private methods with their corresponding this
value. Looking up an instance private method on an object then consists of checking that the class
This differs from private fields: because field initializers can throw during class instantiation, an individual object may have some proper subset of the private fields of a given class, and so private fields must in general be tracked individually.
It is defined piecewise over the following productions:
constructor(...args) { super(...args); }
. The most notable distinction is that while the aforementioned ECMAScript source text observably calls the %Array.prototype%
, this function does not.constructor() {}
.The syntax-directed operation BindingClassDeclarationEvaluation takes no arguments and returns either a
await
is parsed as a
When await
may be parsed as an identifier when the [Await] parameter is absent. This includes the following contexts:
Unlike
The syntax-directed operation InstantiateAsyncFunctionObject takes arguments env and privateEnv and returns a
The syntax-directed operation InstantiateAsyncFunctionExpression takes optional argument name and returns a
The
The syntax-directed operation EvaluateAsyncFunctionBody takes arguments functionObject and argumentsList (a
When processing an instance of the production
the interpretation of
The syntax-directed operation AsyncConciseBodyContainsUseStrict takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The syntax-directed operation EvaluateAsyncConciseBody takes arguments functionObject and argumentsList (a
The syntax-directed operation InstantiateAsyncArrowFunctionExpression takes optional argument name and returns a
The abstract operation IsInTailPosition takes argument call (a
Tail Position calls are only defined in
The syntax-directed operation HasCallInTailPosition takes argument call and returns a Boolean.
call is a
A potential tail position call that is immediately followed by return
The abstract operation PrepareForTailCall takes no arguments and returns
A tail position call must either release any transient internal resources associated with the currently executing function
For example, a tail position call should only grow an implementation's activation record stack by the amount that the size of the target function's activation record exceeds the size of the calling function's activation record. If the target function's activation record is smaller, then the total size of the stack should decrease.