mirror of
https://github.com/bendtherules/ask262.git
synced 2026-08-18 13:21:55 +00:00
5348 lines
600 KiB
HTML
5348 lines
600 KiB
HTML
<!DOCTYPE html><html lang="en-GB-oxendict"><head><meta name="viewport" content="width=device-width, initial-scale=1"><meta charset="utf-8"><meta property="og:image" content="https://tc39.es/ecmarkup/ecma-logo.png"><meta property="og:title" content="ECMAScript® 2026 Language Specification"><meta property="og:description" content="Introduction
|
||
This Ecma Standard defines the ECMAScript 2026 Language. It is the seventeenth edition of the ECMAScript Language Specification. ECMAScript is based on several originating technologies, the most well-known being JavaScript (Netscape) and JScript (Microsoft). The language was invent">
|
||
<link rel="icon" href="../img/favicon.ico">
|
||
<link rel="stylesheet" href="../assets/css/ecmarkup.css"><link rel="stylesheet" href="../assets/css/print.css" media="print">
|
||
|
||
<title>ECMAScript® 2026 Language Specification</title><script src="../assets/js/multipage.js?cache=Wu2V1pj2" defer=""></script><script src="../assets/js/ecmarkup.js?cache=BPFBckdu" defer=""></script><link rel="canonical" href="../#sec-syntax-directed-operations"></head>
|
||
<body><div id="spec-container"><emu-clause id="sec-syntax-directed-operations">
|
||
<h1><span class="secnum">8</span> Syntax-Directed Operations</h1>
|
||
<p>In addition to those defined in this section, specialized <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_2923"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operations</a></emu-xref> are defined throughout this specification.</p>
|
||
|
||
<emu-clause id="sec-evaluation" type="sdo" aoid="Evaluation">
|
||
<h1><span class="secnum">8.1</span> Runtime Semantics: Evaluation</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_2924"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> Evaluation takes no arguments and returns a <emu-xref href="#sec-completion-record-specification-type" id="_ref_2925"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref>.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
The definitions for this operation are distributed over the "ECMAScript Language" sections of this specification. Each definition appears after the defining occurrence of the relevant productions.
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-syntax-directed-operations-scope-analysis">
|
||
<h1><span class="secnum">8.2</span> Scope Analysis</h1>
|
||
|
||
<emu-clause id="sec-static-semantics-boundnames" oldids="sec-identifiers-static-semantics-boundnames,sec-let-and-const-declarations-static-semantics-boundnames,sec-variable-statement-static-semantics-boundnames,sec-destructuring-binding-patterns-static-semantics-boundnames,sec-for-in-and-for-of-statements-static-semantics-boundnames,sec-function-definitions-static-semantics-boundnames,sec-arrow-function-definitions-static-semantics-boundnames,sec-generator-function-definitions-static-semantics-boundnames,sec-async-generator-function-definitions-static-semantics-boundnames,sec-class-definitions-static-semantics-boundnames,sec-async-function-definitions-static-semantics-BoundNames,sec-async-arrow-function-definitions-static-semantics-BoundNames,sec-imports-static-semantics-boundnames,sec-exports-static-semantics-boundnames" type="sdo" aoid="BoundNames"><span id="sec-exports-static-semantics-boundnames"></span><span id="sec-imports-static-semantics-boundnames"></span><span id="sec-async-arrow-function-definitions-static-semantics-BoundNames"></span><span id="sec-async-function-definitions-static-semantics-BoundNames"></span><span id="sec-class-definitions-static-semantics-boundnames"></span><span id="sec-async-generator-function-definitions-static-semantics-boundnames"></span><span id="sec-generator-function-definitions-static-semantics-boundnames"></span><span id="sec-arrow-function-definitions-static-semantics-boundnames"></span><span id="sec-function-definitions-static-semantics-boundnames"></span><span id="sec-for-in-and-for-of-statements-static-semantics-boundnames"></span><span id="sec-destructuring-binding-patterns-static-semantics-boundnames"></span><span id="sec-variable-statement-static-semantics-boundnames"></span><span id="sec-let-and-const-declarations-static-semantics-boundnames"></span><span id="sec-identifiers-static-semantics-boundnames"></span>
|
||
<h1><span class="secnum">8.2.1</span> Static Semantics: BoundNames</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_2926"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> BoundNames takes no arguments and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2927"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings.</p>
|
||
<emu-note id="note-star-default-star"><span class="note"><a href="syntax-directed-operations.html#note-star-default-star">Note</a></span><div class="note-contents">
|
||
<p><emu-val>"*default*"</emu-val> is used within this specification as a synthetic name for a module's default export when it does not have another name. An entry in the module's <var class="field">[[Environment]]</var> is created with that name and holds the corresponding value, and resolving the export named <emu-val>"default"</emu-val> by calling <emu-xref href="#sec-resolveexport" title="" id="_ref_226"><a href="ecmascript-language-scripts-and-modules.html#sec-resolveexport">ResolveExport ( <var>exportName</var> [ , <var>resolveSet</var> ] )</a></emu-xref> for the module will return a <emu-xref href="#resolvedbinding-record" id="_ref_2928"><a href="ecmascript-language-scripts-and-modules.html#resolvedbinding-record">ResolvedBinding Record</a></emu-xref> whose <var class="field">[[BindingName]]</var> is <emu-val>"*default*"</emu-val>, which will then resolve in the module's <var class="field">[[Environment]]</var> to the above-mentioned value. This is done only for ease of specification, so that anonymous default exports can be resolved like any other export. This <emu-val>"*default*"</emu-val> string is never accessible to ECMAScript code or to the module linking algorithm.</p>
|
||
</div></emu-note>
|
||
<p>It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="BindingIdentifier" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="bras6mo_" id="prod-Yc3dQCIS"><emu-nt id="_ref_17837"><a href="ecmascript-language-expressions.html#prod-Identifier">Identifier</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2929"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> whose sole element is the <emu-xref aoid="StringValue" id="_ref_2930"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_17838"><a href="ecmascript-language-expressions.html#prod-Identifier">Identifier</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingIdentifier" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0d8zyjn8" id="prod-0oRvH9Oa"><emu-t>yield</emu-t></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-val>"yield"</emu-val> ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingIdentifier" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="hx1dvlrw" id="prod-eP6tRBFI"><emu-t>await</emu-t></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-val>"await"</emu-val> ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LexicalDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="deqecbrp" id="prod-WhUrx1KG">
|
||
<emu-nt id="_ref_17839"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt>
|
||
<emu-nt id="_ref_17840"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2931"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17841"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dt40zeyt" id="prod-pdmM8758">
|
||
<emu-nt id="_ref_17842"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_17843"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2932"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17844"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2933"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17845"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2934"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LexicalBinding" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="c5neqctp" id="prod-SIbbs3t0">
|
||
<emu-nt id="_ref_17846"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_17847"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2935"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17848"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LexicalBinding" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dd1t5ekf" id="prod-WfIK7IbR">
|
||
<emu-nt id="_ref_17849"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt>
|
||
<emu-nt id="_ref_17850"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2936"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17851"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="VariableDeclarationList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="oavweevb" id="prod-PvG06doO">
|
||
<emu-nt id="_ref_17852"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_17853"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2937"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17854"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2938"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17855"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2939"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="VariableDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="c5neqctp" id="prod-TRoL9A8A">
|
||
<emu-nt id="_ref_17856"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_17857"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2940"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17858"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="VariableDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dd1t5ekf" id="prod-uemJBnZk">
|
||
<emu-nt id="_ref_17859"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt>
|
||
<emu-nt id="_ref_17860"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2941"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17861"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ObjectBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ObjectBindingPattern">ObjectBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-HmBRwRUL">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2942"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ObjectBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ObjectBindingPattern">ObjectBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ullzxsua" id="prod-VrgiRc7B">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17862"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_17863"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestProperty">BindingRestProperty</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2943"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17864"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2944"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17865"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestProperty">BindingRestProperty</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2945"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrayBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="kg5ha7xc" id="prod-e52_ta72">
|
||
<emu-t>[</emu-t>
|
||
<emu-nt optional="" id="_ref_17866"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2946"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrayBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dev8fspa" id="prod-gapTHhxd">
|
||
<emu-t>[</emu-t>
|
||
<emu-nt optional="" id="_ref_17867"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_17868"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2947"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17869"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrayBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jxqgfqnk" id="prod-uQApgi98">
|
||
<emu-t>[</emu-t>
|
||
<emu-nt id="_ref_17870"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt optional="" id="_ref_17871"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2948"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17872"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrayBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="7lkdseap" id="prod-UADb9W1C">
|
||
<emu-t>[</emu-t>
|
||
<emu-nt id="_ref_17873"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt optional="" id="_ref_17874"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_17875"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2949"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17876"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2950"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17877"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2951"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingPropertyList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="bzdeo9zt" id="prod-hRHC-ltw">
|
||
<emu-nt id="_ref_17878"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_17879"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingProperty">BindingProperty</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2952"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17880"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2953"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17881"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingProperty">BindingProperty</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2954"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingElementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="hiwampap" id="prod-HS4vlt-j">
|
||
<emu-nt id="_ref_17882"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_17883"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElisionElement">BindingElisionElement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2955"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17884"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2956"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17885"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElisionElement">BindingElisionElement</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2957"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingElisionElement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElisionElement">BindingElisionElement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="wo9nasvo" id="prod-C9gIgbxU">
|
||
<emu-nt optional="" id="_ref_17886"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_17887"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2958"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17888"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingProperty" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingProperty">BindingProperty</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="mhvrwluk" id="prod-MJIzQe4_">
|
||
<emu-nt id="_ref_17889"><a href="ecmascript-language-expressions.html#prod-PropertyName">PropertyName</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_17890"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2959"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17891"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="SingleNameBinding" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-SingleNameBinding">SingleNameBinding</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="c5neqctp" id="prod-T0DsYQHz">
|
||
<emu-nt id="_ref_17892"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_17893"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2960"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17894"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingElement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ahx6lm0w" id="prod-XX1yN-l7">
|
||
<emu-nt id="_ref_17895"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_17896"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2961"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17897"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0y1vvm1x" id="prod-Wj-eaJJJ">
|
||
<emu-nt id="_ref_17898"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt>
|
||
<emu-nt id="_ref_17899"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2962"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17900"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gxoavzvy" id="prod-AAggAe5k">
|
||
<emu-t>function</emu-t>
|
||
<emu-nt id="_ref_17901"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17902"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17903"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2963"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17904"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="smus6qca" id="prod-rmB8ZP2j">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17905"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17906"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-val>"*default*"</emu-val> ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FormalParameters" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-NuuiWZ7v"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2964"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FormalParameters" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uqeba6gz" id="prod-po75ZBLy">
|
||
<emu-nt id="_ref_17907"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameterList">FormalParameterList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_17908"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionRestParameter">FunctionRestParameter</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2965"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17909"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameterList">FormalParameterList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2966"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17910"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionRestParameter">FunctionRestParameter</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2967"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FormalParameterList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameterList">FormalParameterList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ijrjejbs" id="prod-dSRi9b3k">
|
||
<emu-nt id="_ref_17911"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameterList">FormalParameterList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_17912"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameter">FormalParameter</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2968"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17913"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameterList">FormalParameterList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2969"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17914"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameter">FormalParameter</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2970"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrowParameters" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ArrowParameters">ArrowParameters</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="yrb110hm" id="prod-B1jl1kwZ"><emu-nt id="_ref_17915"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>formals</var> be the <emu-nt id="_ref_17916"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowFormalParameters">ArrowFormalParameters</a></emu-nt> that is <emu-xref href="#sec-syntactic-grammar" id="_ref_2971"><a href="notational-conventions.html#sec-syntactic-grammar">covered</a></emu-xref> by <emu-nt id="_ref_17917"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt>.</li><li>Return the <emu-xref aoid="BoundNames" id="_ref_2972"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <var>formals</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="GeneratorDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fbyztjbh" id="prod-t6vQVPUG">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_17918"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17919"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17920"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2973"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17921"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="GeneratorDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dsczygsq" id="prod-qJNJRowC">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17922"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17923"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-val>"*default*"</emu-val> ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncGeneratorDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="e9lmm5cj" id="prod-D36uGDV1">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_17924"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17925"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17926"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2974"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17927"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncGeneratorDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xruu4gg0" id="prod-Fiyc5-gj">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17928"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17929"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-val>"*default*"</emu-val> ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tusuwhcv" id="prod-_x3zvham">
|
||
<emu-t>class</emu-t>
|
||
<emu-nt id="_ref_17930"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-nt id="_ref_17931"><a href="ecmascript-language-functions-and-classes.html#prod-ClassTail">ClassTail</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2975"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17932"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1ghyizwr" id="prod-0u78ulHy">
|
||
<emu-t>class</emu-t>
|
||
<emu-nt id="_ref_17933"><a href="ecmascript-language-functions-and-classes.html#prod-ClassTail">ClassTail</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-val>"*default*"</emu-val> ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncFunctionDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4mmt35rm" id="prod-G-h1FrC4">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-nt id="_ref_17934"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17935"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17936"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2976"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17937"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncFunctionDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="agdmcdye" id="prod-NaC_U8xV">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17938"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17939"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-val>"*default*"</emu-val> ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CoverCallExpressionAndAsyncArrowHead" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-CoverCallExpressionAndAsyncArrowHead">CoverCallExpressionAndAsyncArrowHead</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="vks-z6n3" id="prod-kRyJKqmR">
|
||
<emu-nt id="_ref_17940"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-nt id="_ref_17941"><a href="ecmascript-language-expressions.html#prod-Arguments">Arguments</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>head</var> be the <emu-nt id="_ref_17942"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowHead">AsyncArrowHead</a></emu-nt> that is <emu-xref href="#sec-syntactic-grammar" id="_ref_2977"><a href="notational-conventions.html#sec-syntactic-grammar">covered</a></emu-xref> by <emu-nt id="_ref_17943"><a href="ecmascript-language-functions-and-classes.html#prod-CoverCallExpressionAndAsyncArrowHead">CoverCallExpressionAndAsyncArrowHead</a></emu-nt>.</li><li>Return the <emu-xref aoid="BoundNames" id="_ref_2978"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <var>head</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ImportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration">ImportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="3jk_0iim" id="prod-FIZhG1Wl">
|
||
<emu-t>import</emu-t>
|
||
<emu-nt id="_ref_17944"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportClause">ImportClause</a></emu-nt>
|
||
<emu-nt id="_ref_17945"><a href="ecmascript-language-scripts-and-modules.html#prod-FromClause">FromClause</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_17946"><a href="ecmascript-language-scripts-and-modules.html#prod-WithClause">WithClause</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2979"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17947"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportClause">ImportClause</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ImportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration">ImportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="wzi3qp4_" id="prod-8gHjggua">
|
||
<emu-t>import</emu-t>
|
||
<emu-nt id="_ref_17948"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleSpecifier">ModuleSpecifier</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_17949"><a href="ecmascript-language-scripts-and-modules.html#prod-WithClause">WithClause</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2980"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ImportClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ImportClause">ImportClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="y9r1l58g" id="prod-gnkPkMbr">
|
||
<emu-nt id="_ref_17950"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportedDefaultBinding">ImportedDefaultBinding</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_17951"><a href="ecmascript-language-scripts-and-modules.html#prod-NameSpaceImport">NameSpaceImport</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2981"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17952"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportedDefaultBinding">ImportedDefaultBinding</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2982"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17953"><a href="ecmascript-language-scripts-and-modules.html#prod-NameSpaceImport">NameSpaceImport</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2983"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ImportClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ImportClause">ImportClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ih8rgsdx" id="prod-WTIt04mh">
|
||
<emu-nt id="_ref_17954"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportedDefaultBinding">ImportedDefaultBinding</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_17955"><a href="ecmascript-language-scripts-and-modules.html#prod-NamedImports">NamedImports</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2984"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17956"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportedDefaultBinding">ImportedDefaultBinding</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2985"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17957"><a href="ecmascript-language-scripts-and-modules.html#prod-NamedImports">NamedImports</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2986"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="NamedImports" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-NamedImports">NamedImports</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-2q0gunUG">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2987"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ImportsList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ImportsList">ImportsList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ggcfvgot" id="prod-phtlO1Je">
|
||
<emu-nt id="_ref_17958"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportsList">ImportsList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_17959"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportSpecifier">ImportSpecifier</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_2988"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17960"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportsList">ImportsList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="BoundNames" id="_ref_2989"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17961"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportSpecifier">ImportSpecifier</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_2990"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ImportSpecifier" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ImportSpecifier">ImportSpecifier</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="nso-0w0x" id="prod-4FuZGlZe">
|
||
<emu-nt id="_ref_17962"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleExportName">ModuleExportName</a></emu-nt>
|
||
<emu-t>as</emu-t>
|
||
<emu-nt id="_ref_17963"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportedBinding">ImportedBinding</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2991"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17964"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportedBinding">ImportedBinding</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gperhudl" id="prod-aRsChnnU">
|
||
<emu-t>export</emu-t>
|
||
<emu-nt id="_ref_17965"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportFromClause">ExportFromClause</a></emu-nt>
|
||
<emu-nt id="_ref_17966"><a href="ecmascript-language-scripts-and-modules.html#prod-FromClause">FromClause</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_17967"><a href="ecmascript-language-scripts-and-modules.html#prod-WithClause">WithClause</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="j2lh_kda" id="prod-sOWb3AM5">
|
||
<emu-t>export</emu-t>
|
||
<emu-nt id="_ref_17968"><a href="ecmascript-language-scripts-and-modules.html#prod-NamedExports">NamedExports</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2992"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="bg3oaw2m" id="prod-wpPb0--4">
|
||
<emu-t>export</emu-t>
|
||
<emu-nt id="_ref_17969"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2993"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17970"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="go9a4xdq" id="prod-yl8Kvf8S">
|
||
<emu-t>export</emu-t>
|
||
<emu-nt id="_ref_17971"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_2994"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17972"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cdfbfvfu" id="prod-oqm8ado6">
|
||
<emu-t>export</emu-t>
|
||
<emu-t>default</emu-t>
|
||
<emu-nt id="_ref_17973"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarationNames</var> be the <emu-xref aoid="BoundNames" id="_ref_2995"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17974"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt>.</li><li>If <var>declarationNames</var> does not include the element <emu-val>"*default*"</emu-val>, append <emu-val>"*default*"</emu-val> to <var>declarationNames</var>.</li><li>Return <var>declarationNames</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="w8pljwgc" id="prod-pmSnaEkm">
|
||
<emu-t>export</emu-t>
|
||
<emu-t>default</emu-t>
|
||
<emu-nt id="_ref_17975"><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarationNames</var> be the <emu-xref aoid="BoundNames" id="_ref_2996"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_17976"><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a></emu-nt>.</li><li>If <var>declarationNames</var> does not include the element <emu-val>"*default*"</emu-val>, append <emu-val>"*default*"</emu-val> to <var>declarationNames</var>.</li><li>Return <var>declarationNames</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4f6ct71n" id="prod-fy8WSBrE">
|
||
<emu-t>export</emu-t>
|
||
<emu-t>default</emu-t>
|
||
<emu-nt id="_ref_17977"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-val>"*default*"</emu-val> ».</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-declarationpart" type="sdo" aoid="DeclarationPart">
|
||
<h1><span class="secnum">8.2.2</span> Static Semantics: DeclarationPart</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_2997"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> DeclarationPart takes no arguments and returns a <emu-xref href="#sec-syntactic-grammar" id="_ref_2998"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="HoistableDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb" id="prod-g7IOVGn1"><emu-nt id="_ref_17978"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-nt id="_ref_17979"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="HoistableDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="r3zmbc2x" id="prod-sN7udk5J"><emu-nt id="_ref_17980"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-nt id="_ref_17981"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="HoistableDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xi-jap6o" id="prod-jjBSfSof"><emu-nt id="_ref_17982"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-nt id="_ref_17983"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="HoistableDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n353p_mm" id="prod-KvSTEPI7"><emu-nt id="_ref_17984"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-nt id="_ref_17985"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Declaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="bwk3zfoi" id="prod-kBBrFjaX"><emu-nt id="_ref_17986"><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-nt id="_ref_17987"><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Declaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jxaobega" id="prod-GAkiMJN6"><emu-nt id="_ref_17988"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-nt id="_ref_17989"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-isconstantdeclaration" oldids="sec-let-and-const-declarations-static-semantics-isconstantdeclaration,sec-function-definitions-static-semantics-isconstantdeclaration,sec-generator-function-definitions-static-semantics-isconstantdeclaration,sec-async-generator-function-definitions-static-semantics-isconstantdeclaration,sec-class-definitions-static-semantics-isconstantdeclaration,sec-async-function-definitions-static-semantics-IsConstantDeclaration,sec-exports-static-semantics-isconstantdeclaration" type="sdo" aoid="IsConstantDeclaration"><span id="sec-exports-static-semantics-isconstantdeclaration"></span><span id="sec-async-function-definitions-static-semantics-IsConstantDeclaration"></span><span id="sec-class-definitions-static-semantics-isconstantdeclaration"></span><span id="sec-async-generator-function-definitions-static-semantics-isconstantdeclaration"></span><span id="sec-generator-function-definitions-static-semantics-isconstantdeclaration"></span><span id="sec-function-definitions-static-semantics-isconstantdeclaration"></span><span id="sec-let-and-const-declarations-static-semantics-isconstantdeclaration"></span>
|
||
<h1><span class="secnum">8.2.3</span> Static Semantics: IsConstantDeclaration</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_2999"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> IsConstantDeclaration takes no arguments and returns a Boolean. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="LexicalDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="deqecbrp" id="prod-jGNpgH6g">
|
||
<emu-nt id="_ref_17990"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt>
|
||
<emu-nt id="_ref_17991"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="IsConstantDeclaration" id="_ref_3000"><a href="syntax-directed-operations.html#sec-static-semantics-isconstantdeclaration">IsConstantDeclaration</a></emu-xref> of <emu-nt id="_ref_17992"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LetOrConst" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="laxrvawy" id="prod-Iol_vN-I"><emu-t>let</emu-t></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LetOrConst" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="nim_d4hb" id="prod-xwFhJZXb"><emu-t>const</emu-t></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>true</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gxoavzvy" id="prod-5tjiqCsV">
|
||
<emu-t>function</emu-t>
|
||
<emu-nt id="_ref_17993"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17994"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17995"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="smus6qca" id="prod-Fqj8pzpb">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17996"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_17997"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="GeneratorDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fbyztjbh" id="prod-FmAf4OGl">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_17998"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_17999"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18000"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="dsczygsq" id="prod-2O3Y8NX3">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18001"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18002"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncGeneratorDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="e9lmm5cj" id="prod-wRhLbuAn">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_18003"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18004"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18005"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="xruu4gg0" id="prod-_1WUvl3J">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18006"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18007"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncFunctionDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4mmt35rm" id="prod-w95osZOA">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-nt id="_ref_18008"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18009"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18010"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="agdmcdye" id="prod-6nHiQ-2B">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18011"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18012"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tusuwhcv" id="prod-J5Ultzy7">
|
||
<emu-t>class</emu-t>
|
||
<emu-nt id="_ref_18013"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-nt id="_ref_18014"><a href="ecmascript-language-functions-and-classes.html#prod-ClassTail">ClassTail</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="1ghyizwr" id="prod-v6ZGEAMc">
|
||
<emu-t>class</emu-t>
|
||
<emu-nt id="_ref_18015"><a href="ecmascript-language-functions-and-classes.html#prod-ClassTail">ClassTail</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4kqfdugp" id="prod-w8mrwXF1">
|
||
<emu-t>export</emu-t>
|
||
<emu-nt id="_ref_18016"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportFromClause">ExportFromClause</a></emu-nt>
|
||
<emu-nt id="_ref_18017"><a href="ecmascript-language-scripts-and-modules.html#prod-FromClause">FromClause</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="j2lh_kda" id="prod-mTdGbVUU">
|
||
<emu-t>export</emu-t>
|
||
<emu-nt id="_ref_18018"><a href="ecmascript-language-scripts-and-modules.html#prod-NamedExports">NamedExports</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="4f6ct71n" id="prod-K87ApD92">
|
||
<emu-t>export</emu-t>
|
||
<emu-t>default</emu-t>
|
||
<emu-nt id="_ref_18019"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>It is not necessary to treat <code>export default</code> <emu-nt id="_ref_18020"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> as a constant declaration because there is no syntax that permits assignment to the internal bound name used to reference a module's default object.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-lexicallydeclarednames" oldids="sec-block-static-semantics-lexicallydeclarednames,sec-switch-statement-static-semantics-lexicallydeclarednames,sec-labelled-statements-static-semantics-lexicallydeclarednames,sec-function-definitions-static-semantics-lexicallydeclarednames,sec-arrow-function-definitions-static-semantics-lexicallydeclarednames,sec-async-arrow-function-definitions-static-semantics-LexicallyDeclaredNames,sec-scripts-static-semantics-lexicallydeclarednames,sec-module-semantics-static-semantics-lexicallydeclarednames" type="sdo" aoid="LexicallyDeclaredNames"><span id="sec-module-semantics-static-semantics-lexicallydeclarednames"></span><span id="sec-scripts-static-semantics-lexicallydeclarednames"></span><span id="sec-async-arrow-function-definitions-static-semantics-LexicallyDeclaredNames"></span><span id="sec-arrow-function-definitions-static-semantics-lexicallydeclarednames"></span><span id="sec-function-definitions-static-semantics-lexicallydeclarednames"></span><span id="sec-labelled-statements-static-semantics-lexicallydeclarednames"></span><span id="sec-switch-statement-static-semantics-lexicallydeclarednames"></span><span id="sec-block-static-semantics-lexicallydeclarednames"></span>
|
||
<h1><span class="secnum">8.2.4</span> Static Semantics: LexicallyDeclaredNames</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3001"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> LexicallyDeclaredNames takes no arguments and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3002"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="Block" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-mPEvRR9d">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3003"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-ZFtxhsq0">
|
||
<emu-nt id="_ref_18021"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18022"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3004"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18023"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3005"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18024"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3006"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pyyivtxj" id="prod-Rrf-OST4"><emu-nt id="_ref_18025"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18026"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> is <emu-grammar><emu-production name="Statement" collapsed="" class=" inline">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cij_anje"><emu-nt id="_ref_18027"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>, return the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3007"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18028"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3008"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod-9AEMspNg"><emu-nt id="_ref_18029"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_3009"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18030"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod--_BgAjEq">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3010"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ududlhou" id="prod-mSnfTK7z">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt optional="" id="_ref_18031"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_18032"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18033"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the first <emu-nt id="_ref_18034"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, let <var>names1</var> be the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3011"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of the first <emu-nt id="_ref_18035"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Else, let <var>names1</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3012"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>names2</var> be the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3013"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18036"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>.</li><li>If the second <emu-nt id="_ref_18037"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, let <var>names3</var> be the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3014"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of the second <emu-nt id="_ref_18038"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Else, let <var>names3</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3015"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3016"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var>, <var>names2</var>, and <var>names3</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClauses" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="addji9rs" id="prod-7Gkp_Ikd">
|
||
<emu-nt id="_ref_18039"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>
|
||
<emu-nt id="_ref_18040"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3017"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18041"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3018"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18042"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3019"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="x20nmjyd" id="prod-LyDmmUT5">
|
||
<emu-t>case</emu-t>
|
||
<emu-nt id="_ref_18043"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18044"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18045"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3020"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18046"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3021"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DefaultClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z4ihpgum" id="prod-JWPhP_ev">
|
||
<emu-t>default</emu-t>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18047"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18048"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3022"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18049"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3023"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ubbvtbun" id="prod-BptUBlCG">
|
||
<emu-nt id="_ref_18050"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_18051"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3024"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18052"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pyyivtxj" id="prod-FwgSl19M"><emu-nt id="_ref_18053"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3025"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb" id="prod-_jhHTL9Z"><emu-nt id="_ref_18054"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_3026"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18055"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-8YrmfaA1"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3027"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-yRWpcHmG"><emu-nt id="_ref_18056"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelLexicallyDeclaredNames" id="_ref_3028"><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallydeclarednames">TopLevelLexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18057"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod--e9cHzAJ"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3029"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-o7NmaBd_"><emu-nt id="_ref_18058"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelLexicallyDeclaredNames" id="_ref_3030"><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallydeclarednames">TopLevelLexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18059"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ConciseBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ConciseBody">ConciseBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="39f4t7jo" id="prod-2xZloP4O"><emu-nt id="_ref_18060"><a href="ecmascript-language-functions-and-classes.html#prod-ExpressionBody">ExpressionBody</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3031"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncConciseBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="39f4t7jo" id="prod-tdMR5_9c"><emu-nt id="_ref_18061"><a href="ecmascript-language-functions-and-classes.html#prod-ExpressionBody">ExpressionBody</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3032"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Script" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-Script">Script</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-pGIh8pZc"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3033"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ScriptBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ScriptBody">ScriptBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-m6bh3GpA"><emu-nt id="_ref_18062"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelLexicallyDeclaredNames" id="_ref_3034"><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallydeclarednames">TopLevelLexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18063"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>At the top level of a <emu-nt id="_ref_18064"><a href="ecmascript-language-scripts-and-modules.html#prod-Script">Script</a></emu-nt>, function declarations are treated like var declarations rather than like lexical declarations.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>The LexicallyDeclaredNames of a <emu-nt id="_ref_18065"><a href="ecmascript-language-scripts-and-modules.html#prod-Module">Module</a></emu-nt> includes the names of all of its imported bindings.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="ModuleItemList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dd23jrxs" id="prod-t-OtLQL7">
|
||
<emu-nt id="_ref_18066"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>
|
||
<emu-nt id="_ref_18067"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3035"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18068"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3036"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18069"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3037"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4fwtd8-6" id="prod-vXiSx9wh"><emu-nt id="_ref_18070"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration">ImportDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_3038"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18071"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration">ImportDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ky6bsn7x" id="prod-v-PqD2SJ"><emu-nt id="_ref_18072"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18073"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> is <code>export</code> <emu-nt id="_ref_18074"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt>, return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3039"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return the <emu-xref aoid="BoundNames" id="_ref_3040"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18075"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="15hryu6r" id="prod-XYalkd2A"><emu-nt id="_ref_18076"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_3041"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18077"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>At the top level of a <emu-nt id="_ref_18078"><a href="ecmascript-language-scripts-and-modules.html#prod-Module">Module</a></emu-nt>, function declarations are treated like lexical declarations rather than like var declarations.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-lexicallyscopeddeclarations" oldids="sec-block-static-semantics-lexicallyscopeddeclarations,sec-switch-statement-static-semantics-lexicallyscopeddeclarations,sec-labelled-statements-static-semantics-lexicallyscopeddeclarations,sec-function-definitions-static-semantics-lexicallyscopeddeclarations,sec-arrow-function-definitions-static-semantics-lexicallyscopeddeclarations,sec-async-arrow-function-definitions-static-semantics-LexicallyScopedDeclarations,sec-scripts-static-semantics-lexicallyscopeddeclarations,sec-module-semantics-static-semantics-lexicallyscopeddeclarations,sec-exports-static-semantics-lexicallyscopeddeclarations" type="sdo" aoid="LexicallyScopedDeclarations"><span id="sec-exports-static-semantics-lexicallyscopeddeclarations"></span><span id="sec-module-semantics-static-semantics-lexicallyscopeddeclarations"></span><span id="sec-scripts-static-semantics-lexicallyscopeddeclarations"></span><span id="sec-async-arrow-function-definitions-static-semantics-LexicallyScopedDeclarations"></span><span id="sec-arrow-function-definitions-static-semantics-lexicallyscopeddeclarations"></span><span id="sec-function-definitions-static-semantics-lexicallyscopeddeclarations"></span><span id="sec-labelled-statements-static-semantics-lexicallyscopeddeclarations"></span><span id="sec-switch-statement-static-semantics-lexicallyscopeddeclarations"></span><span id="sec-block-static-semantics-lexicallyscopeddeclarations"></span>
|
||
<h1><span class="secnum">8.2.5</span> Static Semantics: LexicallyScopedDeclarations</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3042"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> LexicallyScopedDeclarations takes no arguments and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3043"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-syntactic-grammar" id="_ref_3044"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Nodes</a></emu-xref>. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-dqBS0eQw">
|
||
<emu-nt id="_ref_18079"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18080"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3045"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18081"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3046"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18082"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3047"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pyyivtxj" id="prod-MlufDCPG"><emu-nt id="_ref_18083"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18084"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> is <emu-grammar><emu-production name="Statement" collapsed="" class=" inline">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cij_anje"><emu-nt id="_ref_18085"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>, return the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3048"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18086"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3049"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod-IYBZJ2CF"><emu-nt id="_ref_18087"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3050"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> whose sole element is the <emu-xref aoid="DeclarationPart" id="_ref_3051"><a href="syntax-directed-operations.html#sec-static-semantics-declarationpart">DeclarationPart</a></emu-xref> of <emu-nt id="_ref_18088"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-bhogjJ1W">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3052"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ududlhou" id="prod-am_Z4H66">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt optional="" id="_ref_18089"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_18090"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18091"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the first <emu-nt id="_ref_18092"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, let <var>declarations1</var> be the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3053"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of the first <emu-nt id="_ref_18093"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Else, let <var>declarations1</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3054"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3055"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18094"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>.</li><li>If the second <emu-nt id="_ref_18095"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, let <var>declarations3</var> be the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3056"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of the second <emu-nt id="_ref_18096"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Else, let <var>declarations3</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3057"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3058"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var>, <var>declarations2</var>, and <var>declarations3</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClauses" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="addji9rs" id="prod-LxvbRJKF">
|
||
<emu-nt id="_ref_18097"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>
|
||
<emu-nt id="_ref_18098"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3059"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18099"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3060"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18100"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3061"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="x20nmjyd" id="prod-tORmzQQv">
|
||
<emu-t>case</emu-t>
|
||
<emu-nt id="_ref_18101"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18102"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18103"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3062"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18104"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3063"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DefaultClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z4ihpgum" id="prod-84xBBiJA">
|
||
<emu-t>default</emu-t>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18105"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18106"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3064"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18107"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3065"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ubbvtbun" id="prod-V7zVpmtw">
|
||
<emu-nt id="_ref_18108"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_18109"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3066"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18110"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pyyivtxj" id="prod-3Vc5meav"><emu-nt id="_ref_18111"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3067"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb" id="prod-nL_6JlM9"><emu-nt id="_ref_18112"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-nt id="_ref_18113"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt> ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-gtaAB-x7"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3068"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-aKFk9Ijn"><emu-nt id="_ref_18114"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelLexicallyScopedDeclarations" id="_ref_3069"><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallyscopeddeclarations">TopLevelLexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18115"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-8GIOVjs9"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3070"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-kKBABX1R"><emu-nt id="_ref_18116"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelLexicallyScopedDeclarations" id="_ref_3071"><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallyscopeddeclarations">TopLevelLexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18117"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ConciseBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ConciseBody">ConciseBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="39f4t7jo" id="prod-4B0l6Nwq"><emu-nt id="_ref_18118"><a href="ecmascript-language-functions-and-classes.html#prod-ExpressionBody">ExpressionBody</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3072"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncConciseBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="39f4t7jo" id="prod-0qrVz5hX"><emu-nt id="_ref_18119"><a href="ecmascript-language-functions-and-classes.html#prod-ExpressionBody">ExpressionBody</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3073"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Script" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-Script">Script</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-h6iH_dVj"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3074"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ScriptBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ScriptBody">ScriptBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-1WkoNRM_"><emu-nt id="_ref_18120"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelLexicallyScopedDeclarations" id="_ref_3075"><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallyscopeddeclarations">TopLevelLexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18121"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Module" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-Module">Module</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-eWnfpwM7"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3076"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItemList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dd23jrxs" id="prod-rZF3AogZ">
|
||
<emu-nt id="_ref_18122"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>
|
||
<emu-nt id="_ref_18123"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3077"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18124"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_3078"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18125"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3079"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4fwtd8-6" id="prod-zqmuSkfM"><emu-nt id="_ref_18126"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration">ImportDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3080"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gperhudl" id="prod-IO9Cz018">
|
||
<emu-t>export</emu-t>
|
||
<emu-nt id="_ref_18127"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportFromClause">ExportFromClause</a></emu-nt>
|
||
<emu-nt id="_ref_18128"><a href="ecmascript-language-scripts-and-modules.html#prod-FromClause">FromClause</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18129"><a href="ecmascript-language-scripts-and-modules.html#prod-WithClause">WithClause</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="j2lh_kda" id="prod-DEMJzdJ7">
|
||
<emu-t>export</emu-t>
|
||
<emu-nt id="_ref_18130"><a href="ecmascript-language-scripts-and-modules.html#prod-NamedExports">NamedExports</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="bg3oaw2m" id="prod-cMreMYU5">
|
||
<emu-t>export</emu-t>
|
||
<emu-nt id="_ref_18131"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3081"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="go9a4xdq" id="prod-xsgJyOoQ">
|
||
<emu-t>export</emu-t>
|
||
<emu-nt id="_ref_18132"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3082"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> whose sole element is the <emu-xref aoid="DeclarationPart" id="_ref_3083"><a href="syntax-directed-operations.html#sec-static-semantics-declarationpart">DeclarationPart</a></emu-xref> of <emu-nt id="_ref_18133"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cdfbfvfu" id="prod-cRTDqnfl">
|
||
<emu-t>export</emu-t>
|
||
<emu-t>default</emu-t>
|
||
<emu-nt id="_ref_18134"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3084"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> whose sole element is the <emu-xref aoid="DeclarationPart" id="_ref_3085"><a href="syntax-directed-operations.html#sec-static-semantics-declarationpart">DeclarationPart</a></emu-xref> of <emu-nt id="_ref_18135"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="w8pljwgc" id="prod-4yMGuqEs">
|
||
<emu-t>export</emu-t>
|
||
<emu-t>default</emu-t>
|
||
<emu-nt id="_ref_18136"><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3086"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> whose sole element is <emu-nt id="_ref_18137"><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ExportDeclaration" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4f6ct71n" id="prod-XTfiw-G1">
|
||
<emu-t>export</emu-t>
|
||
<emu-t>default</emu-t>
|
||
<emu-nt id="_ref_18138"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3087"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> whose sole element is this <emu-nt id="_ref_18139"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-vardeclarednames" oldids="sec-statement-semantics-static-semantics-vardeclarednames,sec-block-static-semantics-vardeclarednames,sec-variable-statement-static-semantics-vardeclarednames,sec-if-statement-static-semantics-vardeclarednames,sec-do-while-statement-static-semantics-vardeclarednames,sec-while-statement-static-semantics-vardeclarednames,sec-for-statement-static-semantics-vardeclarednames,sec-for-in-and-for-of-statements-static-semantics-vardeclarednames,sec-with-statement-static-semantics-vardeclarednames,sec-switch-statement-static-semantics-vardeclarednames,sec-labelled-statements-static-semantics-vardeclarednames,sec-try-statement-static-semantics-vardeclarednames,sec-function-definitions-static-semantics-vardeclarednames,sec-arrow-function-definitions-static-semantics-vardeclarednames,sec-async-arrow-function-definitions-static-semantics-VarDeclaredNames,sec-scripts-static-semantics-vardeclarednames,sec-module-semantics-static-semantics-vardeclarednames" type="sdo" aoid="VarDeclaredNames"><span id="sec-module-semantics-static-semantics-vardeclarednames"></span><span id="sec-scripts-static-semantics-vardeclarednames"></span><span id="sec-async-arrow-function-definitions-static-semantics-VarDeclaredNames"></span><span id="sec-arrow-function-definitions-static-semantics-vardeclarednames"></span><span id="sec-function-definitions-static-semantics-vardeclarednames"></span><span id="sec-try-statement-static-semantics-vardeclarednames"></span><span id="sec-labelled-statements-static-semantics-vardeclarednames"></span><span id="sec-switch-statement-static-semantics-vardeclarednames"></span><span id="sec-with-statement-static-semantics-vardeclarednames"></span><span id="sec-for-in-and-for-of-statements-static-semantics-vardeclarednames"></span><span id="sec-for-statement-static-semantics-vardeclarednames"></span><span id="sec-while-statement-static-semantics-vardeclarednames"></span><span id="sec-do-while-statement-static-semantics-vardeclarednames"></span><span id="sec-if-statement-static-semantics-vardeclarednames"></span><span id="sec-variable-statement-static-semantics-vardeclarednames"></span><span id="sec-block-static-semantics-vardeclarednames"></span><span id="sec-statement-semantics-static-semantics-vardeclarednames"></span>
|
||
<h1><span class="secnum">8.2.6</span> Static Semantics: VarDeclaredNames</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3088"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> VarDeclaredNames takes no arguments and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3089"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="Statement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cziqu-45" id="prod-VNDj7eNH">
|
||
<emu-nt id="_ref_18140"><a href="ecmascript-language-statements-and-declarations.html#prod-EmptyStatement">EmptyStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="gsqkt2bv" id="prod-wphgHlIl">
|
||
<emu-nt id="_ref_18141"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="hx0ynljx" id="prod-UQCGQIDW">
|
||
<emu-nt id="_ref_18142"><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="q4uv-sm3" id="prod-5RADtbhJ">
|
||
<emu-nt id="_ref_18143"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="qm95e4wi" id="prod-bxCHO4hn">
|
||
<emu-nt id="_ref_18144"><a href="ecmascript-language-statements-and-declarations.html#prod-ReturnStatement">ReturnStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="hntake-o" id="prod-GyFO-xRG">
|
||
<emu-nt id="_ref_18145"><a href="ecmascript-language-statements-and-declarations.html#prod-ThrowStatement">ThrowStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="iseu28qi" id="prod-HxLIoVCC">
|
||
<emu-nt id="_ref_18146"><a href="ecmascript-language-statements-and-declarations.html#prod-DebuggerStatement">DebuggerStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3090"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Block" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-4f3fXSme">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3091"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-ikslLJyV">
|
||
<emu-nt id="_ref_18147"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18148"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3092"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18149"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3093"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18150"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3094"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod-mb72lTih"><emu-nt id="_ref_18151"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3095"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="VariableStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="m0ehvb8m" id="prod-_o07UyGN">
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18152"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_3096"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18153"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IfStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fuhqe2xq" id="prod-5Ab4YMrd">
|
||
<emu-t>if</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18154"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18155"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
<emu-t>else</emu-t>
|
||
<emu-nt id="_ref_18156"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3097"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of the first <emu-nt id="_ref_18157"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3098"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of the second <emu-nt id="_ref_18158"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3099"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IfStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="9ogvciaf" id="prod-Jj9iNkQT">
|
||
<emu-t>if</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18159"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18160"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3100"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18161"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DoWhileStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DoWhileStatement">DoWhileStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jocmqoht" id="prod-MQNHAeo7">
|
||
<emu-t>do</emu-t>
|
||
<emu-nt id="_ref_18162"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
<emu-t>while</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18163"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3101"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18164"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="WhileStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-WhileStatement">WhileStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="92j78-b5" id="prod-6MiGg7LY">
|
||
<emu-t>while</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18165"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18166"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3102"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18167"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="_do88got" id="prod-22bMsY8a">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt optional="" id="_ref_18168"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18169"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18170"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18171"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3103"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18172"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="sodmtko8" id="prod-iNfrCk_F">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18173"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18174"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18175"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18176"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_3104"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18177"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3105"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18178"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3106"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="k8b-ryxj" id="prod-N2GkbzwH">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18179"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18180"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18181"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18182"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3107"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18183"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForInOfStatement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="v1ibcd1w" id="prod-polenv5I">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18184"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18185"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18186"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jzctgxkp" id="prod-cQmWs6F4">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18187"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18188"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18189"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jqzgi_en" id="prod-6rXrz7RR">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18190"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18191"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18192"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="b3wzboyu" id="prod-LH0otfP0">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18193"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18194"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18195"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="mhrux1r7" id="prod-UE8msfiB">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18196"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18197"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18198"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="uatmda3j" id="prod-Xl42xW5D">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18199"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18200"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18201"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3108"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18202"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForInOfStatement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="7pgjrcn-" id="prod-eiN5tOgj">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18203"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18204"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18205"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="7m-adytu" id="prod-dkeW5WMH">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18206"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18207"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18208"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cyt_lv_1" id="prod-dXd3oD1j">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18209"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18210"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18211"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="BoundNames" id="_ref_3109"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18212"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3110"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18213"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3111"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This section is extended by Annex <emu-xref href="#sec-initializers-in-forin-statement-heads" id="_ref_227"><a href="additional-ecmascript-features-for-web-browsers.html#sec-initializers-in-forin-statement-heads">B.3.5</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="WithStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-WithStatement">WithStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i70kview" id="prod-kf6BzwpI">
|
||
<emu-t>with</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18214"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18215"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3112"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18216"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="SwitchStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uvrp_hkw" id="prod-lB_U5kUv">
|
||
<emu-t>switch</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18217"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18218"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3113"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18219"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-DTgBd2wQ">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3114"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ududlhou" id="prod-e2BPI-N_">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt optional="" id="_ref_18220"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_18221"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18222"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the first <emu-nt id="_ref_18223"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, let <var>names1</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3115"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of the first <emu-nt id="_ref_18224"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Else, let <var>names1</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3116"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>names2</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3117"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18225"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>.</li><li>If the second <emu-nt id="_ref_18226"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, let <var>names3</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3118"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of the second <emu-nt id="_ref_18227"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Else, let <var>names3</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3119"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3120"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var>, <var>names2</var>, and <var>names3</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClauses" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="addji9rs" id="prod-_zisH9m7">
|
||
<emu-nt id="_ref_18228"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>
|
||
<emu-nt id="_ref_18229"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3121"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18230"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3122"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18231"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3123"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="x20nmjyd" id="prod-Gdv5Uzyo">
|
||
<emu-t>case</emu-t>
|
||
<emu-nt id="_ref_18232"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18233"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18234"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return the <emu-xref aoid="VarDeclaredNames" id="_ref_3124"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18235"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3125"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DefaultClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z4ihpgum" id="prod-ocDhl-eB">
|
||
<emu-t>default</emu-t>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18236"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18237"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return the <emu-xref aoid="VarDeclaredNames" id="_ref_3126"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18238"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3127"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ubbvtbun" id="prod-xypmC2Rc">
|
||
<emu-nt id="_ref_18239"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_18240"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3128"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18241"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb" id="prod-TKnUh23n"><emu-nt id="_ref_18242"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3129"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="qhfov2lc" id="prod-K6wLfAiN">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18243"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18244"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3130"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18245"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3131"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18246"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3132"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xsakufa6" id="prod-naQihl7z">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18247"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18248"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3133"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18249"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3134"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18250"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3135"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gxlzfd5s" id="prod-F1kslF5t">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18251"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18252"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>
|
||
<emu-nt id="_ref_18253"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3136"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18254"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3137"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18255"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>.</li><li>Let <var>names3</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3138"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18256"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3139"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var>, <var>names2</var>, and <var>names3</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Catch" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="3ce8nhiw" id="prod-1jr14zqX">
|
||
<emu-t>catch</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18257"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18258"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3140"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18259"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-ic6_wi6x"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3141"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-Fovz-BpD"><emu-nt id="_ref_18260"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelVarDeclaredNames" id="_ref_3142"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvardeclarednames">TopLevelVarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18261"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-JPGgU11H"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3143"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-ZZJ4np60"><emu-nt id="_ref_18262"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelVarDeclaredNames" id="_ref_3144"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvardeclarednames">TopLevelVarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18263"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ConciseBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ConciseBody">ConciseBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="39f4t7jo" id="prod-kKbHUs1e"><emu-nt id="_ref_18264"><a href="ecmascript-language-functions-and-classes.html#prod-ExpressionBody">ExpressionBody</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3145"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncConciseBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="39f4t7jo" id="prod-IDrLWHWU"><emu-nt id="_ref_18265"><a href="ecmascript-language-functions-and-classes.html#prod-ExpressionBody">ExpressionBody</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3146"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Script" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-Script">Script</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-AiQH2RJz"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3147"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ScriptBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ScriptBody">ScriptBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-_GPKA3Cb"><emu-nt id="_ref_18266"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelVarDeclaredNames" id="_ref_3148"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvardeclarednames">TopLevelVarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18267"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItemList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dd23jrxs" id="prod-WMKjW5iz">
|
||
<emu-nt id="_ref_18268"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>
|
||
<emu-nt id="_ref_18269"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3149"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18270"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="VarDeclaredNames" id="_ref_3150"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18271"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3151"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4fwtd8-6" id="prod-lGybrnks"><emu-nt id="_ref_18272"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration">ImportDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3152"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ky6bsn7x" id="prod-5uRXjJj7"><emu-nt id="_ref_18273"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18274"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> is <code>export</code> <emu-nt id="_ref_18275"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt>, return the <emu-xref aoid="BoundNames" id="_ref_3153"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18276"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3154"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-varscopeddeclarations" oldids="sec-statement-semantics-static-semantics-varscopeddeclarations,sec-block-static-semantics-varscopeddeclarations,sec-variable-statement-static-semantics-varscopeddeclarations,sec-if-statement-static-semantics-varscopeddeclarations,sec-do-while-statement-static-semantics-varscopeddeclarations,sec-while-statement-static-semantics-varscopeddeclarations,sec-for-statement-static-semantics-varscopeddeclarations,sec-for-in-and-for-of-statements-static-semantics-varscopeddeclarations,sec-with-statement-static-semantics-varscopeddeclarations,sec-switch-statement-static-semantics-varscopeddeclarations,sec-labelled-statements-static-semantics-varscopeddeclarations,sec-try-statement-static-semantics-varscopeddeclarations,sec-function-definitions-static-semantics-varscopeddeclarations,sec-arrow-function-definitions-static-semantics-varscopeddeclarations,sec-async-arrow-function-definitions-static-semantics-VarScopedDeclarations,sec-scripts-static-semantics-varscopeddeclarations,sec-module-semantics-static-semantics-varscopeddeclarations" type="sdo" aoid="VarScopedDeclarations"><span id="sec-module-semantics-static-semantics-varscopeddeclarations"></span><span id="sec-scripts-static-semantics-varscopeddeclarations"></span><span id="sec-async-arrow-function-definitions-static-semantics-VarScopedDeclarations"></span><span id="sec-arrow-function-definitions-static-semantics-varscopeddeclarations"></span><span id="sec-function-definitions-static-semantics-varscopeddeclarations"></span><span id="sec-try-statement-static-semantics-varscopeddeclarations"></span><span id="sec-labelled-statements-static-semantics-varscopeddeclarations"></span><span id="sec-switch-statement-static-semantics-varscopeddeclarations"></span><span id="sec-with-statement-static-semantics-varscopeddeclarations"></span><span id="sec-for-in-and-for-of-statements-static-semantics-varscopeddeclarations"></span><span id="sec-for-statement-static-semantics-varscopeddeclarations"></span><span id="sec-while-statement-static-semantics-varscopeddeclarations"></span><span id="sec-do-while-statement-static-semantics-varscopeddeclarations"></span><span id="sec-if-statement-static-semantics-varscopeddeclarations"></span><span id="sec-variable-statement-static-semantics-varscopeddeclarations"></span><span id="sec-block-static-semantics-varscopeddeclarations"></span><span id="sec-statement-semantics-static-semantics-varscopeddeclarations"></span>
|
||
<h1><span class="secnum">8.2.7</span> Static Semantics: VarScopedDeclarations</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3155"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> VarScopedDeclarations takes no arguments and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3156"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-syntactic-grammar" id="_ref_3157"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Nodes</a></emu-xref>. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="Statement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cziqu-45" id="prod-okevSHKw">
|
||
<emu-nt id="_ref_18277"><a href="ecmascript-language-statements-and-declarations.html#prod-EmptyStatement">EmptyStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="gsqkt2bv" id="prod-TqyazVUw">
|
||
<emu-nt id="_ref_18278"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="hx0ynljx" id="prod-a_WX9dEz">
|
||
<emu-nt id="_ref_18279"><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="q4uv-sm3" id="prod-fC7m7rts">
|
||
<emu-nt id="_ref_18280"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="qm95e4wi" id="prod-ycPQZtUX">
|
||
<emu-nt id="_ref_18281"><a href="ecmascript-language-statements-and-declarations.html#prod-ReturnStatement">ReturnStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="hntake-o" id="prod-GTe_HlKz">
|
||
<emu-nt id="_ref_18282"><a href="ecmascript-language-statements-and-declarations.html#prod-ThrowStatement">ThrowStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="iseu28qi" id="prod-Pc-OKRR8">
|
||
<emu-nt id="_ref_18283"><a href="ecmascript-language-statements-and-declarations.html#prod-DebuggerStatement">DebuggerStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3158"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Block" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod--ycd0kFi">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3159"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-r8z3UV58">
|
||
<emu-nt id="_ref_18284"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18285"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3160"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18286"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3161"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18287"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3162"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod-zHpAsUUQ"><emu-nt id="_ref_18288"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3163"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="VariableDeclarationList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n3piepmh" id="prod-r4VwMPwM"><emu-nt id="_ref_18289"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-nt id="_ref_18290"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="VariableDeclarationList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="oavweevb" id="prod-HsuXutdb">
|
||
<emu-nt id="_ref_18291"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_18292"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3164"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18293"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3165"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and « <emu-nt id="_ref_18294"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IfStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fuhqe2xq" id="prod-B7KHfByo">
|
||
<emu-t>if</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18295"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18296"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
<emu-t>else</emu-t>
|
||
<emu-nt id="_ref_18297"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3166"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of the first <emu-nt id="_ref_18298"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3167"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of the second <emu-nt id="_ref_18299"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3168"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IfStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="9ogvciaf" id="prod-yyIeKAQ3">
|
||
<emu-t>if</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18300"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18301"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3169"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18302"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DoWhileStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DoWhileStatement">DoWhileStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jocmqoht" id="prod-QkEPe1CC">
|
||
<emu-t>do</emu-t>
|
||
<emu-nt id="_ref_18303"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
<emu-t>while</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18304"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3170"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18305"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="WhileStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-WhileStatement">WhileStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="92j78-b5" id="prod-jrq4eHFJ">
|
||
<emu-t>while</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18306"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18307"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3171"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18308"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="_do88got" id="prod-5lKKTAkN">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt optional="" id="_ref_18309"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18310"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18311"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18312"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3172"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18313"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="sodmtko8" id="prod-13ohOiCm">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18314"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18315"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18316"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18317"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3173"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18318"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3174"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18319"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3175"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="k8b-ryxj" id="prod-eqKiNSk1">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18320"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18321"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18322"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18323"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3176"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18324"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForInOfStatement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="v1ibcd1w" id="prod-KgxDtGf4">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18325"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18326"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18327"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jzctgxkp" id="prod-AWnFzjE8">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18328"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18329"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18330"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jqzgi_en" id="prod-5TY9-yea">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18331"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18332"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18333"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="b3wzboyu" id="prod-t9Ps-Sf3">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18334"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18335"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18336"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="mhrux1r7" id="prod-IEEeV8La">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18337"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18338"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18339"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="uatmda3j" id="prod-WOgH08rb">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18340"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18341"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18342"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3177"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18343"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForInOfStatement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="7pgjrcn-" id="prod-SyVO6l8T">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18344"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18345"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18346"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="7m-adytu" id="prod-o2HaUKnD">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18347"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18348"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18349"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cyt_lv_1" id="prod-kZcYMT8d">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18350"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18351"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18352"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be « <emu-nt id="_ref_18353"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> ».</li><li>Let <var>declarations2</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3178"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18354"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3179"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This section is extended by Annex <emu-xref href="#sec-initializers-in-forin-statement-heads" id="_ref_228"><a href="additional-ecmascript-features-for-web-browsers.html#sec-initializers-in-forin-statement-heads">B.3.5</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="WithStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-WithStatement">WithStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i70kview" id="prod-otI6GMSS">
|
||
<emu-t>with</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18355"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18356"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3180"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18357"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="SwitchStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uvrp_hkw" id="prod-FjNXiCI7">
|
||
<emu-t>switch</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18358"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18359"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3181"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18360"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-BX82yRxg">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3182"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ududlhou" id="prod-aW8QiumN">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt optional="" id="_ref_18361"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_18362"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18363"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the first <emu-nt id="_ref_18364"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, let <var>declarations1</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3183"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of the first <emu-nt id="_ref_18365"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Else, let <var>declarations1</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3184"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3185"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18366"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>.</li><li>If the second <emu-nt id="_ref_18367"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, let <var>declarations3</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3186"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of the second <emu-nt id="_ref_18368"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Else, let <var>declarations3</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3187"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3188"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var>, <var>declarations2</var>, and <var>declarations3</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClauses" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="addji9rs" id="prod-nuKGUlOU">
|
||
<emu-nt id="_ref_18369"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>
|
||
<emu-nt id="_ref_18370"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3189"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18371"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3190"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18372"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3191"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="x20nmjyd" id="prod-mzP2If-y">
|
||
<emu-t>case</emu-t>
|
||
<emu-nt id="_ref_18373"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18374"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18375"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3192"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18376"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3193"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DefaultClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z4ihpgum" id="prod-ZPHZRUV6">
|
||
<emu-t>default</emu-t>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18377"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18378"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3194"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18379"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3195"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ubbvtbun" id="prod-i-A4iWeY">
|
||
<emu-nt id="_ref_18380"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_18381"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3196"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18382"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb" id="prod-ntkJlgei"><emu-nt id="_ref_18383"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3197"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="qhfov2lc" id="prod-RhYCwWQZ">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18384"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18385"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3198"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18386"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3199"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18387"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3200"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xsakufa6" id="prod-0GInHInm">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18388"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18389"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3201"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18390"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3202"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18391"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3203"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gxlzfd5s" id="prod-pi8GJ951">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18392"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18393"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>
|
||
<emu-nt id="_ref_18394"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3204"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18395"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3205"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18396"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>.</li><li>Let <var>declarations3</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3206"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18397"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3207"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var>, <var>declarations2</var>, and <var>declarations3</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Catch" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="3ce8nhiw" id="prod-H8Sf_rsN">
|
||
<emu-t>catch</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18398"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18399"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3208"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18400"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-vvqmH-2l"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3209"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-x8eD4P1T"><emu-nt id="_ref_18401"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelVarScopedDeclarations" id="_ref_3210"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvarscopeddeclarations">TopLevelVarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18402"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-p7Y_jFE0"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3211"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-o66wZ98a"><emu-nt id="_ref_18403"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelVarScopedDeclarations" id="_ref_3212"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvarscopeddeclarations">TopLevelVarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18404"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ConciseBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ConciseBody">ConciseBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="39f4t7jo" id="prod-UWG_9qGM"><emu-nt id="_ref_18405"><a href="ecmascript-language-functions-and-classes.html#prod-ExpressionBody">ExpressionBody</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3213"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncConciseBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="39f4t7jo" id="prod-VllrABp8"><emu-nt id="_ref_18406"><a href="ecmascript-language-functions-and-classes.html#prod-ExpressionBody">ExpressionBody</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3214"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Script" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-Script">Script</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-se4Mco-N"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3215"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ScriptBody" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ScriptBody">ScriptBody</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z0a6dhkf" id="prod-MCeJZE_U"><emu-nt id="_ref_18407"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelVarScopedDeclarations" id="_ref_3216"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvarscopeddeclarations">TopLevelVarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18408"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Module" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-Module">Module</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-g_wYfia1"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3217"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItemList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dd23jrxs" id="prod-oVpqQZka">
|
||
<emu-nt id="_ref_18409"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>
|
||
<emu-nt id="_ref_18410"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3218"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18411"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="VarScopedDeclarations" id="_ref_3219"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18412"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3220"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4fwtd8-6" id="prod-TBDbISuB"><emu-nt id="_ref_18413"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration">ImportDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3221"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ky6bsn7x" id="prod-f75VYPkN"><emu-nt id="_ref_18414"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18415"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt> is <code>export</code> <emu-nt id="_ref_18416"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt>, return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3222"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18417"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt>.</li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3223"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-toplevellexicallydeclarednames" oldids="sec-block-static-semantics-toplevellexicallydeclarednames,sec-labelled-statements-static-semantics-toplevellexicallydeclarednames" type="sdo" aoid="TopLevelLexicallyDeclaredNames"><span id="sec-labelled-statements-static-semantics-toplevellexicallydeclarednames"></span><span id="sec-block-static-semantics-toplevellexicallydeclarednames"></span>
|
||
<h1><span class="secnum">8.2.8</span> Static Semantics: TopLevelLexicallyDeclaredNames</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3224"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> TopLevelLexicallyDeclaredNames takes no arguments and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3225"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-s6Vb3QUL">
|
||
<emu-nt id="_ref_18418"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18419"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="TopLevelLexicallyDeclaredNames" id="_ref_3226"><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallydeclarednames">TopLevelLexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18420"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="TopLevelLexicallyDeclaredNames" id="_ref_3227"><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallydeclarednames">TopLevelLexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18421"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3228"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pyyivtxj" id="prod-DWksqgz-"><emu-nt id="_ref_18422"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3229"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod-ReRATT6e"><emu-nt id="_ref_18423"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18424"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> is <emu-grammar><emu-production name="Declaration" collapsed="" class=" inline">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ykusttdk"><emu-nt id="_ref_18425"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>, then<ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3230"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></li><li>Return the <emu-xref aoid="BoundNames" id="_ref_3231"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18426"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>At the top level of a function, or script, function declarations are treated like var declarations rather than like lexical declarations.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-toplevellexicallyscopeddeclarations" oldids="sec-block-static-semantics-toplevellexicallyscopeddeclarations,sec-labelled-statements-static-semantics-toplevellexicallyscopeddeclarations" type="sdo" aoid="TopLevelLexicallyScopedDeclarations"><span id="sec-labelled-statements-static-semantics-toplevellexicallyscopeddeclarations"></span><span id="sec-block-static-semantics-toplevellexicallyscopeddeclarations"></span>
|
||
<h1><span class="secnum">8.2.9</span> Static Semantics: TopLevelLexicallyScopedDeclarations</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3232"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> TopLevelLexicallyScopedDeclarations takes no arguments and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3233"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-syntactic-grammar" id="_ref_3234"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Nodes</a></emu-xref>. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-fSl8sbck">
|
||
<emu-nt id="_ref_18427"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18428"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="TopLevelLexicallyScopedDeclarations" id="_ref_3235"><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallyscopeddeclarations">TopLevelLexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18429"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="TopLevelLexicallyScopedDeclarations" id="_ref_3236"><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallyscopeddeclarations">TopLevelLexicallyScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18430"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3237"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pyyivtxj" id="prod-68OgfJw9"><emu-nt id="_ref_18431"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3238"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod--BAI6AhR"><emu-nt id="_ref_18432"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18433"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> is <emu-grammar><emu-production name="Declaration" collapsed="" class=" inline">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ykusttdk"><emu-nt id="_ref_18434"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>, then<ol><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3239"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></li><li>Return « <emu-nt id="_ref_18435"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> ».</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-toplevelvardeclarednames" oldids="sec-block-static-semantics-toplevelvardeclarednames,sec-labelled-statements-static-semantics-toplevelvardeclarednames" type="sdo" aoid="TopLevelVarDeclaredNames"><span id="sec-labelled-statements-static-semantics-toplevelvardeclarednames"></span><span id="sec-block-static-semantics-toplevelvardeclarednames"></span>
|
||
<h1><span class="secnum">8.2.10</span> Static Semantics: TopLevelVarDeclaredNames</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3240"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> TopLevelVarDeclaredNames takes no arguments and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3241"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-_Kx3fMtB">
|
||
<emu-nt id="_ref_18436"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18437"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>names1</var> be the <emu-xref aoid="TopLevelVarDeclaredNames" id="_ref_3242"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvardeclarednames">TopLevelVarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18438"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Let <var>names2</var> be the <emu-xref aoid="TopLevelVarDeclaredNames" id="_ref_3243"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvardeclarednames">TopLevelVarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18439"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3244"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>names1</var> and <var>names2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod-l-2kGEcB"><emu-nt id="_ref_18440"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18441"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> is <emu-grammar><emu-production name="Declaration" collapsed="" class=" inline">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ykusttdk"><emu-nt id="_ref_18442"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>, then<ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_3245"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18443"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt>.</li></ol></li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3246"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pyyivtxj" id="prod-CxIyq9Kn"><emu-nt id="_ref_18444"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18445"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> is <emu-grammar><emu-production name="Statement" collapsed="" class=" inline">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cij_anje"><emu-nt id="_ref_18446"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>, return the <emu-xref aoid="TopLevelVarDeclaredNames" id="_ref_3247"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvardeclarednames">TopLevelVarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18447"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3248"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18448"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>At the top level of a function or script, inner function declarations are treated like var declarations.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="LabelledStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ubbvtbun" id="prod-gviukyGv">
|
||
<emu-nt id="_ref_18449"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_18450"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelVarDeclaredNames" id="_ref_3249"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvardeclarednames">TopLevelVarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18451"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pyyivtxj" id="prod-jtk1iKc9"><emu-nt id="_ref_18452"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18453"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> is <emu-grammar><emu-production name="Statement" collapsed="" class=" inline">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cij_anje"><emu-nt id="_ref_18454"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>, return the <emu-xref aoid="TopLevelVarDeclaredNames" id="_ref_3250"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvardeclarednames">TopLevelVarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18455"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Return the <emu-xref aoid="VarDeclaredNames" id="_ref_3251"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_18456"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb" id="prod-5RFYGz0t"><emu-nt id="_ref_18457"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="BoundNames" id="_ref_3252"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_18458"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-toplevelvarscopeddeclarations" oldids="sec-block-static-semantics-toplevelvarscopeddeclarations,sec-labelled-statements-static-semantics-toplevelvarscopeddeclarations" type="sdo" aoid="TopLevelVarScopedDeclarations"><span id="sec-labelled-statements-static-semantics-toplevelvarscopeddeclarations"></span><span id="sec-block-static-semantics-toplevelvarscopeddeclarations"></span>
|
||
<h1><span class="secnum">8.2.11</span> Static Semantics: TopLevelVarScopedDeclarations</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3253"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> TopLevelVarScopedDeclarations takes no arguments and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3254"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-syntactic-grammar" id="_ref_3255"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Nodes</a></emu-xref>. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-MxUpZ-t-">
|
||
<emu-nt id="_ref_18459"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18460"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>declarations1</var> be the <emu-xref aoid="TopLevelVarScopedDeclarations" id="_ref_3256"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvarscopeddeclarations">TopLevelVarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18461"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Let <var>declarations2</var> be the <emu-xref aoid="TopLevelVarScopedDeclarations" id="_ref_3257"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvarscopeddeclarations">TopLevelVarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18462"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_3258"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>declarations1</var> and <var>declarations2</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pyyivtxj" id="prod-wmlLZdyg"><emu-nt id="_ref_18463"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18464"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> is <emu-grammar><emu-production name="Statement" collapsed="" class=" inline">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cij_anje"><emu-nt id="_ref_18465"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>, return the <emu-xref aoid="TopLevelVarScopedDeclarations" id="_ref_3259"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvarscopeddeclarations">TopLevelVarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18466"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3260"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18467"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementListItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod-OvMm0IpZ"><emu-nt id="_ref_18468"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18469"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> is <emu-grammar><emu-production name="Declaration" collapsed="" class=" inline">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ykusttdk"><emu-nt id="_ref_18470"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>, then<ol><li>Let <var>declaration</var> be the <emu-xref aoid="DeclarationPart" id="_ref_3261"><a href="syntax-directed-operations.html#sec-static-semantics-declarationpart">DeclarationPart</a></emu-xref> of <emu-nt id="_ref_18471"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a></emu-nt>.</li><li>Return « <var>declaration</var> ».</li></ol></li><li>Return a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3262"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ubbvtbun" id="prod-sPvwm3DB">
|
||
<emu-nt id="_ref_18472"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_18473"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="TopLevelVarScopedDeclarations" id="_ref_3263"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvarscopeddeclarations">TopLevelVarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18474"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pyyivtxj" id="prod-h55yOiCC"><emu-nt id="_ref_18475"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_18476"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> is <emu-grammar><emu-production name="Statement" collapsed="" class=" inline">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cij_anje"><emu-nt id="_ref_18477"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>, return the <emu-xref aoid="TopLevelVarScopedDeclarations" id="_ref_3264"><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvarscopeddeclarations">TopLevelVarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18478"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li><li>Return the <emu-xref aoid="VarScopedDeclarations" id="_ref_3265"><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations">VarScopedDeclarations</a></emu-xref> of <emu-nt id="_ref_18479"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb" id="prod-aZ77pE36"><emu-nt id="_ref_18480"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return « <emu-nt id="_ref_18481"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt> ».</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-syntax-directed-operations-labels">
|
||
<h1><span class="secnum">8.3</span> Labels</h1>
|
||
|
||
<emu-clause id="sec-static-semantics-containsduplicatelabels" oldids="sec-statement-semantics-static-semantics-containsduplicatelabels,sec-block-static-semantics-containsduplicatelabels,sec-if-statement-static-semantics-containsduplicatelabels,sec-do-while-statement-static-semantics-containsduplicatelabels,sec-while-statement-static-semantics-containsduplicatelabels,sec-for-statement-static-semantics-containsduplicatelabels,sec-for-in-and-for-of-statements-static-semantics-containsduplicatelabels,sec-with-statement-static-semantics-containsduplicatelabels,sec-switch-statement-static-semantics-containsduplicatelabels,sec-labelled-statements-static-semantics-containsduplicatelabels,sec-try-statement-static-semantics-containsduplicatelabels,sec-function-definitions-static-semantics-containsduplicatelabels,sec-module-semantics-static-semantics-containsduplicatelabels" type="sdo" aoid="ContainsDuplicateLabels"><span id="sec-module-semantics-static-semantics-containsduplicatelabels"></span><span id="sec-function-definitions-static-semantics-containsduplicatelabels"></span><span id="sec-try-statement-static-semantics-containsduplicatelabels"></span><span id="sec-labelled-statements-static-semantics-containsduplicatelabels"></span><span id="sec-switch-statement-static-semantics-containsduplicatelabels"></span><span id="sec-with-statement-static-semantics-containsduplicatelabels"></span><span id="sec-for-in-and-for-of-statements-static-semantics-containsduplicatelabels"></span><span id="sec-for-statement-static-semantics-containsduplicatelabels"></span><span id="sec-while-statement-static-semantics-containsduplicatelabels"></span><span id="sec-do-while-statement-static-semantics-containsduplicatelabels"></span><span id="sec-if-statement-static-semantics-containsduplicatelabels"></span><span id="sec-block-static-semantics-containsduplicatelabels"></span><span id="sec-statement-semantics-static-semantics-containsduplicatelabels"></span>
|
||
<h1><span class="secnum">8.3.1</span> Static Semantics: ContainsDuplicateLabels</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3266"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> ContainsDuplicateLabels takes argument <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3267"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns a Boolean. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="Statement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="iwwn8atx" id="prod-4jLROMWA">
|
||
<emu-nt id="_ref_18482"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cziqu-45" id="prod-7RdLi7r5">
|
||
<emu-nt id="_ref_18483"><a href="ecmascript-language-statements-and-declarations.html#prod-EmptyStatement">EmptyStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="gsqkt2bv" id="prod-9i0SR5pB">
|
||
<emu-nt id="_ref_18484"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="hx0ynljx" id="prod-kHTlCj8Z">
|
||
<emu-nt id="_ref_18485"><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="q4uv-sm3" id="prod-AQXoKs3Y">
|
||
<emu-nt id="_ref_18486"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="qm95e4wi" id="prod-g3BkTc0o">
|
||
<emu-nt id="_ref_18487"><a href="ecmascript-language-statements-and-declarations.html#prod-ReturnStatement">ReturnStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="hntake-o" id="prod-GecuZ1YX">
|
||
<emu-nt id="_ref_18488"><a href="ecmascript-language-statements-and-declarations.html#prod-ThrowStatement">ThrowStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="iseu28qi" id="prod-QFpbuk2C">
|
||
<emu-nt id="_ref_18489"><a href="ecmascript-language-statements-and-declarations.html#prod-DebuggerStatement">DebuggerStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="Block">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-SpvJf5dZ">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StatementListItem">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod-RfvwtRC6">
|
||
<emu-nt id="_ref_18490"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-IG220ePF">
|
||
<emu-nt id="_ref_18491"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18492"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasDuplicates</var> be <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3268"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18493"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasDuplicates</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3269"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18494"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IfStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fuhqe2xq" id="prod-iIi7e4Mv">
|
||
<emu-t>if</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18495"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18496"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
<emu-t>else</emu-t>
|
||
<emu-nt id="_ref_18497"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasDuplicate</var> be <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3270"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of the first <emu-nt id="_ref_18498"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasDuplicate</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3271"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of the second <emu-nt id="_ref_18499"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IfStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="9ogvciaf" id="prod-M7d89bkQ">
|
||
<emu-t>if</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18500"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18501"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3272"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18502"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DoWhileStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DoWhileStatement">DoWhileStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jocmqoht" id="prod-CSwsyonC">
|
||
<emu-t>do</emu-t>
|
||
<emu-nt id="_ref_18503"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
<emu-t>while</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18504"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3273"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18505"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="WhileStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-WhileStatement">WhileStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="92j78-b5" id="prod-UWs53aWN">
|
||
<emu-t>while</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18506"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18507"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3274"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18508"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForStatement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="_do88got" id="prod-GgLrXaaO">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt optional="" id="_ref_18509"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18510"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18511"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18512"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="sodmtko8" id="prod-di1-cm7_">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18513"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18514"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18515"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18516"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="k8b-ryxj" id="prod-zOnkGPoB">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18517"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18518"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18519"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18520"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3275"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18521"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForInOfStatement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="v1ibcd1w" id="prod-rNKuYq6q">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18522"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18523"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18524"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="7pgjrcn-" id="prod-jKYdRg__">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18525"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18526"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18527"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jzctgxkp" id="prod-zBPUdTbl">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18528"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18529"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18530"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jqzgi_en" id="prod-zoCqTANq">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18531"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18532"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18533"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="7m-adytu" id="prod-zqf8dZti">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18534"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18535"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18536"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="b3wzboyu" id="prod-dRwtb2-L">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18537"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18538"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18539"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="mhrux1r7" id="prod-kCZrLuMF">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18540"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18541"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18542"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cyt_lv_1" id="prod-1mQl-EgZ">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18543"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18544"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18545"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="uatmda3j" id="prod-SKvXy5l6">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18546"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18547"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18548"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3276"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18549"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This section is extended by Annex <emu-xref href="#sec-initializers-in-forin-statement-heads" id="_ref_229"><a href="additional-ecmascript-features-for-web-browsers.html#sec-initializers-in-forin-statement-heads">B.3.5</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="WithStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-WithStatement">WithStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i70kview" id="prod-92qu0ILT">
|
||
<emu-t>with</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18550"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18551"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3277"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18552"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="SwitchStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uvrp_hkw" id="prod-OMSfPp_0">
|
||
<emu-t>switch</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18553"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18554"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3278"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18555"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-8Uz0YNaN">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ududlhou" id="prod-UcaBQzki">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt optional="" id="_ref_18556"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_18557"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18558"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the first <emu-nt id="_ref_18559"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, then<ol><li>If <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3279"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of the first <emu-nt id="_ref_18560"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> with argument <var>labelSet</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li></ol></li><li>If <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3280"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18561"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> with argument <var>labelSet</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>If the second <emu-nt id="_ref_18562"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is not present, return <emu-val>false</emu-val>.</li><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3281"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of the second <emu-nt id="_ref_18563"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClauses" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="addji9rs" id="prod-yJHneCFO">
|
||
<emu-nt id="_ref_18564"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>
|
||
<emu-nt id="_ref_18565"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasDuplicates</var> be <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3282"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18566"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasDuplicates</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3283"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18567"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="x20nmjyd" id="prod-YbPvJc_D">
|
||
<emu-t>case</emu-t>
|
||
<emu-nt id="_ref_18568"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18569"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18570"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3284"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18571"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> with argument <var>labelSet</var>.</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DefaultClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z4ihpgum" id="prod-__iQJPEb">
|
||
<emu-t>default</emu-t>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18572"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18573"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3285"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18574"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> with argument <var>labelSet</var>.</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ubbvtbun" id="prod-UiQoMdIo">
|
||
<emu-nt id="_ref_18575"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_18576"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>label</var> be the <emu-xref aoid="StringValue" id="_ref_3286"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_18577"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>.</li><li>If <var>labelSet</var> contains <var>label</var>, return <emu-val>true</emu-val>.</li><li>Let <var>newLabelSet</var> be the <emu-xref href="#list-concatenation" id="_ref_3287"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>labelSet</var> and « <var>label</var> ».</li><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3288"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18578"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> with argument <var>newLabelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb" id="prod-j-zK1vJK"><emu-nt id="_ref_18579"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="qhfov2lc" id="prod-iFqlj7Lz">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18580"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18581"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasDuplicates</var> be <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3289"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18582"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasDuplicates</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3290"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18583"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xsakufa6" id="prod-DkNjzLGB">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18584"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18585"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasDuplicates</var> be <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3291"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18586"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasDuplicates</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3292"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18587"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gxlzfd5s" id="prod-Aa8IOm4z">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18588"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18589"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>
|
||
<emu-nt id="_ref_18590"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3293"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18591"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with argument <var>labelSet</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>If <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3294"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18592"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> with argument <var>labelSet</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3295"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18593"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Catch" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="3ce8nhiw" id="prod-K0PcnMLw">
|
||
<emu-t>catch</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18594"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18595"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3296"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18596"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-cn79vCHf"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-_uXGEqKw"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItemList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dd23jrxs" id="prod-FlDPQVjo">
|
||
<emu-nt id="_ref_18597"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>
|
||
<emu-nt id="_ref_18598"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasDuplicates</var> be <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3297"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18599"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasDuplicates</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsDuplicateLabels" id="_ref_3298"><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels">ContainsDuplicateLabels</a></emu-xref> of <emu-nt id="_ref_18600"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4fwtd8-6" id="prod-2RINFrzE">
|
||
<emu-nt id="_ref_18601"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration">ImportDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="ky6bsn7x" id="prod-OfzEYjJ0">
|
||
<emu-nt id="_ref_18602"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-containsundefinedbreaktarget" oldids="sec-statement-semantics-static-semantics-containsundefinedbreaktarget,sec-block-static-semantics-containsundefinedbreaktarget,sec-if-statement-static-semantics-containsundefinedbreaktarget,sec-do-while-statement-static-semantics-containsundefinedbreaktarget,sec-while-statement-static-semantics-containsundefinedbreaktarget,sec-for-statement-static-semantics-containsundefinedbreaktarget,sec-for-in-and-for-of-statements-static-semantics-containsundefinedbreaktarget,sec-break-statement-static-semantics-containsundefinedbreaktarget,sec-with-statement-static-semantics-containsundefinedbreaktarget,sec-switch-statement-static-semantics-containsundefinedbreaktarget,sec-labelled-statements-static-semantics-containsundefinedbreaktarget,sec-try-statement-static-semantics-containsundefinedbreaktarget,sec-function-definitions-static-semantics-containsundefinedbreaktarget,sec-module-semantics-static-semantics-containsundefinedbreaktarget" type="sdo" aoid="ContainsUndefinedBreakTarget"><span id="sec-module-semantics-static-semantics-containsundefinedbreaktarget"></span><span id="sec-function-definitions-static-semantics-containsundefinedbreaktarget"></span><span id="sec-try-statement-static-semantics-containsundefinedbreaktarget"></span><span id="sec-labelled-statements-static-semantics-containsundefinedbreaktarget"></span><span id="sec-switch-statement-static-semantics-containsundefinedbreaktarget"></span><span id="sec-with-statement-static-semantics-containsundefinedbreaktarget"></span><span id="sec-break-statement-static-semantics-containsundefinedbreaktarget"></span><span id="sec-for-in-and-for-of-statements-static-semantics-containsundefinedbreaktarget"></span><span id="sec-for-statement-static-semantics-containsundefinedbreaktarget"></span><span id="sec-while-statement-static-semantics-containsundefinedbreaktarget"></span><span id="sec-do-while-statement-static-semantics-containsundefinedbreaktarget"></span><span id="sec-if-statement-static-semantics-containsundefinedbreaktarget"></span><span id="sec-block-static-semantics-containsundefinedbreaktarget"></span><span id="sec-statement-semantics-static-semantics-containsundefinedbreaktarget"></span>
|
||
<h1><span class="secnum">8.3.2</span> Static Semantics: ContainsUndefinedBreakTarget</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3299"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> ContainsUndefinedBreakTarget takes argument <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3300"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns a Boolean. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="Statement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="iwwn8atx" id="prod-KN2F74JM">
|
||
<emu-nt id="_ref_18603"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cziqu-45" id="prod-pHNPZODp">
|
||
<emu-nt id="_ref_18604"><a href="ecmascript-language-statements-and-declarations.html#prod-EmptyStatement">EmptyStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="gsqkt2bv" id="prod-vqweAXZW">
|
||
<emu-nt id="_ref_18605"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="hx0ynljx" id="prod-u--VfnyG">
|
||
<emu-nt id="_ref_18606"><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="qm95e4wi" id="prod-Mk4OiTQ0">
|
||
<emu-nt id="_ref_18607"><a href="ecmascript-language-statements-and-declarations.html#prod-ReturnStatement">ReturnStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="hntake-o" id="prod-_wHAxVWB">
|
||
<emu-nt id="_ref_18608"><a href="ecmascript-language-statements-and-declarations.html#prod-ThrowStatement">ThrowStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="iseu28qi" id="prod-zv1CKK_U">
|
||
<emu-nt id="_ref_18609"><a href="ecmascript-language-statements-and-declarations.html#prod-DebuggerStatement">DebuggerStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="Block">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-YsZID3li">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StatementListItem">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod-H7TPYpiU">
|
||
<emu-nt id="_ref_18610"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-v3tH_xWo">
|
||
<emu-nt id="_ref_18611"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18612"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3301"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18613"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3302"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18614"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IfStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fuhqe2xq" id="prod-OZMT2LO1">
|
||
<emu-t>if</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18615"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18616"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
<emu-t>else</emu-t>
|
||
<emu-nt id="_ref_18617"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3303"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of the first <emu-nt id="_ref_18618"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3304"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of the second <emu-nt id="_ref_18619"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IfStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="9ogvciaf" id="prod-kiVPWNCJ">
|
||
<emu-t>if</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18620"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18621"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3305"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18622"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DoWhileStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DoWhileStatement">DoWhileStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jocmqoht" id="prod-JiuempzE">
|
||
<emu-t>do</emu-t>
|
||
<emu-nt id="_ref_18623"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
<emu-t>while</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18624"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3306"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18625"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="WhileStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-WhileStatement">WhileStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="92j78-b5" id="prod-NfepJ8d-">
|
||
<emu-t>while</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18626"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18627"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3307"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18628"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForStatement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="_do88got" id="prod-_bYykgU2">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt optional="" id="_ref_18629"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18630"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18631"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18632"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="sodmtko8" id="prod-0RGYYYa8">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18633"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18634"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18635"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18636"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="k8b-ryxj" id="prod-gRSHgUm2">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18637"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18638"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18639"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18640"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3308"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18641"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForInOfStatement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="v1ibcd1w" id="prod-mui4tXHs">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18642"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18643"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18644"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="7pgjrcn-" id="prod-tYmMbbAK">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18645"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18646"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18647"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jzctgxkp" id="prod-xkRBC0p_">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18648"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18649"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18650"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jqzgi_en" id="prod-3FISwBIz">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18651"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18652"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18653"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="7m-adytu" id="prod-3UTSN7Q_">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18654"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18655"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18656"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="b3wzboyu" id="prod-0EPuBRtw">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18657"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18658"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18659"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="mhrux1r7" id="prod-bxXqpHGf">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18660"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18661"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18662"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cyt_lv_1" id="prod-DVohExfz">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18663"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18664"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18665"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="uatmda3j" id="prod-eDdhr4db">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18666"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18667"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18668"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3309"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18669"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This section is extended by Annex <emu-xref href="#sec-initializers-in-forin-statement-heads" id="_ref_230"><a href="additional-ecmascript-features-for-web-browsers.html#sec-initializers-in-forin-statement-heads">B.3.5</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="BreakStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tlip5zkt" id="prod-YN_w7WcD">
|
||
<emu-t>break</emu-t>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BreakStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="kcg-yy3r" id="prod-sVlKX7KO">
|
||
<emu-t>break</emu-t>
|
||
<emu-nt id="_ref_18670"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <var>labelSet</var> contains the <emu-xref aoid="StringValue" id="_ref_3310"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_18671"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>, return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="WithStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-WithStatement">WithStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i70kview" id="prod-wq9kNHey">
|
||
<emu-t>with</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18672"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18673"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3311"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18674"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="SwitchStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uvrp_hkw" id="prod-zEFnXzdo">
|
||
<emu-t>switch</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18675"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18676"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3312"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18677"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-MxUCmZej">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ududlhou" id="prod-a3dtTxDp">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt optional="" id="_ref_18678"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_18679"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18680"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the first <emu-nt id="_ref_18681"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, then<ol><li>If <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3313"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of the first <emu-nt id="_ref_18682"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> with argument <var>labelSet</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li></ol></li><li>If <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3314"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18683"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> with argument <var>labelSet</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>If the second <emu-nt id="_ref_18684"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is not present, return <emu-val>false</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3315"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of the second <emu-nt id="_ref_18685"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClauses" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="addji9rs" id="prod-mWAyGNz1">
|
||
<emu-nt id="_ref_18686"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>
|
||
<emu-nt id="_ref_18687"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3316"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18688"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3317"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18689"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="x20nmjyd" id="prod-xKDcEL_e">
|
||
<emu-t>case</emu-t>
|
||
<emu-nt id="_ref_18690"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18691"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18692"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3318"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18693"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> with argument <var>labelSet</var>.</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DefaultClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z4ihpgum" id="prod-WyF-LUeK">
|
||
<emu-t>default</emu-t>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18694"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18695"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3319"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18696"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> with argument <var>labelSet</var>.</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ubbvtbun" id="prod-zsR5iLZH">
|
||
<emu-nt id="_ref_18697"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_18698"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>label</var> be the <emu-xref aoid="StringValue" id="_ref_3320"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_18699"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>.</li><li>Let <var>newLabelSet</var> be the <emu-xref href="#list-concatenation" id="_ref_3321"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>labelSet</var> and « <var>label</var> ».</li><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3322"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18700"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> with argument <var>newLabelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb" id="prod-Mu3VhVjD"><emu-nt id="_ref_18701"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="qhfov2lc" id="prod-Yr89pOXp">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18702"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18703"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3323"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18704"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3324"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18705"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xsakufa6" id="prod-3_4iLynl">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18706"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18707"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3325"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18708"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3326"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18709"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gxlzfd5s" id="prod-KaiFSIRm">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18710"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18711"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>
|
||
<emu-nt id="_ref_18712"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3327"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18713"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with argument <var>labelSet</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>If <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3328"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18714"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> with argument <var>labelSet</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3329"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18715"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Catch" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="3ce8nhiw" id="prod-_CFhQEhr">
|
||
<emu-t>catch</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18716"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18717"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3330"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18718"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-fN52Tgzf"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-vh6EF-BV"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItemList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dd23jrxs" id="prod-gDhjMfCK">
|
||
<emu-nt id="_ref_18719"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>
|
||
<emu-nt id="_ref_18720"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3331"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18721"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt> with argument <var>labelSet</var>.</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedBreakTarget" id="_ref_3332"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget">ContainsUndefinedBreakTarget</a></emu-xref> of <emu-nt id="_ref_18722"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4fwtd8-6" id="prod-vD2SO16F">
|
||
<emu-nt id="_ref_18723"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration">ImportDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="ky6bsn7x" id="prod-UZaVgIpu">
|
||
<emu-nt id="_ref_18724"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-containsundefinedcontinuetarget" oldids="sec-statement-semantics-static-semantics-containsundefinedcontinuetarget,sec-block-static-semantics-containsundefinedcontinuetarget,sec-if-statement-static-semantics-containsundefinedcontinuetarget,sec-do-while-statement-static-semantics-containsundefinedcontinuetarget,sec-while-statement-static-semantics-containsundefinedcontinuetarget,sec-for-statement-static-semantics-containsundefinedcontinuetarget,sec-for-in-and-for-of-statements-static-semantics-containsundefinedcontinuetarget,sec-continue-statement-static-semantics-containsundefinedcontinuetarget,sec-with-statement-static-semantics-containsundefinedcontinuetarget,sec-switch-statement-static-semantics-containsundefinedcontinuetarget,sec-labelled-statements-static-semantics-containsundefinedcontinuetarget,sec-try-statement-static-semantics-containsundefinedcontinuetarget,sec-function-definitions-static-semantics-containsundefinedcontinuetarget,sec-module-semantics-static-semantics-containsundefinedcontinuetarget" type="sdo" aoid="ContainsUndefinedContinueTarget"><span id="sec-module-semantics-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-function-definitions-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-try-statement-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-labelled-statements-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-switch-statement-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-with-statement-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-continue-statement-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-for-in-and-for-of-statements-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-for-statement-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-while-statement-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-do-while-statement-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-if-statement-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-block-static-semantics-containsundefinedcontinuetarget"></span><span id="sec-statement-semantics-static-semantics-containsundefinedcontinuetarget"></span>
|
||
<h1><span class="secnum">8.3.3</span> Static Semantics: ContainsUndefinedContinueTarget</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3333"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> ContainsUndefinedContinueTarget takes arguments <var>iterationSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3334"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3335"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns a Boolean. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="Statement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="iwwn8atx" id="prod-zeOghq31">
|
||
<emu-nt id="_ref_18725"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cziqu-45" id="prod-THlI2H2M">
|
||
<emu-nt id="_ref_18726"><a href="ecmascript-language-statements-and-declarations.html#prod-EmptyStatement">EmptyStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="gsqkt2bv" id="prod-j74v1E9Q">
|
||
<emu-nt id="_ref_18727"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="q4uv-sm3" id="prod-S4TJmj3I">
|
||
<emu-nt id="_ref_18728"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="qm95e4wi" id="prod-gDEZkDbt">
|
||
<emu-nt id="_ref_18729"><a href="ecmascript-language-statements-and-declarations.html#prod-ReturnStatement">ReturnStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="hntake-o" id="prod-uTECl_Vq">
|
||
<emu-nt id="_ref_18730"><a href="ecmascript-language-statements-and-declarations.html#prod-ThrowStatement">ThrowStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="iseu28qi" id="prod-NBG_pA-N">
|
||
<emu-nt id="_ref_18731"><a href="ecmascript-language-statements-and-declarations.html#prod-DebuggerStatement">DebuggerStatement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="Block">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-eptReca1">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StatementListItem">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1vn3ibwe" id="prod-0U13tcP4">
|
||
<emu-nt id="_ref_18732"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Statement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gre9qn6e" id="prod-q91g2YEq"><emu-nt id="_ref_18733"><a href="ecmascript-language-statements-and-declarations.html#prod-BlockStatement">BlockStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3336"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18734"><a href="ecmascript-language-statements-and-declarations.html#prod-BlockStatement">BlockStatement</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BreakableStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BreakableStatement">BreakableStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="kmxl4yum" id="prod-PptGj0zd"><emu-nt id="_ref_18735"><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>newIterationSet</var> be the <emu-xref href="#list-concatenation" id="_ref_3337"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>iterationSet</var> and <var>labelSet</var>.</li><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3338"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18736"><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt> with arguments <var>newIterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="StatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dbrzeh7l" id="prod-Vrq9L4TL">
|
||
<emu-nt id="_ref_18737"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>
|
||
<emu-nt id="_ref_18738"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3339"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18739"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3340"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18740"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IfStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fuhqe2xq" id="prod-MYTRO2yV">
|
||
<emu-t>if</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18741"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18742"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
<emu-t>else</emu-t>
|
||
<emu-nt id="_ref_18743"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3341"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of the first <emu-nt id="_ref_18744"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3342"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of the second <emu-nt id="_ref_18745"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IfStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="9ogvciaf" id="prod-idT2m0fR">
|
||
<emu-t>if</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18746"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18747"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3343"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18748"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DoWhileStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DoWhileStatement">DoWhileStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jocmqoht" id="prod-1k-PvIQ6">
|
||
<emu-t>do</emu-t>
|
||
<emu-nt id="_ref_18749"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
<emu-t>while</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18750"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3344"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18751"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="WhileStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-WhileStatement">WhileStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="92j78-b5" id="prod-nqE7jDen">
|
||
<emu-t>while</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18752"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18753"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3345"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18754"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForStatement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="_do88got" id="prod-sdOZ0OVe">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt optional="" id="_ref_18755"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18756"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18757"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18758"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="sodmtko8" id="prod-38R1spHk">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18759"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18760"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18761"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18762"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="k8b-ryxj" id="prod-GQ9tF3ug">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18763"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18764"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
<emu-nt optional="" id="_ref_18765"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18766"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3346"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18767"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ForInOfStatement">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="v1ibcd1w" id="prod-ilROtw6r">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18768"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18769"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18770"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="7pgjrcn-" id="prod-RXKTOvxD">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18771"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18772"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18773"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jzctgxkp" id="prod-mKAcS051">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18774"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18775"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18776"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jqzgi_en" id="prod-MPaED8xy">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18777"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18778"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18779"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="7m-adytu" id="prod-SLsBgk8L">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18780"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18781"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18782"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="b3wzboyu" id="prod-G_08fu0g">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18783"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18784"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18785"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="mhrux1r7" id="prod-xuMzWdW7">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18786"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18787"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18788"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cyt_lv_1" id="prod-xVs7Y4Vv">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>var</emu-t>
|
||
<emu-nt id="_ref_18789"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18790"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18791"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="uatmda3j" id="prod-Ii0_W2zX">
|
||
<emu-t>for</emu-t>
|
||
<emu-t>await</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18792"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>
|
||
<emu-t>of</emu-t>
|
||
<emu-nt id="_ref_18793"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18794"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3347"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18795"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This section is extended by Annex <emu-xref href="#sec-initializers-in-forin-statement-heads" id="_ref_231"><a href="additional-ecmascript-features-for-web-browsers.html#sec-initializers-in-forin-statement-heads">B.3.5</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="ContinueStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="6qppgxyk" id="prod-P3ParQAP">
|
||
<emu-t>continue</emu-t>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ContinueStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="wh7qddgu" id="prod-ngwxJt1P">
|
||
<emu-t>continue</emu-t>
|
||
<emu-nt id="_ref_18796"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>;</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <var>iterationSet</var> contains the <emu-xref aoid="StringValue" id="_ref_3348"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_18797"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>, return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="WithStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-WithStatement">WithStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i70kview" id="prod-qti0YV4g">
|
||
<emu-t>with</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18798"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18799"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3349"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18800"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="SwitchStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uvrp_hkw" id="prod-yGASkGus">
|
||
<emu-t>switch</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18801"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18802"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3350"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18803"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-wESl6-va">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ududlhou" id="prod-L1SF9WLb">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt optional="" id="_ref_18804"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_18805"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_18806"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the first <emu-nt id="_ref_18807"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, then<ol><li>If <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3351"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of the first <emu-nt id="_ref_18808"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> with arguments <var>iterationSet</var> and « » is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li></ol></li><li>If <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3352"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18809"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> with arguments <var>iterationSet</var> and « » is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>If the second <emu-nt id="_ref_18810"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is not present, return <emu-val>false</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3353"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of the second <emu-nt id="_ref_18811"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClauses" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="addji9rs" id="prod-Mf-FlzJR">
|
||
<emu-nt id="_ref_18812"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>
|
||
<emu-nt id="_ref_18813"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3354"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18814"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3355"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18815"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CaseClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="x20nmjyd" id="prod-YLBmIA_U">
|
||
<emu-t>case</emu-t>
|
||
<emu-nt id="_ref_18816"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18817"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18818"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3356"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18819"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="DefaultClause" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="z4ihpgum" id="prod-ycWJ_ozd">
|
||
<emu-t>default</emu-t>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt optional="" id="_ref_18820"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If the <emu-nt id="_ref_18821"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is present, return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3357"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18822"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ubbvtbun" id="prod-8au0KFQe">
|
||
<emu-nt id="_ref_18823"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_18824"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>label</var> be the <emu-xref aoid="StringValue" id="_ref_3358"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_18825"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>.</li><li>Let <var>newLabelSet</var> be the <emu-xref href="#list-concatenation" id="_ref_3359"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>labelSet</var> and « <var>label</var> ».</li><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3360"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18826"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> with arguments <var>iterationSet</var> and <var>newLabelSet</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LabelledItem" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb" id="prod-I9dzHyBf"><emu-nt id="_ref_18827"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="qhfov2lc" id="prod-bHqvfllk">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18828"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18829"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3361"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18830"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3362"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18831"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xsakufa6" id="prod-MPDlN7RI">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18832"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18833"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3363"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18834"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3364"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18835"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="TryStatement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gxlzfd5s" id="prod-fYVcY74b">
|
||
<emu-t>try</emu-t>
|
||
<emu-nt id="_ref_18836"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
<emu-nt id="_ref_18837"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt>
|
||
<emu-nt id="_ref_18838"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3365"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18839"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with arguments <var>iterationSet</var> and « » is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>If <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3366"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18840"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> with arguments <var>iterationSet</var> and « » is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3367"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18841"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="Catch" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="3ce8nhiw" id="prod-WfIkG4rU">
|
||
<emu-t>catch</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18842"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-nt id="_ref_18843"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3368"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18844"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionStatementList">FunctionStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-zb1__ND8"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassStaticBlockStatementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockStatementList">ClassStaticBlockStatementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-7jAHsc96"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItemList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dd23jrxs" id="prod-9GocAvXy">
|
||
<emu-nt id="_ref_18845"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt>
|
||
<emu-nt id="_ref_18846"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>hasUndefinedLabels</var> be <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3369"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18847"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItemList">ModuleItemList</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li><li>If <var>hasUndefinedLabels</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-xref aoid="ContainsUndefinedContinueTarget" id="_ref_3370"><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget">ContainsUndefinedContinueTarget</a></emu-xref> of <emu-nt id="_ref_18848"><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> with arguments <var>iterationSet</var> and « ».</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ModuleItem">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-ModuleItem">ModuleItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4fwtd8-6" id="prod-wlyNoKqz">
|
||
<emu-nt id="_ref_18849"><a href="ecmascript-language-scripts-and-modules.html#prod-ImportDeclaration">ImportDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="ky6bsn7x" id="prod-35aTaLbx">
|
||
<emu-nt id="_ref_18850"><a href="ecmascript-language-scripts-and-modules.html#prod-ExportDeclaration">ExportDeclaration</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-syntax-directed-operations-function-name-inference">
|
||
<h1><span class="secnum">8.4</span> Function Name Inference</h1>
|
||
|
||
<emu-clause id="sec-static-semantics-hasname" oldids="sec-semantics-static-semantics-hasname,sec-function-definitions-static-semantics-hasname,sec-arrow-function-definitions-static-semantics-hasname,sec-generator-function-definitions-static-semantics-hasname,sec-async-generator-function-definitions-static-semantics-hasname,sec-class-definitions-static-semantics-hasname,sec-async-function-definitions-static-semantics-HasName,sec-async-arrow-function-definitions-static-semantics-HasName" type="sdo" aoid="HasName"><span id="sec-async-arrow-function-definitions-static-semantics-HasName"></span><span id="sec-async-function-definitions-static-semantics-HasName"></span><span id="sec-class-definitions-static-semantics-hasname"></span><span id="sec-async-generator-function-definitions-static-semantics-hasname"></span><span id="sec-generator-function-definitions-static-semantics-hasname"></span><span id="sec-arrow-function-definitions-static-semantics-hasname"></span><span id="sec-function-definitions-static-semantics-hasname"></span><span id="sec-semantics-static-semantics-hasname"></span>
|
||
<h1><span class="secnum">8.4.1</span> Static Semantics: HasName</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3371"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> HasName takes no arguments and returns a Boolean. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="PrimaryExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PrimaryExpression">PrimaryExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="yrb110hm" id="prod-sGIyUYN_"><emu-nt id="_ref_18851"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>expr</var> be the <emu-nt id="_ref_18852"><a href="ecmascript-language-expressions.html#prod-ParenthesizedExpression">ParenthesizedExpression</a></emu-nt> that is <emu-xref href="#sec-syntactic-grammar" id="_ref_3372"><a href="notational-conventions.html#sec-syntactic-grammar">covered</a></emu-xref> by <emu-nt id="_ref_18853"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt>.</li><li>If <emu-xref aoid="IsFunctionDefinition" id="_ref_3373"><a href="syntax-directed-operations.html#sec-static-semantics-isfunctiondefinition">IsFunctionDefinition</a></emu-xref> of <var>expr</var> is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>Return <emu-xref aoid="HasName" id="_ref_3374"><a href="syntax-directed-operations.html#sec-static-semantics-hasname">HasName</a></emu-xref> of <var>expr</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionExpression">FunctionExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="smus6qca" id="prod-lYeq4upI">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18854"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18855"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="GeneratorExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorExpression">GeneratorExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dsczygsq" id="prod-yNYR71Xj">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18856"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18857"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncGeneratorExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorExpression">AsyncGeneratorExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xruu4gg0" id="prod--vrKJ_CQ">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18858"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18859"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncFunctionExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionExpression">AsyncFunctionExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="agdmcdye" id="prod-8SfxZRyk">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18860"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18861"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ArrowFunction">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ArrowFunction">ArrowFunction</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ieeod2mi" id="prod-yzK8_iQh">
|
||
<emu-nt id="_ref_18862"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowParameters">ArrowParameters</a></emu-nt>
|
||
<emu-t>=></emu-t>
|
||
<emu-nt id="_ref_18863"><a href="ecmascript-language-functions-and-classes.html#prod-ConciseBody">ConciseBody</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncArrowFunction">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowFunction">AsyncArrowFunction</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dqxgopsb" id="prod-WTqF0fRI">
|
||
<emu-t>async</emu-t>
|
||
<emu-nt id="_ref_18864"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowBindingIdentifier">AsyncArrowBindingIdentifier</a></emu-nt>
|
||
<emu-t>=></emu-t>
|
||
<emu-nt id="_ref_18865"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="auwv8gbh" id="prod-Wvi-SSNj">
|
||
<emu-nt id="_ref_18866"><a href="ecmascript-language-functions-and-classes.html#prod-CoverCallExpressionAndAsyncArrowHead">CoverCallExpressionAndAsyncArrowHead</a></emu-nt>
|
||
<emu-t>=></emu-t>
|
||
<emu-nt id="_ref_18867"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ClassExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassExpression">ClassExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1ghyizwr" id="prod-_uck0Y8U">
|
||
<emu-t>class</emu-t>
|
||
<emu-nt id="_ref_18868"><a href="ecmascript-language-functions-and-classes.html#prod-ClassTail">ClassTail</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionExpression">FunctionExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gxoavzvy" id="prod-M26qeGCy">
|
||
<emu-t>function</emu-t>
|
||
<emu-nt id="_ref_18869"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18870"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18871"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="GeneratorExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorExpression">GeneratorExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fbyztjbh" id="prod-_5BKcJSD">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_18872"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18873"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18874"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncGeneratorExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorExpression">AsyncGeneratorExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="e9lmm5cj" id="prod-2Vz4PDlE">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_18875"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18876"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18877"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncFunctionExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionExpression">AsyncFunctionExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4mmt35rm" id="prod-OXrRSTMk">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-nt id="_ref_18878"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18879"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18880"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ClassExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassExpression">ClassExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tusuwhcv" id="prod-IuRXWsQe">
|
||
<emu-t>class</emu-t>
|
||
<emu-nt id="_ref_18881"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-nt id="_ref_18882"><a href="ecmascript-language-functions-and-classes.html#prod-ClassTail">ClassTail</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>true</emu-val>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-isfunctiondefinition" oldids="sec-semantics-static-semantics-isfunctiondefinition,sec-grouping-operator-static-semantics-isfunctiondefinition,sec-static-semantics-static-semantics-isfunctiondefinition,sec-update-expressions-static-semantics-isfunctiondefinition,sec-unary-operators-static-semantics-isfunctiondefinition,sec-exp-operator-static-semantics-isfunctiondefinition,sec-multiplicative-operators-static-semantics-isfunctiondefinition,sec-additive-operators-static-semantics-isfunctiondefinition,sec-bitwise-shift-operators-static-semantics-isfunctiondefinition,sec-relational-operators-static-semantics-isfunctiondefinition,sec-equality-operators-static-semantics-isfunctiondefinition,sec-binary-bitwise-operators-static-semantics-isfunctiondefinition,sec-binary-logical-operators-static-semantics-isfunctiondefinition,sec-conditional-operator-static-semantics-isfunctiondefinition,sec-assignment-operators-static-semantics-isfunctiondefinition,sec-comma-operator-static-semantics-isfunctiondefinition,sec-function-definitions-static-semantics-isfunctiondefinition,sec-generator-function-definitions-static-semantics-isfunctiondefinition,sec-async-generator-function-definitions-static-semantics-isfunctiondefinition,sec-class-definitions-static-semantics-isfunctiondefinition,sec-async-function-definitions-static-semantics-IsFunctionDefinition" type="sdo" aoid="IsFunctionDefinition"><span id="sec-async-function-definitions-static-semantics-IsFunctionDefinition"></span><span id="sec-class-definitions-static-semantics-isfunctiondefinition"></span><span id="sec-async-generator-function-definitions-static-semantics-isfunctiondefinition"></span><span id="sec-generator-function-definitions-static-semantics-isfunctiondefinition"></span><span id="sec-function-definitions-static-semantics-isfunctiondefinition"></span><span id="sec-comma-operator-static-semantics-isfunctiondefinition"></span><span id="sec-assignment-operators-static-semantics-isfunctiondefinition"></span><span id="sec-conditional-operator-static-semantics-isfunctiondefinition"></span><span id="sec-binary-logical-operators-static-semantics-isfunctiondefinition"></span><span id="sec-binary-bitwise-operators-static-semantics-isfunctiondefinition"></span><span id="sec-equality-operators-static-semantics-isfunctiondefinition"></span><span id="sec-relational-operators-static-semantics-isfunctiondefinition"></span><span id="sec-bitwise-shift-operators-static-semantics-isfunctiondefinition"></span><span id="sec-additive-operators-static-semantics-isfunctiondefinition"></span><span id="sec-multiplicative-operators-static-semantics-isfunctiondefinition"></span><span id="sec-exp-operator-static-semantics-isfunctiondefinition"></span><span id="sec-unary-operators-static-semantics-isfunctiondefinition"></span><span id="sec-update-expressions-static-semantics-isfunctiondefinition"></span><span id="sec-static-semantics-static-semantics-isfunctiondefinition"></span><span id="sec-grouping-operator-static-semantics-isfunctiondefinition"></span><span id="sec-semantics-static-semantics-isfunctiondefinition"></span>
|
||
<h1><span class="secnum">8.4.2</span> Static Semantics: IsFunctionDefinition</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3375"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> IsFunctionDefinition takes no arguments and returns a Boolean. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="PrimaryExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PrimaryExpression">PrimaryExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="yrb110hm" id="prod-Xr5TwVeJ"><emu-nt id="_ref_18883"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>expr</var> be the <emu-nt id="_ref_18884"><a href="ecmascript-language-expressions.html#prod-ParenthesizedExpression">ParenthesizedExpression</a></emu-nt> that is <emu-xref href="#sec-syntactic-grammar" id="_ref_3376"><a href="notational-conventions.html#sec-syntactic-grammar">covered</a></emu-xref> by <emu-nt id="_ref_18885"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt>.</li><li>Return <emu-xref aoid="IsFunctionDefinition" id="_ref_3377"><a href="syntax-directed-operations.html#sec-static-semantics-isfunctiondefinition">IsFunctionDefinition</a></emu-xref> of <var>expr</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="PrimaryExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PrimaryExpression">PrimaryExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jo4mwtvh" id="prod-ujSQZu1u">
|
||
<emu-t>this</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="i2hxnrih" id="prod-uqXksnK9">
|
||
<emu-nt id="_ref_18886"><a href="ecmascript-language-expressions.html#prod-IdentifierReference">IdentifierReference</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="kul-a19e" id="prod-xZz3xGrw">
|
||
<emu-nt id="_ref_18887"><a href="ecmascript-language-expressions.html#prod-Literal">Literal</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="g_mjk5cm" id="prod-uQZUJPuk">
|
||
<emu-nt id="_ref_18888"><a href="ecmascript-language-expressions.html#prod-ArrayLiteral">ArrayLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="zreje_zz" id="prod-YSIQyJy2">
|
||
<emu-nt id="_ref_18889"><a href="ecmascript-language-expressions.html#prod-ObjectLiteral">ObjectLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="mbzy6lvr" id="prod-xClvmJ_T">
|
||
<emu-nt id="_ref_18890"><a href="ecmascript-language-lexical-grammar.html#prod-RegularExpressionLiteral">RegularExpressionLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="2zis6bbu" id="prod-yobd7pAZ">
|
||
<emu-nt id="_ref_18891"><a href="ecmascript-language-expressions.html#prod-TemplateLiteral">TemplateLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="MemberExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="a74xd7de" id="prod-z2eYriJH">
|
||
<emu-nt id="_ref_18892"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-t>[</emu-t>
|
||
<emu-nt id="_ref_18893"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="frbj984t" id="prod-v71UqLpH">
|
||
<emu-nt id="_ref_18894"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_18895"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="fj52gjle" id="prod-mDSr9u1p">
|
||
<emu-nt id="_ref_18896"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-nt id="_ref_18897"><a href="ecmascript-language-expressions.html#prod-TemplateLiteral">TemplateLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="x4tzletw" id="prod-JqMmNc5v">
|
||
<emu-nt id="_ref_18898"><a href="ecmascript-language-expressions.html#prod-SuperProperty">SuperProperty</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="yb7id2be" id="prod-0UkusR6o">
|
||
<emu-nt id="_ref_18899"><a href="ecmascript-language-expressions.html#prod-MetaProperty">MetaProperty</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cfq-hbbx" id="prod-b4gkKBW4">
|
||
<emu-t>new</emu-t>
|
||
<emu-nt id="_ref_18900"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-nt id="_ref_18901"><a href="ecmascript-language-expressions.html#prod-Arguments">Arguments</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="0uk9afbi" id="prod-lY5Cy7Sa">
|
||
<emu-nt id="_ref_18902"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_18903"><a href="ecmascript-language-lexical-grammar.html#prod-PrivateIdentifier">PrivateIdentifier</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="NewExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-NewExpression">NewExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="51p618ta" id="prod-iarxBSr7">
|
||
<emu-t>new</emu-t>
|
||
<emu-nt id="_ref_18904"><a href="ecmascript-language-expressions.html#prod-NewExpression">NewExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="LeftHandSideExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i8det4ck" id="prod-VSHORtMa">
|
||
<emu-nt id="_ref_18905"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jbet6xpw" id="prod-0Pk6P_by">
|
||
<emu-nt id="_ref_18906"><a href="ecmascript-language-expressions.html#prod-OptionalExpression">OptionalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="UpdateExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-UpdateExpression">UpdateExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i_jjg0ex" id="prod-Vmis9Cmj">
|
||
<emu-nt id="_ref_18907"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>++</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="jr0tcoqg" id="prod-Ou259nvv">
|
||
<emu-nt id="_ref_18908"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>--</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="vwgxygda" id="prod-TCON8m02">
|
||
<emu-t>++</emu-t>
|
||
<emu-nt id="_ref_18909"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="onrvwudi" id="prod-pFhFynwZ">
|
||
<emu-t>--</emu-t>
|
||
<emu-nt id="_ref_18910"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="UnaryExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="v9wiw5nl" id="prod-0dgjtiQ7">
|
||
<emu-t>delete</emu-t>
|
||
<emu-nt id="_ref_18911"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="5dgdjy7z" id="prod-9gYsYykc">
|
||
<emu-t>void</emu-t>
|
||
<emu-nt id="_ref_18912"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="qxosuesc" id="prod-ol3I6Y7A">
|
||
<emu-t>typeof</emu-t>
|
||
<emu-nt id="_ref_18913"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="o0kdmush" id="prod-Csq5hMXB">
|
||
<emu-t>+</emu-t>
|
||
<emu-nt id="_ref_18914"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="odzkxnu5" id="prod--Zmi0P07">
|
||
<emu-t>-</emu-t>
|
||
<emu-nt id="_ref_18915"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="b9nqec7b" id="prod-QujNq09F">
|
||
<emu-t>~</emu-t>
|
||
<emu-nt id="_ref_18916"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="ulcvcjyx" id="prod-BcCJ4AWM">
|
||
<emu-t>!</emu-t>
|
||
<emu-nt id="_ref_18917"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="shlomml6" id="prod-RqMdwBuU">
|
||
<emu-nt id="_ref_18918"><a href="ecmascript-language-functions-and-classes.html#prod-AwaitExpression">AwaitExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ExponentiationExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-ExponentiationExpression">ExponentiationExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0zbfzgb0" id="prod-jkAKpcKK">
|
||
<emu-nt id="_ref_18919"><a href="ecmascript-language-expressions.html#prod-UpdateExpression">UpdateExpression</a></emu-nt>
|
||
<emu-t>**</emu-t>
|
||
<emu-nt id="_ref_18920"><a href="ecmascript-language-expressions.html#prod-ExponentiationExpression">ExponentiationExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="MultiplicativeExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-MultiplicativeExpression">MultiplicativeExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-5_iophl" id="prod-ycvianKq">
|
||
<emu-nt id="_ref_18921"><a href="ecmascript-language-expressions.html#prod-MultiplicativeExpression">MultiplicativeExpression</a></emu-nt>
|
||
<emu-nt id="_ref_18922"><a href="ecmascript-language-expressions.html#prod-MultiplicativeOperator">MultiplicativeOperator</a></emu-nt>
|
||
<emu-nt id="_ref_18923"><a href="ecmascript-language-expressions.html#prod-ExponentiationExpression">ExponentiationExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AdditiveExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dkl7f70y" id="prod--l26TQ9y">
|
||
<emu-nt id="_ref_18924"><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt>
|
||
<emu-t>+</emu-t>
|
||
<emu-nt id="_ref_18925"><a href="ecmascript-language-expressions.html#prod-MultiplicativeExpression">MultiplicativeExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="7gvefllu" id="prod-jEr8YSqe">
|
||
<emu-nt id="_ref_18926"><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt>
|
||
<emu-t>-</emu-t>
|
||
<emu-nt id="_ref_18927"><a href="ecmascript-language-expressions.html#prod-MultiplicativeExpression">MultiplicativeExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ShiftExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tg9tkm4d" id="prod-q04_MZWd">
|
||
<emu-nt id="_ref_18928"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
<emu-t><<</emu-t>
|
||
<emu-nt id="_ref_18929"><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="vimn88nj" id="prod-1-75ya8a">
|
||
<emu-nt id="_ref_18930"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
<emu-t>>></emu-t>
|
||
<emu-nt id="_ref_18931"><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="n_furjdr" id="prod-JHagwt8S">
|
||
<emu-nt id="_ref_18932"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
<emu-t>>>></emu-t>
|
||
<emu-nt id="_ref_18933"><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="RelationalExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0hbjkrqw" id="prod-_TEzVLPJ">
|
||
<emu-nt id="_ref_18934"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t><</emu-t>
|
||
<emu-nt id="_ref_18935"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="gziyg7ut" id="prod-WH_Xpcdf">
|
||
<emu-nt id="_ref_18936"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t>></emu-t>
|
||
<emu-nt id="_ref_18937"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="kcktdtrm" id="prod-CcYM3Atg">
|
||
<emu-nt id="_ref_18938"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t><=</emu-t>
|
||
<emu-nt id="_ref_18939"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="3cupp_tq" id="prod-24rx6YNr">
|
||
<emu-nt id="_ref_18940"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t>>=</emu-t>
|
||
<emu-nt id="_ref_18941"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="1ec9rmdp" id="prod-r0l0CEXN">
|
||
<emu-nt id="_ref_18942"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t>instanceof</emu-t>
|
||
<emu-nt id="_ref_18943"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="9mtjpkmx" id="prod-3O9Aii8g">
|
||
<emu-nt id="_ref_18944"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18945"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="bfkxjj0f" id="prod-2fesP1Zk">
|
||
<emu-nt id="_ref_18946"><a href="ecmascript-language-lexical-grammar.html#prod-PrivateIdentifier">PrivateIdentifier</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_18947"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="EqualityExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dxo0lfgu" id="prod-ryf2K57J">
|
||
<emu-nt id="_ref_18948"><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt>
|
||
<emu-t>==</emu-t>
|
||
<emu-nt id="_ref_18949"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cn2twrby" id="prod-kpZwfqRO">
|
||
<emu-nt id="_ref_18950"><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt>
|
||
<emu-t>!=</emu-t>
|
||
<emu-nt id="_ref_18951"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="4hu79ipe" id="prod-TnQABgBJ">
|
||
<emu-nt id="_ref_18952"><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt>
|
||
<emu-t>===</emu-t>
|
||
<emu-nt id="_ref_18953"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="irptryux" id="prod-RsN8Nsde">
|
||
<emu-nt id="_ref_18954"><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt>
|
||
<emu-t>!==</emu-t>
|
||
<emu-nt id="_ref_18955"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="BitwiseANDExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BitwiseANDExpression">BitwiseANDExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="qq3twiws" id="prod-yP2rVm0A">
|
||
<emu-nt id="_ref_18956"><a href="ecmascript-language-expressions.html#prod-BitwiseANDExpression">BitwiseANDExpression</a></emu-nt>
|
||
<emu-t>&</emu-t>
|
||
<emu-nt id="_ref_18957"><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="BitwiseXORExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BitwiseXORExpression">BitwiseXORExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tgmxlg5x" id="prod-acZRdH_C">
|
||
<emu-nt id="_ref_18958"><a href="ecmascript-language-expressions.html#prod-BitwiseXORExpression">BitwiseXORExpression</a></emu-nt>
|
||
<emu-t>^</emu-t>
|
||
<emu-nt id="_ref_18959"><a href="ecmascript-language-expressions.html#prod-BitwiseANDExpression">BitwiseANDExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="BitwiseORExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BitwiseORExpression">BitwiseORExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="aw36khwc" id="prod-FwH99KM9">
|
||
<emu-nt id="_ref_18960"><a href="ecmascript-language-expressions.html#prod-BitwiseORExpression">BitwiseORExpression</a></emu-nt>
|
||
<emu-t>|</emu-t>
|
||
<emu-nt id="_ref_18961"><a href="ecmascript-language-expressions.html#prod-BitwiseXORExpression">BitwiseXORExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="LogicalANDExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LogicalANDExpression">LogicalANDExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="iybiqszh" id="prod-FOQIZ2Ww">
|
||
<emu-nt id="_ref_18962"><a href="ecmascript-language-expressions.html#prod-LogicalANDExpression">LogicalANDExpression</a></emu-nt>
|
||
<emu-t>&&</emu-t>
|
||
<emu-nt id="_ref_18963"><a href="ecmascript-language-expressions.html#prod-BitwiseORExpression">BitwiseORExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="LogicalORExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LogicalORExpression">LogicalORExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tku92t5q" id="prod-0Mz2aish">
|
||
<emu-nt id="_ref_18964"><a href="ecmascript-language-expressions.html#prod-LogicalORExpression">LogicalORExpression</a></emu-nt>
|
||
<emu-t>||</emu-t>
|
||
<emu-nt id="_ref_18965"><a href="ecmascript-language-expressions.html#prod-LogicalANDExpression">LogicalANDExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="CoalesceExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-CoalesceExpression">CoalesceExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="3eoigfmu" id="prod-KPaiyU4J">
|
||
<emu-nt id="_ref_18966"><a href="ecmascript-language-expressions.html#prod-CoalesceExpressionHead">CoalesceExpressionHead</a></emu-nt>
|
||
<emu-t>??</emu-t>
|
||
<emu-nt id="_ref_18967"><a href="ecmascript-language-expressions.html#prod-BitwiseORExpression">BitwiseORExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ConditionalExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-ConditionalExpression">ConditionalExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="d4vlxget" id="prod-CMdoN6cr">
|
||
<emu-nt id="_ref_18968"><a href="ecmascript-language-expressions.html#prod-ShortCircuitExpression">ShortCircuitExpression</a></emu-nt>
|
||
<emu-t>?</emu-t>
|
||
<emu-nt id="_ref_18969"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_18970"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AssignmentExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uglis9ea" id="prod-D9D2dUnP">
|
||
<emu-nt id="_ref_18971"><a href="ecmascript-language-functions-and-classes.html#prod-YieldExpression">YieldExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="ijpo4eaq" id="prod-F_LSmUck">
|
||
<emu-nt id="_ref_18972"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>=</emu-t>
|
||
<emu-nt id="_ref_18973"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="xzqhr---" id="prod-t02tAu6_">
|
||
<emu-nt id="_ref_18974"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-nt id="_ref_18975"><a href="ecmascript-language-expressions.html#prod-AssignmentOperator">AssignmentOperator</a></emu-nt>
|
||
<emu-nt id="_ref_18976"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="devkzibl" id="prod-jgF9l9Ty">
|
||
<emu-nt id="_ref_18977"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>&&=</emu-t>
|
||
<emu-nt id="_ref_18978"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="dt1frwiy" id="prod-U8uU_bab">
|
||
<emu-nt id="_ref_18979"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>||=</emu-t>
|
||
<emu-nt id="_ref_18980"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="dbifpqxa" id="prod-ooZHsevq">
|
||
<emu-nt id="_ref_18981"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>??=</emu-t>
|
||
<emu-nt id="_ref_18982"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="Expression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cwoazx1t" id="prod-1V2XVvzG">
|
||
<emu-nt id="_ref_18983"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_18984"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AssignmentExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="k987eemp" id="prod-dPINdG0A">
|
||
<emu-nt id="_ref_18985"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowFunction">ArrowFunction</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="a3kew9kn" id="prod-8REG7QdK">
|
||
<emu-nt id="_ref_18986"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowFunction">AsyncArrowFunction</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="FunctionExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionExpression">FunctionExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="g3mtfiqq" id="prod-ZCX-L7VJ">
|
||
<emu-t>function</emu-t>
|
||
<emu-nt optional="" id="_ref_18987"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18988"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18989"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="GeneratorExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorExpression">GeneratorExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="32ghovyc" id="prod-mP4b69Ye">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt optional="" id="_ref_18990"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18991"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18992"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncGeneratorExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorExpression">AsyncGeneratorExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="nplor0n0" id="prod-o3PaoPru">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt optional="" id="_ref_18993"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18994"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18995"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncFunctionExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionExpression">AsyncFunctionExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1_djgdhl" id="prod-3ftZlYCP">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-nt optional="" id="_ref_18996"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_18997"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_18998"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ClassExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassExpression">ClassExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0cliiy0w" id="prod-nQpbEu0v">
|
||
<emu-t>class</emu-t>
|
||
<emu-nt optional="" id="_ref_18999"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_19000"><a href="ecmascript-language-functions-and-classes.html#prod-ClassTail">ClassTail</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>true</emu-val>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isanonymousfunctiondefinition" type="abstract operation" aoid="IsAnonymousFunctionDefinition">
|
||
<h1><span class="secnum">8.4.3</span> Static Semantics: IsAnonymousFunctionDefinition ( <var>expr</var> )</h1>
|
||
<p>The abstract operation IsAnonymousFunctionDefinition takes argument <var>expr</var> (an <emu-nt id="_ref_19001"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_3378"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>, an <emu-nt id="_ref_19002"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_3379"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>, or an <emu-nt id="_ref_19003"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_3380"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>) and returns a Boolean. It determines if its argument is a function definition that does not bind a name. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="IsFunctionDefinition" id="_ref_3381"><a href="syntax-directed-operations.html#sec-static-semantics-isfunctiondefinition">IsFunctionDefinition</a></emu-xref> of <var>expr</var> is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>Let <var>hasName</var> be <emu-xref aoid="HasName" id="_ref_3382"><a href="syntax-directed-operations.html#sec-static-semantics-hasname">HasName</a></emu-xref> of <var>expr</var>.</li><li>If <var>hasName</var> is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-isidentifierref" oldids="sec-semantics-static-semantics-isidentifierref,sec-static-semantics-static-semantics-isidentifierref" type="sdo" aoid="IsIdentifierRef"><span id="sec-static-semantics-static-semantics-isidentifierref"></span><span id="sec-semantics-static-semantics-isidentifierref"></span>
|
||
<h1><span class="secnum">8.4.4</span> Static Semantics: IsIdentifierRef</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3383"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> IsIdentifierRef takes no arguments and returns a Boolean. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="PrimaryExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PrimaryExpression">PrimaryExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i2hxnrih" id="prod-ztGhnTck"><emu-nt id="_ref_19004"><a href="ecmascript-language-expressions.html#prod-IdentifierReference">IdentifierReference</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>true</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="PrimaryExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PrimaryExpression">PrimaryExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jo4mwtvh" id="prod-Gs-T8p-O">
|
||
<emu-t>this</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="kul-a19e" id="prod-ICT5lo9j">
|
||
<emu-nt id="_ref_19005"><a href="ecmascript-language-expressions.html#prod-Literal">Literal</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="g_mjk5cm" id="prod-8G12k2a3">
|
||
<emu-nt id="_ref_19006"><a href="ecmascript-language-expressions.html#prod-ArrayLiteral">ArrayLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="zreje_zz" id="prod-EUf92hO8">
|
||
<emu-nt id="_ref_19007"><a href="ecmascript-language-expressions.html#prod-ObjectLiteral">ObjectLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jc7szv1s" id="prod-69s6BRll">
|
||
<emu-nt id="_ref_19008"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionExpression">FunctionExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="2m5tsvzv" id="prod-YIwB3WEl">
|
||
<emu-nt id="_ref_19009"><a href="ecmascript-language-functions-and-classes.html#prod-ClassExpression">ClassExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="q7f39ayg" id="prod-AALLJG0-">
|
||
<emu-nt id="_ref_19010"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorExpression">GeneratorExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="rvibtigb" id="prod-acg3mi3y">
|
||
<emu-nt id="_ref_19011"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionExpression">AsyncFunctionExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="naptrn97" id="prod-9GJ_tuZU">
|
||
<emu-nt id="_ref_19012"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorExpression">AsyncGeneratorExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="mbzy6lvr" id="prod-jU920ZeK">
|
||
<emu-nt id="_ref_19013"><a href="ecmascript-language-lexical-grammar.html#prod-RegularExpressionLiteral">RegularExpressionLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="2zis6bbu" id="prod-5DrGbLLP">
|
||
<emu-nt id="_ref_19014"><a href="ecmascript-language-expressions.html#prod-TemplateLiteral">TemplateLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="yrb110hm" id="prod-IZ2iaC5Z">
|
||
<emu-nt id="_ref_19015"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="MemberExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="a74xd7de" id="prod--KgzMgsO">
|
||
<emu-nt id="_ref_19016"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-t>[</emu-t>
|
||
<emu-nt id="_ref_19017"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="frbj984t" id="prod-CwZtsPgL">
|
||
<emu-nt id="_ref_19018"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_19019"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="fj52gjle" id="prod-MPSxl2zi">
|
||
<emu-nt id="_ref_19020"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-nt id="_ref_19021"><a href="ecmascript-language-expressions.html#prod-TemplateLiteral">TemplateLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="x4tzletw" id="prod-9f3rqn9l">
|
||
<emu-nt id="_ref_19022"><a href="ecmascript-language-expressions.html#prod-SuperProperty">SuperProperty</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="yb7id2be" id="prod-1g-ib9lg">
|
||
<emu-nt id="_ref_19023"><a href="ecmascript-language-expressions.html#prod-MetaProperty">MetaProperty</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cfq-hbbx" id="prod-zcFyOLGC">
|
||
<emu-t>new</emu-t>
|
||
<emu-nt id="_ref_19024"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-nt id="_ref_19025"><a href="ecmascript-language-expressions.html#prod-Arguments">Arguments</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="0uk9afbi" id="prod-2i2KMoZq">
|
||
<emu-nt id="_ref_19026"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_19027"><a href="ecmascript-language-lexical-grammar.html#prod-PrivateIdentifier">PrivateIdentifier</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="NewExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-NewExpression">NewExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="51p618ta" id="prod-ELtmHyea">
|
||
<emu-t>new</emu-t>
|
||
<emu-nt id="_ref_19028"><a href="ecmascript-language-expressions.html#prod-NewExpression">NewExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="LeftHandSideExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i8det4ck" id="prod-6Bkmtp_X">
|
||
<emu-nt id="_ref_19029"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jbet6xpw" id="prod-3VSXVmhU">
|
||
<emu-nt id="_ref_19030"><a href="ecmascript-language-expressions.html#prod-OptionalExpression">OptionalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-runtime-semantics-namedevaluation" oldids="sec-grouping-operator-runtime-semantics-namedevaluation,sec-function-definitions-runtime-semantics-namedevaluation,sec-arrow-function-definitions-runtime-semantics-namedevaluation,sec-generator-function-definitions-runtime-semantics-namedevaluation,sec-asyncgenerator-definitions-namedevaluation,sec-class-definitions-runtime-semantics-namedevaluation,sec-async-function-definitions-runtime-semantics-namedevaluation,sec-async-arrow-function-definitions-runtime-semantics-namedevaluation" type="sdo" aoid="NamedEvaluation"><span id="sec-async-arrow-function-definitions-runtime-semantics-namedevaluation"></span><span id="sec-async-function-definitions-runtime-semantics-namedevaluation"></span><span id="sec-class-definitions-runtime-semantics-namedevaluation"></span><span id="sec-asyncgenerator-definitions-namedevaluation"></span><span id="sec-generator-function-definitions-runtime-semantics-namedevaluation"></span><span id="sec-arrow-function-definitions-runtime-semantics-namedevaluation"></span><span id="sec-function-definitions-runtime-semantics-namedevaluation"></span><span id="sec-grouping-operator-runtime-semantics-namedevaluation"></span>
|
||
<h1><span class="secnum">8.4.5</span> Runtime Semantics: NamedEvaluation</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3384"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> NamedEvaluation takes argument <var>name</var> (a <emu-xref href="#property-key" id="_ref_3385"><a href="ecmascript-data-types-and-values.html#property-key">property key</a></emu-xref> or a <emu-xref href="#sec-private-names" id="_ref_3386"><a href="ecmascript-data-types-and-values.html#sec-private-names">Private Name</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_3387"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a <emu-xref href="#function-object" id="_ref_3388"><a href="ecmascript-data-types-and-values.html#function-object">function object</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_3389"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="PrimaryExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PrimaryExpression">PrimaryExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="yrb110hm" id="prod-mytcbPJI"><emu-nt id="_ref_19031"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>expr</var> be the <emu-nt id="_ref_19032"><a href="ecmascript-language-expressions.html#prod-ParenthesizedExpression">ParenthesizedExpression</a></emu-nt> that is <emu-xref href="#sec-syntactic-grammar" id="_ref_3390"><a href="notational-conventions.html#sec-syntactic-grammar">covered</a></emu-xref> by <emu-nt id="_ref_19033"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt>.</li><li>Return ? <emu-xref aoid="NamedEvaluation" id="_ref_3391"><a href="syntax-directed-operations.html#sec-runtime-semantics-namedevaluation" class="e-user-code">NamedEvaluation</a></emu-xref> of <var>expr</var> with argument <var>name</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ParenthesizedExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-ParenthesizedExpression">ParenthesizedExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="s6bvnd5v" id="prod-Q_6y5mca">
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19034"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_3392"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <emu-xref aoid="IsAnonymousFunctionDefinition" id="_ref_3393"><a href="syntax-directed-operations.html#sec-isanonymousfunctiondefinition">IsAnonymousFunctionDefinition</a></emu-xref>(<emu-nt id="_ref_19035"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>) is <emu-val>true</emu-val>.</li><li>Return ? <emu-xref aoid="NamedEvaluation" id="_ref_3394"><a href="syntax-directed-operations.html#sec-runtime-semantics-namedevaluation" class="e-user-code">NamedEvaluation</a></emu-xref> of <emu-nt id="_ref_19036"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> with argument <var>name</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionExpression">FunctionExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="smus6qca" id="prod-pLzR2hGq">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19037"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19038"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="InstantiateOrdinaryFunctionExpression" id="_ref_3395"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateordinaryfunctionexpression">InstantiateOrdinaryFunctionExpression</a></emu-xref> of <emu-nt id="_ref_19039"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionExpression">FunctionExpression</a></emu-nt> with argument <var>name</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="GeneratorExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorExpression">GeneratorExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dsczygsq" id="prod--NqycDNV">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19040"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19041"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="InstantiateGeneratorFunctionExpression" id="_ref_3396"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiategeneratorfunctionexpression">InstantiateGeneratorFunctionExpression</a></emu-xref> of <emu-nt id="_ref_19042"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorExpression">GeneratorExpression</a></emu-nt> with argument <var>name</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncGeneratorExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorExpression">AsyncGeneratorExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xruu4gg0" id="prod-2hHyfg58">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19043"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19044"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="InstantiateAsyncGeneratorFunctionExpression" id="_ref_3397"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateasyncgeneratorfunctionexpression">InstantiateAsyncGeneratorFunctionExpression</a></emu-xref> of <emu-nt id="_ref_19045"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorExpression">AsyncGeneratorExpression</a></emu-nt> with argument <var>name</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncFunctionExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionExpression">AsyncFunctionExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="agdmcdye" id="prod-WZTY8BeC">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19046"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19047"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="InstantiateAsyncFunctionExpression" id="_ref_3398"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateasyncfunctionexpression">InstantiateAsyncFunctionExpression</a></emu-xref> of <emu-nt id="_ref_19048"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionExpression">AsyncFunctionExpression</a></emu-nt> with argument <var>name</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrowFunction" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ArrowFunction">ArrowFunction</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ieeod2mi" id="prod-2_XE6Qur">
|
||
<emu-nt id="_ref_19049"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowParameters">ArrowParameters</a></emu-nt>
|
||
<emu-t>=></emu-t>
|
||
<emu-nt id="_ref_19050"><a href="ecmascript-language-functions-and-classes.html#prod-ConciseBody">ConciseBody</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="InstantiateArrowFunctionExpression" id="_ref_3399"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiatearrowfunctionexpression">InstantiateArrowFunctionExpression</a></emu-xref> of <emu-nt id="_ref_19051"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowFunction">ArrowFunction</a></emu-nt> with argument <var>name</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncArrowFunction">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowFunction">AsyncArrowFunction</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dqxgopsb" id="prod-acGpB7So">
|
||
<emu-t>async</emu-t>
|
||
<emu-nt id="_ref_19052"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowBindingIdentifier">AsyncArrowBindingIdentifier</a></emu-nt>
|
||
<emu-t>=></emu-t>
|
||
<emu-nt id="_ref_19053"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="auwv8gbh" id="prod-AntIZd-c">
|
||
<emu-nt id="_ref_19054"><a href="ecmascript-language-functions-and-classes.html#prod-CoverCallExpressionAndAsyncArrowHead">CoverCallExpressionAndAsyncArrowHead</a></emu-nt>
|
||
<emu-t>=></emu-t>
|
||
<emu-nt id="_ref_19055"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="InstantiateAsyncArrowFunctionExpression" id="_ref_3400"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateasyncarrowfunctionexpression">InstantiateAsyncArrowFunctionExpression</a></emu-xref> of <emu-nt id="_ref_19056"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowFunction">AsyncArrowFunction</a></emu-nt> with argument <var>name</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassExpression">ClassExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1ghyizwr" id="prod-_NxRxZOJ">
|
||
<emu-t>class</emu-t>
|
||
<emu-nt id="_ref_19057"><a href="ecmascript-language-functions-and-classes.html#prod-ClassTail">ClassTail</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>sourceText</var> be the <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3401"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">source text matched by</a></emu-xref> <emu-nt id="_ref_19058"><a href="ecmascript-language-functions-and-classes.html#prod-ClassExpression">ClassExpression</a></emu-nt>.</li><li>Return ? <emu-xref aoid="ClassDefinitionEvaluation" id="_ref_3402"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-classdefinitionevaluation" class="e-user-code">ClassDefinitionEvaluation</a></emu-xref> of <emu-nt id="_ref_19059"><a href="ecmascript-language-functions-and-classes.html#prod-ClassTail">ClassTail</a></emu-nt> with arguments <emu-val>undefined</emu-val>, <var>name</var>, and <var>sourceText</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-syntax-directed-operations-contains">
|
||
<h1><span class="secnum">8.5</span> Contains</h1>
|
||
|
||
<emu-clause id="sec-static-semantics-contains" oldids="sec-object-initializer-static-semantics-contains,sec-static-semantics-static-semantics-contains,sec-function-definitions-static-semantics-contains,sec-arrow-function-definitions-static-semantics-contains,sec-generator-function-definitions-static-semantics-contains,sec-async-generator-function-definitions-static-semantics-contains,sec-class-definitions-static-semantics-contains,sec-async-function-definitions-static-semantics-Contains,sec-async-arrow-function-definitions-static-semantics-Contains" type="sdo" aoid="Contains"><span id="sec-async-arrow-function-definitions-static-semantics-Contains"></span><span id="sec-async-function-definitions-static-semantics-Contains"></span><span id="sec-class-definitions-static-semantics-contains"></span><span id="sec-async-generator-function-definitions-static-semantics-contains"></span><span id="sec-generator-function-definitions-static-semantics-contains"></span><span id="sec-arrow-function-definitions-static-semantics-contains"></span><span id="sec-function-definitions-static-semantics-contains"></span><span id="sec-static-semantics-static-semantics-contains"></span><span id="sec-object-initializer-static-semantics-contains"></span>
|
||
<h1><span class="secnum">8.5.1</span> Static Semantics: Contains</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3403"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> Contains takes argument <var>symbol</var> (a grammar symbol) and returns a Boolean.</p>
|
||
<p>Every grammar production alternative in this specification which is not listed below implicitly has the following default definition of Contains:</p>
|
||
<emu-alg><ol><li>For each child node <var>child</var> of this <emu-xref href="#sec-syntactic-grammar" id="_ref_3404"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>, do<ol><li>If <var>child</var> is an instance of <var>symbol</var>, return <emu-val>true</emu-val>.</li><li>If <var>child</var> is an instance of a nonterminal, then<ol><li>Let <var>contained</var> be the result of <var>child</var> <emu-xref aoid="Contains" id="_ref_3405"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var>.</li><li>If <var>contained</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li></ol></li></ol></li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FunctionDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gxoavzvy" id="prod-JYruL-G6">
|
||
<emu-t>function</emu-t>
|
||
<emu-nt id="_ref_19060"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19061"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19062"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="smus6qca" id="prod-RYB8pT4v">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19063"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19064"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="FunctionExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionExpression">FunctionExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="g3mtfiqq" id="prod-Jc3hxjyv">
|
||
<emu-t>function</emu-t>
|
||
<emu-nt optional="" id="_ref_19065"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19066"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19067"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="GeneratorDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fbyztjbh" id="prod-YglW_lFm">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_19068"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19069"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19070"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="dsczygsq" id="prod-hMB2st0D">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19071"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19072"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="GeneratorExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorExpression">GeneratorExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="32ghovyc" id="prod-5B9biisJ">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt optional="" id="_ref_19073"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19074"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19075"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncGeneratorDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="e9lmm5cj" id="prod-ow6TXQ_a">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_19076"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19077"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19078"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="xruu4gg0" id="prod-lLs4pRL8">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19079"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19080"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncGeneratorExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorExpression">AsyncGeneratorExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="nplor0n0" id="prod-_doZ_xN0">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt optional="" id="_ref_19081"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19082"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19083"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncFunctionDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4mmt35rm" id="prod-vPfDfZVz">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-nt id="_ref_19084"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19085"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19086"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="agdmcdye" id="prod-PDvYlV0q">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19087"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19088"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AsyncFunctionExpression">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionExpression">AsyncFunctionExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="1_djgdhl" id="prod-0p21L8en">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-nt optional="" id="_ref_19089"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19090"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19091"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>Static semantic rules that depend upon substructure generally do not look into function definitions.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="ClassTail" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassTail">ClassTail</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0uhgf3fw" id="prod-cKFrJVUo">
|
||
<emu-nt optional="" id="_ref_19092"><a href="ecmascript-language-functions-and-classes.html#prod-ClassHeritage">ClassHeritage</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19093"><a href="ecmascript-language-functions-and-classes.html#prod-ClassBody">ClassBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <var>symbol</var> is <emu-nt id="_ref_19094"><a href="ecmascript-language-functions-and-classes.html#prod-ClassBody">ClassBody</a></emu-nt>, return <emu-val>true</emu-val>.</li><li>If <var>symbol</var> is <emu-nt id="_ref_19095"><a href="ecmascript-language-functions-and-classes.html#prod-ClassHeritage">ClassHeritage</a></emu-nt>, then<ol><li>If <emu-nt id="_ref_19096"><a href="ecmascript-language-functions-and-classes.html#prod-ClassHeritage">ClassHeritage</a></emu-nt> is present, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.</li></ol></li><li>If <emu-nt id="_ref_19097"><a href="ecmascript-language-functions-and-classes.html#prod-ClassHeritage">ClassHeritage</a></emu-nt> is present, then<ol><li>If <emu-nt id="_ref_19098"><a href="ecmascript-language-functions-and-classes.html#prod-ClassHeritage">ClassHeritage</a></emu-nt> <emu-xref aoid="Contains" id="_ref_3406"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li></ol></li><li>Return the result of <emu-xref aoid="ComputedPropertyContains" id="_ref_3407"><a href="syntax-directed-operations.html#sec-static-semantics-computedpropertycontains">ComputedPropertyContains</a></emu-xref> of <emu-nt id="_ref_19099"><a href="ecmascript-language-functions-and-classes.html#prod-ClassBody">ClassBody</a></emu-nt> with argument <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>Static semantic rules that depend upon substructure generally do not look into class bodies except for <emu-nt id="_ref_19100"><a href="ecmascript-language-expressions.html#prod-PropertyName">PropertyName</a></emu-nt>s.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="ClassStaticBlock" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlock">ClassStaticBlock</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="hv6hopt7" id="prod-rrvBSOLD">
|
||
<emu-t>static</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19101"><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlockBody">ClassStaticBlockBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>Static semantic rules that depend upon substructure generally do not look into <code>static</code> initialization blocks.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="ArrowFunction" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ArrowFunction">ArrowFunction</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ieeod2mi" id="prod-o1L20JNH">
|
||
<emu-nt id="_ref_19102"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowParameters">ArrowParameters</a></emu-nt>
|
||
<emu-t>=></emu-t>
|
||
<emu-nt id="_ref_19103"><a href="ecmascript-language-functions-and-classes.html#prod-ConciseBody">ConciseBody</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <var>symbol</var> is not one of <emu-nt id="_ref_19104"><a href="ecmascript-language-expressions.html#prod-NewTarget">NewTarget</a></emu-nt>, <emu-nt id="_ref_19105"><a href="ecmascript-language-expressions.html#prod-SuperProperty">SuperProperty</a></emu-nt>, <emu-nt id="_ref_19106"><a href="ecmascript-language-expressions.html#prod-SuperCall">SuperCall</a></emu-nt>, <code>super</code>, or <code>this</code>, return <emu-val>false</emu-val>.</li><li>If <emu-nt id="_ref_19107"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowParameters">ArrowParameters</a></emu-nt> <emu-xref aoid="Contains" id="_ref_3408"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-nt id="_ref_19108"><a href="ecmascript-language-functions-and-classes.html#prod-ConciseBody">ConciseBody</a></emu-nt> <emu-xref aoid="Contains" id="_ref_3409"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrowParameters" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ArrowParameters">ArrowParameters</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="yrb110hm" id="prod-CNqH7XEc"><emu-nt id="_ref_19109"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>formals</var> be the <emu-nt id="_ref_19110"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowFormalParameters">ArrowFormalParameters</a></emu-nt> that is <emu-xref href="#sec-syntactic-grammar" id="_ref_3410"><a href="notational-conventions.html#sec-syntactic-grammar">covered</a></emu-xref> by <emu-nt id="_ref_19111"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt>.</li><li>Return <var>formals</var> <emu-xref aoid="Contains" id="_ref_3411"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncArrowFunction" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowFunction">AsyncArrowFunction</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dqxgopsb" id="prod-hmHHRRG6">
|
||
<emu-t>async</emu-t>
|
||
<emu-nt id="_ref_19112"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowBindingIdentifier">AsyncArrowBindingIdentifier</a></emu-nt>
|
||
<emu-t>=></emu-t>
|
||
<emu-nt id="_ref_19113"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <var>symbol</var> is not one of <emu-nt id="_ref_19114"><a href="ecmascript-language-expressions.html#prod-NewTarget">NewTarget</a></emu-nt>, <emu-nt id="_ref_19115"><a href="ecmascript-language-expressions.html#prod-SuperProperty">SuperProperty</a></emu-nt>, <emu-nt id="_ref_19116"><a href="ecmascript-language-expressions.html#prod-SuperCall">SuperCall</a></emu-nt>, <code>super</code>, or <code>this</code>, return <emu-val>false</emu-val>.</li><li>Return <emu-nt id="_ref_19117"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt> <emu-xref aoid="Contains" id="_ref_3412"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncArrowFunction" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowFunction">AsyncArrowFunction</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="auwv8gbh" id="prod-0dGKszgN">
|
||
<emu-nt id="_ref_19118"><a href="ecmascript-language-functions-and-classes.html#prod-CoverCallExpressionAndAsyncArrowHead">CoverCallExpressionAndAsyncArrowHead</a></emu-nt>
|
||
<emu-t>=></emu-t>
|
||
<emu-nt id="_ref_19119"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <var>symbol</var> is not one of <emu-nt id="_ref_19120"><a href="ecmascript-language-expressions.html#prod-NewTarget">NewTarget</a></emu-nt>, <emu-nt id="_ref_19121"><a href="ecmascript-language-expressions.html#prod-SuperProperty">SuperProperty</a></emu-nt>, <emu-nt id="_ref_19122"><a href="ecmascript-language-expressions.html#prod-SuperCall">SuperCall</a></emu-nt>, <code>super</code>, or <code>this</code>, return <emu-val>false</emu-val>.</li><li>Let <var>head</var> be the <emu-nt id="_ref_19123"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowHead">AsyncArrowHead</a></emu-nt> that is <emu-xref href="#sec-syntactic-grammar" id="_ref_3413"><a href="notational-conventions.html#sec-syntactic-grammar">covered</a></emu-xref> by <emu-nt id="_ref_19124"><a href="ecmascript-language-functions-and-classes.html#prod-CoverCallExpressionAndAsyncArrowHead">CoverCallExpressionAndAsyncArrowHead</a></emu-nt>.</li><li>If <var>head</var> <emu-xref aoid="Contains" id="_ref_3414"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-nt id="_ref_19125"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncConciseBody">AsyncConciseBody</a></emu-nt> <emu-xref aoid="Contains" id="_ref_3415"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 4</span><div class="note-contents">
|
||
<p>Contains is used to detect <code>new.target</code>, <code>this</code>, and <code>super</code> usage within an <emu-nt id="_ref_19126"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowFunction">ArrowFunction</a></emu-nt> or <emu-nt id="_ref_19127"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowFunction">AsyncArrowFunction</a></emu-nt>.</p>
|
||
</div></emu-note>
|
||
<emu-grammar><emu-production name="PropertyDefinition" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PropertyDefinition">PropertyDefinition</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="s8ilfl9g" id="prod-bGWft0ts"><emu-nt id="_ref_19128"><a href="ecmascript-language-functions-and-classes.html#prod-MethodDefinition">MethodDefinition</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <var>symbol</var> is <emu-nt id="_ref_19129"><a href="ecmascript-language-functions-and-classes.html#prod-MethodDefinition">MethodDefinition</a></emu-nt>, return <emu-val>true</emu-val>.</li><li>Return the result of <emu-xref aoid="ComputedPropertyContains" id="_ref_3416"><a href="syntax-directed-operations.html#sec-static-semantics-computedpropertycontains">ComputedPropertyContains</a></emu-xref> of <emu-nt id="_ref_19130"><a href="ecmascript-language-functions-and-classes.html#prod-MethodDefinition">MethodDefinition</a></emu-nt> with argument <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LiteralPropertyName" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LiteralPropertyName">LiteralPropertyName</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="drsx4tka" id="prod-wul2dpOd"><emu-nt id="_ref_19131"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="MemberExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="frbj984t" id="prod-mlsPerHg">
|
||
<emu-nt id="_ref_19132"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_19133"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_19134"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-xref aoid="Contains" id="_ref_3417"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="SuperProperty" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-SuperProperty">SuperProperty</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="9pdsslwb" id="prod-GysYUEUH">
|
||
<emu-t>super</emu-t>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_19135"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <var>symbol</var> is the <emu-nt id="_ref_19136"><a href="ecmascript-language-lexical-grammar.html#prod-ReservedWord">ReservedWord</a></emu-nt> <code>super</code>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CallExpression" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="u6lsbvgu" id="prod-uIhOYzuO">
|
||
<emu-nt id="_ref_19137"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_19138"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_19139"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt> <emu-xref aoid="Contains" id="_ref_3418"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="OptionalChain" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-OptionalChain">OptionalChain</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="w-4ch2am" id="prod-Aeadd-iM">
|
||
<emu-t>?.</emu-t>
|
||
<emu-nt id="_ref_19140"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="OptionalChain" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-OptionalChain">OptionalChain</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="lf2imwfr" id="prod-o08cCHMJ">
|
||
<emu-nt id="_ref_19141"><a href="ecmascript-language-expressions.html#prod-OptionalChain">OptionalChain</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_19142"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_19143"><a href="ecmascript-language-expressions.html#prod-OptionalChain">OptionalChain</a></emu-nt> <emu-xref aoid="Contains" id="_ref_3419"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-computedpropertycontains" oldids="sec-object-initializer-static-semantics-computedpropertycontains,sec-method-definitions-static-semantics-computedpropertycontains,sec-generator-function-definitions-static-semantics-computedpropertycontains,sec-async-generator-function-definitions-static-semantics-computedpropertycontains,sec-class-definitions-static-semantics-computedpropertycontains,sec-async-function-definitions-static-semantics-ComputedPropertyContains" type="sdo" aoid="ComputedPropertyContains"><span id="sec-async-function-definitions-static-semantics-ComputedPropertyContains"></span><span id="sec-class-definitions-static-semantics-computedpropertycontains"></span><span id="sec-async-generator-function-definitions-static-semantics-computedpropertycontains"></span><span id="sec-generator-function-definitions-static-semantics-computedpropertycontains"></span><span id="sec-method-definitions-static-semantics-computedpropertycontains"></span><span id="sec-object-initializer-static-semantics-computedpropertycontains"></span>
|
||
<h1><span class="secnum">8.5.2</span> Static Semantics: ComputedPropertyContains</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3420"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> ComputedPropertyContains takes argument <var>symbol</var> (a grammar symbol) and returns a Boolean. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="ClassElementName" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ie2-zc1c" id="prod-A8PF_J4D"><emu-nt id="_ref_19144"><a href="ecmascript-language-lexical-grammar.html#prod-PrivateIdentifier">PrivateIdentifier</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="PropertyName" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PropertyName">PropertyName</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="5x4jbee2" id="prod-KBlapLw6"><emu-nt id="_ref_19145"><a href="ecmascript-language-expressions.html#prod-LiteralPropertyName">LiteralPropertyName</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="PropertyName" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PropertyName">PropertyName</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="nimmmso5" id="prod-pgiwn-A8"><emu-nt id="_ref_19146"><a href="ecmascript-language-expressions.html#prod-ComputedPropertyName">ComputedPropertyName</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the result of <emu-nt id="_ref_19147"><a href="ecmascript-language-expressions.html#prod-ComputedPropertyName">ComputedPropertyName</a></emu-nt> <emu-xref aoid="Contains" id="_ref_3421"><a href="syntax-directed-operations.html#sec-static-semantics-contains">Contains</a></emu-xref> <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="MethodDefinition">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-MethodDefinition">MethodDefinition</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="f2ayx1_q" id="prod-ZS17eYsY">
|
||
<emu-nt id="_ref_19148"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19149"><a href="ecmascript-language-functions-and-classes.html#prod-UniqueFormalParameters">UniqueFormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19150"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="s7vk7pda" id="prod-vyebD6Jr">
|
||
<emu-t>get</emu-t>
|
||
<emu-nt id="_ref_19151"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19152"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="lbu40xzc" id="prod-49ueHbo6">
|
||
<emu-t>set</emu-t>
|
||
<emu-nt id="_ref_19153"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19154"><a href="ecmascript-language-functions-and-classes.html#prod-PropertySetParameterList">PropertySetParameterList</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19155"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the result of <emu-xref aoid="ComputedPropertyContains" id="_ref_3422"><a href="syntax-directed-operations.html#sec-static-semantics-computedpropertycontains">ComputedPropertyContains</a></emu-xref> of <emu-nt id="_ref_19156"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt> with argument <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="GeneratorMethod" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorMethod">GeneratorMethod</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="e6yupcp1" id="prod-clQ5cW-v">
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_19157"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19158"><a href="ecmascript-language-functions-and-classes.html#prod-UniqueFormalParameters">UniqueFormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19159"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the result of <emu-xref aoid="ComputedPropertyContains" id="_ref_3423"><a href="syntax-directed-operations.html#sec-static-semantics-computedpropertycontains">ComputedPropertyContains</a></emu-xref> of <emu-nt id="_ref_19160"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt> with argument <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncGeneratorMethod" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorMethod">AsyncGeneratorMethod</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="2edb8sar" id="prod-7J1puDuJ">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_19161"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19162"><a href="ecmascript-language-functions-and-classes.html#prod-UniqueFormalParameters">UniqueFormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19163"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the result of <emu-xref aoid="ComputedPropertyContains" id="_ref_3424"><a href="syntax-directed-operations.html#sec-static-semantics-computedpropertycontains">ComputedPropertyContains</a></emu-xref> of <emu-nt id="_ref_19164"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt> with argument <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassElementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementList">ClassElementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="msulavvt" id="prod-w3-p5Y-S">
|
||
<emu-nt id="_ref_19165"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementList">ClassElementList</a></emu-nt>
|
||
<emu-nt id="_ref_19166"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElement">ClassElement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>inList</var> be <emu-xref aoid="ComputedPropertyContains" id="_ref_3425"><a href="syntax-directed-operations.html#sec-static-semantics-computedpropertycontains">ComputedPropertyContains</a></emu-xref> of <emu-nt id="_ref_19167"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementList">ClassElementList</a></emu-nt> with argument <var>symbol</var>.</li><li>If <var>inList</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return the result of <emu-xref aoid="ComputedPropertyContains" id="_ref_3426"><a href="syntax-directed-operations.html#sec-static-semantics-computedpropertycontains">ComputedPropertyContains</a></emu-xref> of <emu-nt id="_ref_19168"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElement">ClassElement</a></emu-nt> with argument <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassElement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassElement">ClassElement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="2ui-f2qn" id="prod-a6HgYRcV"><emu-nt id="_ref_19169"><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlock">ClassStaticBlock</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassElement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassElement">ClassElement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="sg2sawim" id="prod-uyqDiD0W"><emu-t>;</emu-t></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncMethod" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncMethod">AsyncMethod</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cfy3_9l8" id="prod-yQr72pM_">
|
||
<emu-t>async</emu-t>
|
||
<emu-nt id="_ref_19170"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19171"><a href="ecmascript-language-functions-and-classes.html#prod-UniqueFormalParameters">UniqueFormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19172"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the result of <emu-xref aoid="ComputedPropertyContains" id="_ref_3427"><a href="syntax-directed-operations.html#sec-static-semantics-computedpropertycontains">ComputedPropertyContains</a></emu-xref> of <emu-nt id="_ref_19173"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt> with argument <var>symbol</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FieldDefinition" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FieldDefinition">FieldDefinition</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="rqzzdcte" id="prod-s8Rlgqlc">
|
||
<emu-nt id="_ref_19174"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_19175"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the result of <emu-xref aoid="ComputedPropertyContains" id="_ref_3428"><a href="syntax-directed-operations.html#sec-static-semantics-computedpropertycontains">ComputedPropertyContains</a></emu-xref> of <emu-nt id="_ref_19176"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt> with argument <var>symbol</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-syntax-directed-operations-miscellaneous">
|
||
<h1><span class="secnum">8.6</span> Miscellaneous</h1>
|
||
<p>These operations are used in multiple places throughout the specification.</p>
|
||
|
||
<emu-clause id="sec-runtime-semantics-instantiatefunctionobject" type="sdo" aoid="InstantiateFunctionObject">
|
||
<h1><span class="secnum">8.6.1</span> Runtime Semantics: InstantiateFunctionObject</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3429"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> InstantiateFunctionObject takes arguments <var>env</var> (an <emu-xref href="#sec-environment-records" id="_ref_3430"><a href="executable-code-and-execution-contexts.html#sec-environment-records">Environment Record</a></emu-xref>) and <var>privateEnv</var> (a <emu-xref href="#privateenvironment-record" id="_ref_3431"><a href="executable-code-and-execution-contexts.html#privateenvironment-record">PrivateEnvironment Record</a></emu-xref> or <emu-val>null</emu-val>) and returns an ECMAScript <emu-xref href="#function-object" id="_ref_3432"><a href="ecmascript-data-types-and-values.html#function-object">function object</a></emu-xref>. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="FunctionDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gxoavzvy" id="prod-mfAdULQi">
|
||
<emu-t>function</emu-t>
|
||
<emu-nt id="_ref_19177"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19178"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19179"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="smus6qca" id="prod-f7nt2HkW">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19180"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19181"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="InstantiateOrdinaryFunctionObject" id="_ref_3433"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateordinaryfunctionobject">InstantiateOrdinaryFunctionObject</a></emu-xref> of <emu-nt id="_ref_19182"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt> with arguments <var>env</var> and <var>privateEnv</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="GeneratorDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fbyztjbh" id="prod-BE72OMfT">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_19183"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19184"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19185"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="dsczygsq" id="prod-9FriOUuY">
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19186"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19187"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="InstantiateGeneratorFunctionObject" id="_ref_3434"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiategeneratorfunctionobject">InstantiateGeneratorFunctionObject</a></emu-xref> of <emu-nt id="_ref_19188"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt> with arguments <var>env</var> and <var>privateEnv</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncGeneratorDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="e9lmm5cj" id="prod-MBXIRXX3">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_19189"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19190"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19191"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="xruu4gg0" id="prod-0BnnuWOV">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19192"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19193"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="InstantiateAsyncGeneratorFunctionObject" id="_ref_3435"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateasyncgeneratorfunctionobject">InstantiateAsyncGeneratorFunctionObject</a></emu-xref> of <emu-nt id="_ref_19194"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt> with arguments <var>env</var> and <var>privateEnv</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncFunctionDeclaration">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4mmt35rm" id="prod-cpVe0Sep">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-nt id="_ref_19195"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19196"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19197"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="agdmcdye" id="prod-g0-rNkU8">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>function</emu-t>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19198"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19199"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="InstantiateAsyncFunctionObject" id="_ref_3436"><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateasyncfunctionobject">InstantiateAsyncFunctionObject</a></emu-xref> of <emu-nt id="_ref_19200"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt> with arguments <var>env</var> and <var>privateEnv</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-runtime-semantics-bindinginitialization" oldids="sec-identifiers-runtime-semantics-bindinginitialization,sec-destructuring-binding-patterns-runtime-semantics-bindinginitialization" type="sdo" aoid="BindingInitialization"><span id="sec-destructuring-binding-patterns-runtime-semantics-bindinginitialization"></span><span id="sec-identifiers-runtime-semantics-bindinginitialization"></span>
|
||
<h1><span class="secnum">8.6.2</span> Runtime Semantics: BindingInitialization</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3437"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> BindingInitialization takes arguments <var>value</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_3438"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>) and <var>environment</var> (an <emu-xref href="#sec-environment-records" id="_ref_3439"><a href="executable-code-and-execution-contexts.html#sec-environment-records">Environment Record</a></emu-xref> or <emu-val>undefined</emu-val>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_3440"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> <emu-const>unused</emu-const> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_3441"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p><emu-val>undefined</emu-val> is passed for <var>environment</var> to indicate that a <emu-xref aoid="PutValue" id="_ref_3442"><a href="ecmascript-data-types-and-values.html#sec-putvalue">PutValue</a></emu-xref> operation should be used to assign the initialization value. This is the case for <code>var</code> statements and formal parameter lists of some <emu-xref href="#non-strict-function" id="_ref_3443"><a href="ordinary-and-exotic-objects-behaviours.html#non-strict-function">non-strict functions</a></emu-xref> (See <emu-xref href="#sec-functiondeclarationinstantiation" id="_ref_232"><a href="ordinary-and-exotic-objects-behaviours.html#sec-functiondeclarationinstantiation">10.2.11</a></emu-xref>). In those cases a lexical binding is hoisted and preinitialized prior to evaluation of its initializer.</p>
|
||
</div></emu-note>
|
||
<p>It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="BindingIdentifier" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="bras6mo_" id="prod-AUuPIcte"><emu-nt id="_ref_19201"><a href="ecmascript-language-expressions.html#prod-Identifier">Identifier</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>name</var> be the <emu-xref aoid="StringValue" id="_ref_3444"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_19202"><a href="ecmascript-language-expressions.html#prod-Identifier">Identifier</a></emu-nt>.</li><li>Return ? <emu-xref aoid="InitializeBoundName" id="_ref_3445"><a href="syntax-directed-operations.html#sec-initializeboundname" class="e-user-code">InitializeBoundName</a></emu-xref>(<var>name</var>, <var>value</var>, <var>environment</var>).</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingIdentifier" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0d8zyjn8" id="prod-mvAZKdLR"><emu-t>yield</emu-t></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return ? <emu-xref aoid="InitializeBoundName" id="_ref_3446"><a href="syntax-directed-operations.html#sec-initializeboundname" class="e-user-code">InitializeBoundName</a></emu-xref>(<emu-val>"yield"</emu-val>, <var>value</var>, <var>environment</var>).</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingIdentifier" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="hx1dvlrw" id="prod-SuKbQr-p"><emu-t>await</emu-t></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return ? <emu-xref aoid="InitializeBoundName" id="_ref_3447"><a href="syntax-directed-operations.html#sec-initializeboundname" class="e-user-code">InitializeBoundName</a></emu-xref>(<emu-val>"await"</emu-val>, <var>value</var>, <var>environment</var>).</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="mh3oqyo8" id="prod-D4AQahDE"><emu-nt id="_ref_19203"><a href="ecmascript-language-statements-and-declarations.html#prod-ObjectBindingPattern">ObjectBindingPattern</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Perform ? <emu-xref aoid="RequireObjectCoercible" id="_ref_3448"><a href="abstract-operations.html#sec-requireobjectcoercible">RequireObjectCoercible</a></emu-xref>(<var>value</var>).</li><li>Return ? <emu-xref aoid="BindingInitialization" id="_ref_3449"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <emu-nt id="_ref_19204"><a href="ecmascript-language-statements-and-declarations.html#prod-ObjectBindingPattern">ObjectBindingPattern</a></emu-nt> with arguments <var>value</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xjjvo5sr" id="prod-5QoB3lmK"><emu-nt id="_ref_19205"><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>iteratorRecord</var> be ? <emu-xref aoid="GetIterator" id="_ref_3450"><a href="abstract-operations.html#sec-getiterator" class="e-user-code">GetIterator</a></emu-xref>(<var>value</var>, <emu-const>sync</emu-const>).</li><li>Let <var>result</var> be <emu-xref aoid="Completion" id="_ref_3451"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="IteratorBindingInitialization" id="_ref_3452"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19206"><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>).</li><li>If <var>iteratorRecord</var>.<var class="field">[[Done]]</var> is <emu-val>false</emu-val>, return ? <emu-xref aoid="IteratorClose" id="_ref_3453"><a href="abstract-operations.html#sec-iteratorclose" class="e-user-code">IteratorClose</a></emu-xref>(<var>iteratorRecord</var>, <var>result</var>).</li><li>Return ? <var>result</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ObjectBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ObjectBindingPattern">ObjectBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-lV7YKS21">
|
||
<emu-t>{</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ObjectBindingPattern">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ObjectBindingPattern">ObjectBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gk43jrsm" id="prod-LZltxEP-">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19207"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="d1upprvx" id="prod--Bap0q1J">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19208"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Perform ? <emu-xref aoid="PropertyBindingInitialization" id="_ref_3454"><a href="ecmascript-language-statements-and-declarations.html#sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization" class="e-user-code">PropertyBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19209"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt> with arguments <var>value</var> and <var>environment</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ObjectBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ObjectBindingPattern">ObjectBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="etffxusy" id="prod-PoaYdJZS">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19210"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestProperty">BindingRestProperty</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>excludedNames</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_3455"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return ? <emu-xref aoid="RestBindingInitialization" id="_ref_3456"><a href="ecmascript-language-statements-and-declarations.html#sec-destructuring-binding-patterns-runtime-semantics-restbindinginitialization" class="e-user-code">RestBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19211"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestProperty">BindingRestProperty</a></emu-nt> with arguments <var>value</var>, <var>environment</var>, and <var>excludedNames</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ObjectBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ObjectBindingPattern">ObjectBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ullzxsua" id="prod-qC471RM1">
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19212"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_19213"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestProperty">BindingRestProperty</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>excludedNames</var> be ? <emu-xref aoid="PropertyBindingInitialization" id="_ref_3457"><a href="ecmascript-language-statements-and-declarations.html#sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization" class="e-user-code">PropertyBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19214"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt> with arguments <var>value</var> and <var>environment</var>.</li><li>Return ? <emu-xref aoid="RestBindingInitialization" id="_ref_3458"><a href="ecmascript-language-statements-and-declarations.html#sec-destructuring-binding-patterns-runtime-semantics-restbindinginitialization" class="e-user-code">RestBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19215"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestProperty">BindingRestProperty</a></emu-nt> with arguments <var>value</var>, <var>environment</var>, and <var>excludedNames</var>.</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-initializeboundname" type="abstract operation" aoid="InitializeBoundName">
|
||
<h1><span class="secnum">8.6.2.1</span> InitializeBoundName ( <var>name</var>, <var>value</var>, <var>environment</var> )</h1>
|
||
<p>The abstract operation InitializeBoundName takes arguments <var>name</var> (a String), <var>value</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_3459"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>), and <var>environment</var> (an <emu-xref href="#sec-environment-records" id="_ref_3460"><a href="executable-code-and-execution-contexts.html#sec-environment-records">Environment Record</a></emu-xref> or <emu-val>undefined</emu-val>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_3461"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> <emu-const>unused</emu-const> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_3462"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>If <var>environment</var> is not <emu-val>undefined</emu-val>, then<ol><li>Perform ! <var>environment</var>.<emu-xref aoid="InitializeBinding" id="_ref_3463"><a href="executable-code-and-execution-contexts.html#abstract-initializebinding">InitializeBinding</a></emu-xref>(<var>name</var>, <var>value</var>).</li><li>Return <emu-const>unused</emu-const>.</li></ol></li><li>Let <var>lhs</var> be ? <emu-xref aoid="ResolveBinding" id="_ref_3464"><a href="executable-code-and-execution-contexts.html#sec-resolvebinding" class="e-user-code">ResolveBinding</a></emu-xref>(<var>name</var>).</li><li>Return ? <emu-xref aoid="PutValue" id="_ref_3465"><a href="ecmascript-data-types-and-values.html#sec-putvalue" class="e-user-code">PutValue</a></emu-xref>(<var>lhs</var>, <var>value</var>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-runtime-semantics-iteratorbindinginitialization" oldids="sec-destructuring-binding-patterns-runtime-semantics-iteratorbindinginitialization,sec-function-definitions-runtime-semantics-iteratorbindinginitialization,sec-arrow-function-definitions-runtime-semantics-iteratorbindinginitialization,sec-async-arrow-function-definitions-IteratorBindingInitialization" type="sdo" aoid="IteratorBindingInitialization"><span id="sec-async-arrow-function-definitions-IteratorBindingInitialization"></span><span id="sec-arrow-function-definitions-runtime-semantics-iteratorbindinginitialization"></span><span id="sec-function-definitions-runtime-semantics-iteratorbindinginitialization"></span><span id="sec-destructuring-binding-patterns-runtime-semantics-iteratorbindinginitialization"></span>
|
||
<h1><span class="secnum">8.6.3</span> Runtime Semantics: IteratorBindingInitialization</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3466"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> IteratorBindingInitialization takes arguments <var>iteratorRecord</var> (an <emu-xref href="#sec-iterator-records" id="_ref_3467"><a href="abstract-operations.html#sec-iterator-records">Iterator Record</a></emu-xref>) and <var>environment</var> (an <emu-xref href="#sec-environment-records" id="_ref_3468"><a href="executable-code-and-execution-contexts.html#sec-environment-records">Environment Record</a></emu-xref> or <emu-val>undefined</emu-val>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_3469"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> <emu-const>unused</emu-const> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_3470"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>When <emu-val>undefined</emu-val> is passed for <var>environment</var> it indicates that a <emu-xref aoid="PutValue" id="_ref_3471"><a href="ecmascript-data-types-and-values.html#sec-putvalue">PutValue</a></emu-xref> operation should be used to assign the initialization value. This is the case for formal parameter lists of <emu-xref href="#non-strict-function" id="_ref_3472"><a href="ordinary-and-exotic-objects-behaviours.html#non-strict-function">non-strict functions</a></emu-xref>. In that case the formal parameter bindings are preinitialized in order to deal with the possibility of multiple parameters with the same name.</p>
|
||
</div></emu-note>
|
||
<p>It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="ArrayBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="mdhsnk3i" id="prod-tsjeAqRc">
|
||
<emu-t>[</emu-t>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrayBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="mf_msvtp" id="prod--IC6X92I">
|
||
<emu-t>[</emu-t>
|
||
<emu-nt id="_ref_19216"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return ? <emu-xref aoid="IteratorDestructuringAssignmentEvaluation" id="_ref_3473"><a href="ecmascript-language-expressions.html#sec-runtime-semantics-iteratordestructuringassignmentevaluation" class="e-user-code">IteratorDestructuringAssignmentEvaluation</a></emu-xref> of <emu-nt id="_ref_19217"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a></emu-nt> with argument <var>iteratorRecord</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrayBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dev8fspa" id="prod-NrdrIJZT">
|
||
<emu-t>[</emu-t>
|
||
<emu-nt optional="" id="_ref_19218"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_19219"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-nt id="_ref_19220"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a></emu-nt> is present, then<ol><li>Perform ? <emu-xref aoid="IteratorDestructuringAssignmentEvaluation" id="_ref_3474"><a href="ecmascript-language-expressions.html#sec-runtime-semantics-iteratordestructuringassignmentevaluation" class="e-user-code">IteratorDestructuringAssignmentEvaluation</a></emu-xref> of <emu-nt id="_ref_19221"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a></emu-nt> with argument <var>iteratorRecord</var>.</li></ol></li><li>Return ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3475"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19222"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrayBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="lby6fogn" id="prod-KgRoomIq">
|
||
<emu-t>[</emu-t>
|
||
<emu-nt id="_ref_19223"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_19224"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Perform ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3476"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19225"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li><li>Return ? <emu-xref aoid="IteratorDestructuringAssignmentEvaluation" id="_ref_3477"><a href="ecmascript-language-expressions.html#sec-runtime-semantics-iteratordestructuringassignmentevaluation" class="e-user-code">IteratorDestructuringAssignmentEvaluation</a></emu-xref> of <emu-nt id="_ref_19226"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a></emu-nt> with argument <var>iteratorRecord</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrayBindingPattern" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="7lkdseap" id="prod-jvZ0PZvK">
|
||
<emu-t>[</emu-t>
|
||
<emu-nt id="_ref_19227"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt optional="" id="_ref_19228"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
<emu-nt id="_ref_19229"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Perform ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3478"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19230"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li><li>If <emu-nt id="_ref_19231"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a></emu-nt> is present, then<ol><li>Perform ? <emu-xref aoid="IteratorDestructuringAssignmentEvaluation" id="_ref_3479"><a href="ecmascript-language-expressions.html#sec-runtime-semantics-iteratordestructuringassignmentevaluation" class="e-user-code">IteratorDestructuringAssignmentEvaluation</a></emu-xref> of <emu-nt id="_ref_19232"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a></emu-nt> with argument <var>iteratorRecord</var>.</li></ol></li><li>Return ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3480"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19233"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingElementList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="hiwampap" id="prod-JkWX9ITf">
|
||
<emu-nt id="_ref_19234"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_19235"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElisionElement">BindingElisionElement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Perform ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3481"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19236"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li><li>Return ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3482"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19237"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElisionElement">BindingElisionElement</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingElisionElement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElisionElement">BindingElisionElement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="sh--_n4f" id="prod-mMA3BDq4">
|
||
<emu-nt id="_ref_19238"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a></emu-nt>
|
||
<emu-nt id="_ref_19239"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Perform ? <emu-xref aoid="IteratorDestructuringAssignmentEvaluation" id="_ref_3483"><a href="ecmascript-language-expressions.html#sec-runtime-semantics-iteratordestructuringassignmentevaluation" class="e-user-code">IteratorDestructuringAssignmentEvaluation</a></emu-xref> of <emu-nt id="_ref_19240"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a></emu-nt> with argument <var>iteratorRecord</var>.</li><li>Return ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3484"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19241"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="SingleNameBinding" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-SingleNameBinding">SingleNameBinding</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="c5neqctp" id="prod-SVSt7_f4">
|
||
<emu-nt id="_ref_19242"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_19243"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>bindingId</var> be the <emu-xref aoid="StringValue" id="_ref_3485"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_19244"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>.</li><li>Let <var>lhs</var> be ? <emu-xref aoid="ResolveBinding" id="_ref_3486"><a href="executable-code-and-execution-contexts.html#sec-resolvebinding" class="e-user-code">ResolveBinding</a></emu-xref>(<var>bindingId</var>, <var>environment</var>).</li><li>Let <var>v</var> be <emu-val>undefined</emu-val>.</li><li>If <var>iteratorRecord</var>.<var class="field">[[Done]]</var> is <emu-val>false</emu-val>, then<ol><li>Let <var>next</var> be ? <emu-xref aoid="IteratorStepValue" id="_ref_3487"><a href="abstract-operations.html#sec-iteratorstepvalue" class="e-user-code">IteratorStepValue</a></emu-xref>(<var>iteratorRecord</var>).</li><li>If <var>next</var> is not <emu-const>done</emu-const>, then<ol><li>Set <var>v</var> to <var>next</var>.</li></ol></li></ol></li><li>If <emu-nt id="_ref_19245"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> is present and <var>v</var> is <emu-val>undefined</emu-val>, then<ol><li>If <emu-xref aoid="IsAnonymousFunctionDefinition" id="_ref_3488"><a href="syntax-directed-operations.html#sec-isanonymousfunctiondefinition">IsAnonymousFunctionDefinition</a></emu-xref>(<emu-nt id="_ref_19246"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>) is <emu-val>true</emu-val>, then<ol><li>Set <var>v</var> to ? <emu-xref aoid="NamedEvaluation" id="_ref_3489"><a href="syntax-directed-operations.html#sec-runtime-semantics-namedevaluation" class="e-user-code">NamedEvaluation</a></emu-xref> of <emu-nt id="_ref_19247"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> with argument <var>bindingId</var>.</li></ol></li><li>Else,<ol><li>Let <var>defaultValue</var> be ? <emu-xref aoid="Evaluation" id="_ref_3490"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_19248"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>.</li><li>Set <var>v</var> to ? <emu-xref aoid="GetValue" id="_ref_3491"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>defaultValue</var>).</li></ol></li></ol></li><li>If <var>environment</var> is <emu-val>undefined</emu-val>, return ? <emu-xref aoid="PutValue" id="_ref_3492"><a href="ecmascript-data-types-and-values.html#sec-putvalue" class="e-user-code">PutValue</a></emu-xref>(<var>lhs</var>, <var>v</var>).</li><li>Return ? <emu-xref aoid="InitializeReferencedBinding" id="_ref_3493"><a href="ecmascript-data-types-and-values.html#sec-initializereferencedbinding">InitializeReferencedBinding</a></emu-xref>(<var>lhs</var>, <var>v</var>).</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingElement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ahx6lm0w" id="prod-m05a8O_b">
|
||
<emu-nt id="_ref_19249"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_19250"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>v</var> be <emu-val>undefined</emu-val>.</li><li>If <var>iteratorRecord</var>.<var class="field">[[Done]]</var> is <emu-val>false</emu-val>, then<ol><li>Let <var>next</var> be ? <emu-xref aoid="IteratorStepValue" id="_ref_3494"><a href="abstract-operations.html#sec-iteratorstepvalue" class="e-user-code">IteratorStepValue</a></emu-xref>(<var>iteratorRecord</var>).</li><li>If <var>next</var> is not <emu-const>done</emu-const>, then<ol><li>Set <var>v</var> to <var>next</var>.</li></ol></li></ol></li><li>If <emu-nt id="_ref_19251"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> is present and <var>v</var> is <emu-val>undefined</emu-val>, then<ol><li>Let <var>defaultValue</var> be ? <emu-xref aoid="Evaluation" id="_ref_3495"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_19252"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>.</li><li>Set <var>v</var> to ? <emu-xref aoid="GetValue" id="_ref_3496"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>defaultValue</var>).</li></ol></li><li>Return ? <emu-xref aoid="BindingInitialization" id="_ref_3497"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <emu-nt id="_ref_19253"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt> with arguments <var>v</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingRestElement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ffhe3nqa" id="prod-evgdYCB8">
|
||
<emu-t>...</emu-t>
|
||
<emu-nt id="_ref_19254"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>lhs</var> be ? <emu-xref aoid="ResolveBinding" id="_ref_3498"><a href="executable-code-and-execution-contexts.html#sec-resolvebinding" class="e-user-code">ResolveBinding</a></emu-xref>(<emu-xref aoid="StringValue" id="_ref_3499"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_19255"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>, <var>environment</var>).</li><li>Let <var>A</var> be ! <emu-xref aoid="ArrayCreate" id="_ref_3500"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(0).</li><li>Let <var>n</var> be 0.</li><li>Repeat,<ol><li>Let <var>next</var> be <emu-const>done</emu-const>.</li><li>If <var>iteratorRecord</var>.<var class="field">[[Done]]</var> is <emu-val>false</emu-val>, then<ol><li>Set <var>next</var> to ? <emu-xref aoid="IteratorStepValue" id="_ref_3501"><a href="abstract-operations.html#sec-iteratorstepvalue" class="e-user-code">IteratorStepValue</a></emu-xref>(<var>iteratorRecord</var>).</li></ol></li><li>If <var>next</var> is <emu-const>done</emu-const>, then<ol><li>If <var>environment</var> is <emu-val>undefined</emu-val>, return ? <emu-xref aoid="PutValue" id="_ref_3502"><a href="ecmascript-data-types-and-values.html#sec-putvalue" class="e-user-code">PutValue</a></emu-xref>(<var>lhs</var>, <var>A</var>).</li><li>Return ? <emu-xref aoid="InitializeReferencedBinding" id="_ref_3503"><a href="ecmascript-data-types-and-values.html#sec-initializereferencedbinding">InitializeReferencedBinding</a></emu-xref>(<var>lhs</var>, <var>A</var>).</li></ol></li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_3504"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_3505"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_3506"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>n</var>)), <var>next</var>).</li><li>Set <var>n</var> to <var>n</var> + 1.</li></ol></li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="BindingRestElement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="hmjzlo6g" id="prod-QEcf_4fA">
|
||
<emu-t>...</emu-t>
|
||
<emu-nt id="_ref_19256"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>A</var> be ! <emu-xref aoid="ArrayCreate" id="_ref_3507"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(0).</li><li>Let <var>n</var> be 0.</li><li>Repeat,<ol><li>Let <var>next</var> be <emu-const>done</emu-const>.</li><li>If <var>iteratorRecord</var>.<var class="field">[[Done]]</var> is <emu-val>false</emu-val>, then<ol><li>Set <var>next</var> to ? <emu-xref aoid="IteratorStepValue" id="_ref_3508"><a href="abstract-operations.html#sec-iteratorstepvalue" class="e-user-code">IteratorStepValue</a></emu-xref>(<var>iteratorRecord</var>).</li></ol></li><li>If <var>next</var> is <emu-const>done</emu-const>, then<ol><li>Return ? <emu-xref aoid="BindingInitialization" id="_ref_3509"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <emu-nt id="_ref_19257"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt> with arguments <var>A</var> and <var>environment</var>.</li></ol></li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_3510"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_3511"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_3512"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>n</var>)), <var>next</var>).</li><li>Set <var>n</var> to <var>n</var> + 1.</li></ol></li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FormalParameters" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="n7nathbb" id="prod-1uizUnEF"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FormalParameters" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameters">FormalParameters</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uqeba6gz" id="prod-uQ_NTpHd">
|
||
<emu-nt id="_ref_19258"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameterList">FormalParameterList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_19259"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionRestParameter">FunctionRestParameter</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Perform ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3513"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19260"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameterList">FormalParameterList</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li><li>Return ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3514"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19261"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionRestParameter">FunctionRestParameter</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FormalParameterList" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameterList">FormalParameterList</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ijrjejbs" id="prod-F7oEv_fM">
|
||
<emu-nt id="_ref_19262"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameterList">FormalParameterList</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_19263"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameter">FormalParameter</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Perform ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3515"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19264"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameterList">FormalParameterList</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li><li>Return ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3516"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <emu-nt id="_ref_19265"><a href="ecmascript-language-functions-and-classes.html#prod-FormalParameter">FormalParameter</a></emu-nt> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrowParameters" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ArrowParameters">ArrowParameters</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uolyom43" id="prod-D3j0ZmD-"><emu-nt id="_ref_19266"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>v</var> be <emu-val>undefined</emu-val>.</li><li><emu-xref href="#assert" id="_ref_3517"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>iteratorRecord</var>.<var class="field">[[Done]]</var> is <emu-val>false</emu-val>.</li><li>Let <var>next</var> be ? <emu-xref aoid="IteratorStepValue" id="_ref_3518"><a href="abstract-operations.html#sec-iteratorstepvalue" class="e-user-code">IteratorStepValue</a></emu-xref>(<var>iteratorRecord</var>).</li><li>If <var>next</var> is not <emu-const>done</emu-const>, then<ol><li>Set <var>v</var> to <var>next</var>.</li></ol></li><li>Return ? <emu-xref aoid="BindingInitialization" id="_ref_3519"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <emu-nt id="_ref_19267"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> with arguments <var>v</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ArrowParameters" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ArrowParameters">ArrowParameters</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="yrb110hm" id="prod-F51qoUgS"><emu-nt id="_ref_19268"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>formals</var> be the <emu-nt id="_ref_19269"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowFormalParameters">ArrowFormalParameters</a></emu-nt> that is <emu-xref href="#sec-syntactic-grammar" id="_ref_3520"><a href="notational-conventions.html#sec-syntactic-grammar">covered</a></emu-xref> by <emu-nt id="_ref_19270"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt>.</li><li>Return ? <emu-xref aoid="IteratorBindingInitialization" id="_ref_3521"><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" class="e-user-code">IteratorBindingInitialization</a></emu-xref> of <var>formals</var> with arguments <var>iteratorRecord</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncArrowBindingIdentifier" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowBindingIdentifier">AsyncArrowBindingIdentifier</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uolyom43" id="prod-1SN5A2Ci"><emu-nt id="_ref_19271"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>v</var> be <emu-val>undefined</emu-val>.</li><li><emu-xref href="#assert" id="_ref_3522"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>iteratorRecord</var>.<var class="field">[[Done]]</var> is <emu-val>false</emu-val>.</li><li>Let <var>next</var> be ? <emu-xref aoid="IteratorStepValue" id="_ref_3523"><a href="abstract-operations.html#sec-iteratorstepvalue" class="e-user-code">IteratorStepValue</a></emu-xref>(<var>iteratorRecord</var>).</li><li>If <var>next</var> is not <emu-const>done</emu-const>, then<ol><li>Set <var>v</var> to <var>next</var>.</li></ol></li><li>Return ? <emu-xref aoid="BindingInitialization" id="_ref_3524"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <emu-nt id="_ref_19272"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> with arguments <var>v</var> and <var>environment</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-assignmenttargettype" oldids="sec-identifiers-static-semantics-assignmenttargettype,sec-identifiers-static-semantics-isvalidsimpleassignmenttarget,sec-semantics-static-semantics-assignmenttargettype,sec-semantics-static-semantics-isvalidsimpleassignmenttarget,sec-grouping-operator-static-semantics-assignmenttargettype,sec-grouping-operator-static-semantics-isvalidsimpleassignmenttarget,sec-static-semantics-static-semantics-assignmenttargettype,sec-static-semantics-static-semantics-isvalidsimpleassignmenttarget,sec-update-expressions-static-semantics-assignmenttargettype,sec-update-expressions-static-semantics-isvalidsimpleassignmenttarget,sec-unary-operators-static-semantics-assignmenttargettype,sec-unary-operators-static-semantics-isvalidsimpleassignmenttarget,sec-exp-operator-static-semantics-assignmenttargettype,sec-exp-operator-static-semantics-isvalidsimpleassignmenttarget,sec-multiplicative-operators-static-semantics-assignmenttargettype,sec-multiplicative-operators-static-semantics-isvalidsimpleassignmenttarget,sec-additive-operators-static-semantics-assignmenttargettype,sec-additive-operators-static-semantics-isvalidsimpleassignmenttarget,sec-bitwise-shift-operators-static-semantics-assignmenttargettype,sec-bitwise-shift-operators-static-semantics-isvalidsimpleassignmenttarget,sec-relational-operators-static-semantics-assignmenttargettype,sec-relational-operators-static-semantics-isvalidsimpleassignmenttarget,sec-equality-operators-static-semantics-assignmenttargettype,sec-equality-operators-static-semantics-isvalidsimpleassignmenttarget,sec-binary-bitwise-operators-static-semantics-assignmenttargettype,sec-binary-bitwise-operators-static-semantics-isvalidsimpleassignmenttarget,sec-binary-logical-operators-static-semantics-assignmenttargettype,sec-binary-logical-operators-static-semantics-isvalidsimpleassignmenttarget,sec-conditional-operator-static-semantics-assignmenttargettype,sec-conditional-operator-static-semantics-isvalidsimpleassignmenttarget,sec-assignment-operators-static-semantics-assignmenttargettype,sec-assignment-operators-static-semantics-isvalidsimpleassignmenttarget,sec-comma-operator-static-semantics-assignmenttargettype,sec-comma-operator-static-semantics-isvalidsimpleassignmenttarget" type="sdo" aoid="AssignmentTargetType"><span id="sec-comma-operator-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-comma-operator-static-semantics-assignmenttargettype"></span><span id="sec-assignment-operators-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-assignment-operators-static-semantics-assignmenttargettype"></span><span id="sec-conditional-operator-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-conditional-operator-static-semantics-assignmenttargettype"></span><span id="sec-binary-logical-operators-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-binary-logical-operators-static-semantics-assignmenttargettype"></span><span id="sec-binary-bitwise-operators-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-binary-bitwise-operators-static-semantics-assignmenttargettype"></span><span id="sec-equality-operators-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-equality-operators-static-semantics-assignmenttargettype"></span><span id="sec-relational-operators-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-relational-operators-static-semantics-assignmenttargettype"></span><span id="sec-bitwise-shift-operators-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-bitwise-shift-operators-static-semantics-assignmenttargettype"></span><span id="sec-additive-operators-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-additive-operators-static-semantics-assignmenttargettype"></span><span id="sec-multiplicative-operators-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-multiplicative-operators-static-semantics-assignmenttargettype"></span><span id="sec-exp-operator-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-exp-operator-static-semantics-assignmenttargettype"></span><span id="sec-unary-operators-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-unary-operators-static-semantics-assignmenttargettype"></span><span id="sec-update-expressions-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-update-expressions-static-semantics-assignmenttargettype"></span><span id="sec-static-semantics-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-static-semantics-static-semantics-assignmenttargettype"></span><span id="sec-grouping-operator-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-grouping-operator-static-semantics-assignmenttargettype"></span><span id="sec-semantics-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-semantics-static-semantics-assignmenttargettype"></span><span id="sec-identifiers-static-semantics-isvalidsimpleassignmenttarget"></span><span id="sec-identifiers-static-semantics-assignmenttargettype"></span>
|
||
<h1><span class="secnum">8.6.4</span> Static Semantics: AssignmentTargetType</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3525"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> AssignmentTargetType takes no arguments and returns <emu-const>simple</emu-const>, <emu-const>web-compat</emu-const>, or <emu-const>invalid</emu-const>. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="IdentifierReference" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-IdentifierReference">IdentifierReference</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="bras6mo_" id="prod-RnnOsVyV"><emu-nt id="_ref_19273"><a href="ecmascript-language-expressions.html#prod-Identifier">Identifier</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>If <emu-xref aoid="IsStrict" id="_ref_3526"><a href="ecmascript-language-source-code.html#sec-isstrict">IsStrict</a></emu-xref>(this <emu-nt id="_ref_19274"><a href="ecmascript-language-expressions.html#prod-IdentifierReference">IdentifierReference</a></emu-nt>) is <emu-val>true</emu-val> and the <emu-xref aoid="StringValue" id="_ref_3527"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_19275"><a href="ecmascript-language-expressions.html#prod-Identifier">Identifier</a></emu-nt> is either <emu-val>"eval"</emu-val> or <emu-val>"arguments"</emu-val>, return <emu-const>invalid</emu-const>.</li><li>Return <emu-const>simple</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="IdentifierReference">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-IdentifierReference">IdentifierReference</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0d8zyjn8" id="prod-RHpmBFMY">
|
||
<emu-t>yield</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="hx1dvlrw" id="prod-Q9hezMXb">
|
||
<emu-t>await</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="CallExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="2u2urbmg" id="prod-G2CxyRR8">
|
||
<emu-nt id="_ref_19276"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt>
|
||
<emu-t>[</emu-t>
|
||
<emu-nt id="_ref_19277"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="u6lsbvgu" id="prod-H084cqoS">
|
||
<emu-nt id="_ref_19278"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_19279"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cysjk9wh" id="prod-hU5p3vdM">
|
||
<emu-nt id="_ref_19280"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_19281"><a href="ecmascript-language-lexical-grammar.html#prod-PrivateIdentifier">PrivateIdentifier</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="MemberExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="a74xd7de" id="prod-Z77CzX6A">
|
||
<emu-nt id="_ref_19282"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-t>[</emu-t>
|
||
<emu-nt id="_ref_19283"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="frbj984t" id="prod-fBP_qjj3">
|
||
<emu-nt id="_ref_19284"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_19285"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="x4tzletw" id="prod-Y1Rqw5E8">
|
||
<emu-nt id="_ref_19286"><a href="ecmascript-language-expressions.html#prod-SuperProperty">SuperProperty</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="0uk9afbi" id="prod-Ca71SmWs">
|
||
<emu-nt id="_ref_19287"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-t>.</emu-t>
|
||
<emu-nt id="_ref_19288"><a href="ecmascript-language-lexical-grammar.html#prod-PrivateIdentifier">PrivateIdentifier</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-const>simple</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="PrimaryExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PrimaryExpression">PrimaryExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="yrb110hm" id="prod-SPo4SV-C">
|
||
<emu-nt id="_ref_19289"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>expr</var> be the <emu-nt id="_ref_19290"><a href="ecmascript-language-expressions.html#prod-ParenthesizedExpression">ParenthesizedExpression</a></emu-nt> that is <emu-xref href="#sec-syntactic-grammar" id="_ref_3528"><a href="notational-conventions.html#sec-syntactic-grammar">covered</a></emu-xref> by <emu-nt id="_ref_19291"><a href="ecmascript-language-expressions.html#prod-CoverParenthesizedExpressionAndArrowParameterList">CoverParenthesizedExpressionAndArrowParameterList</a></emu-nt>.</li><li>Return the <emu-xref aoid="AssignmentTargetType" id="_ref_3529"><a href="syntax-directed-operations.html#sec-static-semantics-assignmenttargettype">AssignmentTargetType</a></emu-xref> of <var>expr</var>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="CallExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="7jj-96li" id="prod-tKZdJ1b_">
|
||
<emu-nt id="_ref_19292"><a href="ecmascript-language-functions-and-classes.html#prod-CoverCallExpressionAndAsyncArrowHead">CoverCallExpressionAndAsyncArrowHead</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="qugahahu" id="prod-fZIg56D8">
|
||
<emu-nt id="_ref_19293"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt>
|
||
<emu-nt id="_ref_19294"><a href="ecmascript-language-expressions.html#prod-Arguments">Arguments</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li id="step-assignmenttargettype-web-compat" normative-optional=""><div class="attributes-tag"><emu-xref href="#sec-conformance" id="_ref_3530"><a href="conformance.html#sec-conformance">Normative Optional</a></emu-xref></div>If the <emu-xref href="#host" id="_ref_3531"><a href="overview.html#host">host</a></emu-xref> is a web browser or otherwise supports <emu-xref href="#sec-runtime-errors-for-function-call-assignment-targets" title="" id="_ref_233"><a href="additional-ecmascript-features-for-web-browsers.html#sec-runtime-errors-for-function-call-assignment-targets">Runtime Errors for Function Call Assignment Targets</a></emu-xref> and <emu-xref aoid="IsStrict" id="_ref_3532"><a href="ecmascript-language-source-code.html#sec-isstrict">IsStrict</a></emu-xref>(this <emu-nt id="_ref_19295"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt>) is <emu-val>false</emu-val>, then<ol><li>Return <emu-const>web-compat</emu-const>.</li></ol></li><li>Return <emu-const>invalid</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="PrimaryExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PrimaryExpression">PrimaryExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jo4mwtvh" id="prod--qvqF1RP">
|
||
<emu-t>this</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="kul-a19e" id="prod-jrxTmiG4">
|
||
<emu-nt id="_ref_19296"><a href="ecmascript-language-expressions.html#prod-Literal">Literal</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="g_mjk5cm" id="prod-oEnyQ_d5">
|
||
<emu-nt id="_ref_19297"><a href="ecmascript-language-expressions.html#prod-ArrayLiteral">ArrayLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="zreje_zz" id="prod-Lwy-qADd">
|
||
<emu-nt id="_ref_19298"><a href="ecmascript-language-expressions.html#prod-ObjectLiteral">ObjectLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="jc7szv1s" id="prod-YxQ7Gh2N">
|
||
<emu-nt id="_ref_19299"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionExpression">FunctionExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="2m5tsvzv" id="prod-XEUSovVm">
|
||
<emu-nt id="_ref_19300"><a href="ecmascript-language-functions-and-classes.html#prod-ClassExpression">ClassExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="q7f39ayg" id="prod-7L0LV2jw">
|
||
<emu-nt id="_ref_19301"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorExpression">GeneratorExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="rvibtigb" id="prod-PZa6fcRc">
|
||
<emu-nt id="_ref_19302"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionExpression">AsyncFunctionExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="naptrn97" id="prod-9QnU4opL">
|
||
<emu-nt id="_ref_19303"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorExpression">AsyncGeneratorExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="mbzy6lvr" id="prod-JA5CM-VG">
|
||
<emu-nt id="_ref_19304"><a href="ecmascript-language-lexical-grammar.html#prod-RegularExpressionLiteral">RegularExpressionLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="2zis6bbu" id="prod-SNIQNUuy">
|
||
<emu-nt id="_ref_19305"><a href="ecmascript-language-expressions.html#prod-TemplateLiteral">TemplateLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="CallExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ljkqw-iw" id="prod-N96SKFWl">
|
||
<emu-nt id="_ref_19306"><a href="ecmascript-language-expressions.html#prod-SuperCall">SuperCall</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="kyx2iyhy" id="prod-UEqjljYk">
|
||
<emu-nt id="_ref_19307"><a href="ecmascript-language-expressions.html#prod-ImportCall">ImportCall</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="rc744wey" id="prod-AgSQnEAG">
|
||
<emu-nt id="_ref_19308"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt>
|
||
<emu-nt id="_ref_19309"><a href="ecmascript-language-expressions.html#prod-TemplateLiteral">TemplateLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="NewExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-NewExpression">NewExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="51p618ta" id="prod-cHsc8BCy">
|
||
<emu-t>new</emu-t>
|
||
<emu-nt id="_ref_19310"><a href="ecmascript-language-expressions.html#prod-NewExpression">NewExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="MemberExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fj52gjle" id="prod-A3Jt723U">
|
||
<emu-nt id="_ref_19311"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-nt id="_ref_19312"><a href="ecmascript-language-expressions.html#prod-TemplateLiteral">TemplateLiteral</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cfq-hbbx" id="prod-AM7YtKeO">
|
||
<emu-t>new</emu-t>
|
||
<emu-nt id="_ref_19313"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt>
|
||
<emu-nt id="_ref_19314"><a href="ecmascript-language-expressions.html#prod-Arguments">Arguments</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="NewTarget">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-NewTarget">NewTarget</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0t4hpsv9" id="prod-jkiznuvy">
|
||
<emu-t>new</emu-t>
|
||
<emu-t>.</emu-t>
|
||
<emu-t>target</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ImportMeta">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-ImportMeta">ImportMeta</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="8myn6frq" id="prod-6GBPx2Io">
|
||
<emu-t>import</emu-t>
|
||
<emu-t>.</emu-t>
|
||
<emu-t>meta</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="LeftHandSideExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jbet6xpw" id="prod-1FBwi1xH">
|
||
<emu-nt id="_ref_19315"><a href="ecmascript-language-expressions.html#prod-OptionalExpression">OptionalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="UpdateExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-UpdateExpression">UpdateExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i_jjg0ex" id="prod-EEgk-Yff">
|
||
<emu-nt id="_ref_19316"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>++</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="jr0tcoqg" id="prod-RKIk04i1">
|
||
<emu-nt id="_ref_19317"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>--</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="vwgxygda" id="prod-hxMCs-2O">
|
||
<emu-t>++</emu-t>
|
||
<emu-nt id="_ref_19318"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="onrvwudi" id="prod-YQ2Qj3z4">
|
||
<emu-t>--</emu-t>
|
||
<emu-nt id="_ref_19319"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="UnaryExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="v9wiw5nl" id="prod-JRAAw485">
|
||
<emu-t>delete</emu-t>
|
||
<emu-nt id="_ref_19320"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="5dgdjy7z" id="prod-L28J0B-W">
|
||
<emu-t>void</emu-t>
|
||
<emu-nt id="_ref_19321"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="qxosuesc" id="prod-_pp9tysE">
|
||
<emu-t>typeof</emu-t>
|
||
<emu-nt id="_ref_19322"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="o0kdmush" id="prod-vWffOcNW">
|
||
<emu-t>+</emu-t>
|
||
<emu-nt id="_ref_19323"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="odzkxnu5" id="prod-mkCLwyla">
|
||
<emu-t>-</emu-t>
|
||
<emu-nt id="_ref_19324"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="b9nqec7b" id="prod-vQJ1qlPd">
|
||
<emu-t>~</emu-t>
|
||
<emu-nt id="_ref_19325"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="ulcvcjyx" id="prod-2t1vDiwJ">
|
||
<emu-t>!</emu-t>
|
||
<emu-nt id="_ref_19326"><a href="ecmascript-language-expressions.html#prod-UnaryExpression">UnaryExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="shlomml6" id="prod-BbB1pUoP">
|
||
<emu-nt id="_ref_19327"><a href="ecmascript-language-functions-and-classes.html#prod-AwaitExpression">AwaitExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ExponentiationExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-ExponentiationExpression">ExponentiationExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0zbfzgb0" id="prod-zzL8pmfg">
|
||
<emu-nt id="_ref_19328"><a href="ecmascript-language-expressions.html#prod-UpdateExpression">UpdateExpression</a></emu-nt>
|
||
<emu-t>**</emu-t>
|
||
<emu-nt id="_ref_19329"><a href="ecmascript-language-expressions.html#prod-ExponentiationExpression">ExponentiationExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="MultiplicativeExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-MultiplicativeExpression">MultiplicativeExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-5_iophl" id="prod-8czRO4ZP">
|
||
<emu-nt id="_ref_19330"><a href="ecmascript-language-expressions.html#prod-MultiplicativeExpression">MultiplicativeExpression</a></emu-nt>
|
||
<emu-nt id="_ref_19331"><a href="ecmascript-language-expressions.html#prod-MultiplicativeOperator">MultiplicativeOperator</a></emu-nt>
|
||
<emu-nt id="_ref_19332"><a href="ecmascript-language-expressions.html#prod-ExponentiationExpression">ExponentiationExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AdditiveExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dkl7f70y" id="prod-ORYKa--f">
|
||
<emu-nt id="_ref_19333"><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt>
|
||
<emu-t>+</emu-t>
|
||
<emu-nt id="_ref_19334"><a href="ecmascript-language-expressions.html#prod-MultiplicativeExpression">MultiplicativeExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="7gvefllu" id="prod-oZVlZzKh">
|
||
<emu-nt id="_ref_19335"><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt>
|
||
<emu-t>-</emu-t>
|
||
<emu-nt id="_ref_19336"><a href="ecmascript-language-expressions.html#prod-MultiplicativeExpression">MultiplicativeExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ShiftExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tg9tkm4d" id="prod-je3cRB7F">
|
||
<emu-nt id="_ref_19337"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
<emu-t><<</emu-t>
|
||
<emu-nt id="_ref_19338"><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="vimn88nj" id="prod-SgrZC9mm">
|
||
<emu-nt id="_ref_19339"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
<emu-t>>></emu-t>
|
||
<emu-nt id="_ref_19340"><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="n_furjdr" id="prod-SrzEhL0f">
|
||
<emu-nt id="_ref_19341"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
<emu-t>>>></emu-t>
|
||
<emu-nt id="_ref_19342"><a href="ecmascript-language-expressions.html#prod-AdditiveExpression">AdditiveExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="RelationalExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="0hbjkrqw" id="prod-ZtojqFO1">
|
||
<emu-nt id="_ref_19343"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t><</emu-t>
|
||
<emu-nt id="_ref_19344"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="gziyg7ut" id="prod-oCA1ZhR8">
|
||
<emu-nt id="_ref_19345"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t>></emu-t>
|
||
<emu-nt id="_ref_19346"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="kcktdtrm" id="prod-F2jVn7Gn">
|
||
<emu-nt id="_ref_19347"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t><=</emu-t>
|
||
<emu-nt id="_ref_19348"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="3cupp_tq" id="prod-1_mlatk2">
|
||
<emu-nt id="_ref_19349"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t>>=</emu-t>
|
||
<emu-nt id="_ref_19350"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="1ec9rmdp" id="prod-V44oc_oI">
|
||
<emu-nt id="_ref_19351"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t>instanceof</emu-t>
|
||
<emu-nt id="_ref_19352"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="9mtjpkmx" id="prod-I3ilBqyQ">
|
||
<emu-nt id="_ref_19353"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_19354"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="bfkxjj0f" id="prod-W4fdS6Hh">
|
||
<emu-nt id="_ref_19355"><a href="ecmascript-language-lexical-grammar.html#prod-PrivateIdentifier">PrivateIdentifier</a></emu-nt>
|
||
<emu-t>in</emu-t>
|
||
<emu-nt id="_ref_19356"><a href="ecmascript-language-expressions.html#prod-ShiftExpression">ShiftExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="EqualityExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="dxo0lfgu" id="prod-9wMtfL2T">
|
||
<emu-nt id="_ref_19357"><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt>
|
||
<emu-t>==</emu-t>
|
||
<emu-nt id="_ref_19358"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="cn2twrby" id="prod-pkhka4W_">
|
||
<emu-nt id="_ref_19359"><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt>
|
||
<emu-t>!=</emu-t>
|
||
<emu-nt id="_ref_19360"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="4hu79ipe" id="prod-zJL_pZsv">
|
||
<emu-nt id="_ref_19361"><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt>
|
||
<emu-t>===</emu-t>
|
||
<emu-nt id="_ref_19362"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="irptryux" id="prod-H08KK39f">
|
||
<emu-nt id="_ref_19363"><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt>
|
||
<emu-t>!==</emu-t>
|
||
<emu-nt id="_ref_19364"><a href="ecmascript-language-expressions.html#prod-RelationalExpression">RelationalExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="BitwiseANDExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BitwiseANDExpression">BitwiseANDExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="qq3twiws" id="prod-ZtMQjV14">
|
||
<emu-nt id="_ref_19365"><a href="ecmascript-language-expressions.html#prod-BitwiseANDExpression">BitwiseANDExpression</a></emu-nt>
|
||
<emu-t>&</emu-t>
|
||
<emu-nt id="_ref_19366"><a href="ecmascript-language-expressions.html#prod-EqualityExpression">EqualityExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="BitwiseXORExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BitwiseXORExpression">BitwiseXORExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tgmxlg5x" id="prod-b8QyJMjt">
|
||
<emu-nt id="_ref_19367"><a href="ecmascript-language-expressions.html#prod-BitwiseXORExpression">BitwiseXORExpression</a></emu-nt>
|
||
<emu-t>^</emu-t>
|
||
<emu-nt id="_ref_19368"><a href="ecmascript-language-expressions.html#prod-BitwiseANDExpression">BitwiseANDExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="BitwiseORExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-BitwiseORExpression">BitwiseORExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="aw36khwc" id="prod-E016H1hu">
|
||
<emu-nt id="_ref_19369"><a href="ecmascript-language-expressions.html#prod-BitwiseORExpression">BitwiseORExpression</a></emu-nt>
|
||
<emu-t>|</emu-t>
|
||
<emu-nt id="_ref_19370"><a href="ecmascript-language-expressions.html#prod-BitwiseXORExpression">BitwiseXORExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="LogicalANDExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LogicalANDExpression">LogicalANDExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="iybiqszh" id="prod-pL4CmROv">
|
||
<emu-nt id="_ref_19371"><a href="ecmascript-language-expressions.html#prod-LogicalANDExpression">LogicalANDExpression</a></emu-nt>
|
||
<emu-t>&&</emu-t>
|
||
<emu-nt id="_ref_19372"><a href="ecmascript-language-expressions.html#prod-BitwiseORExpression">BitwiseORExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="LogicalORExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LogicalORExpression">LogicalORExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tku92t5q" id="prod-9euGX5p6">
|
||
<emu-nt id="_ref_19373"><a href="ecmascript-language-expressions.html#prod-LogicalORExpression">LogicalORExpression</a></emu-nt>
|
||
<emu-t>||</emu-t>
|
||
<emu-nt id="_ref_19374"><a href="ecmascript-language-expressions.html#prod-LogicalANDExpression">LogicalANDExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="CoalesceExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-CoalesceExpression">CoalesceExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="3eoigfmu" id="prod-CUQk8yb8">
|
||
<emu-nt id="_ref_19375"><a href="ecmascript-language-expressions.html#prod-CoalesceExpressionHead">CoalesceExpressionHead</a></emu-nt>
|
||
<emu-t>??</emu-t>
|
||
<emu-nt id="_ref_19376"><a href="ecmascript-language-expressions.html#prod-BitwiseORExpression">BitwiseORExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="ConditionalExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-ConditionalExpression">ConditionalExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="d4vlxget" id="prod--rPEOl_h">
|
||
<emu-nt id="_ref_19377"><a href="ecmascript-language-expressions.html#prod-ShortCircuitExpression">ShortCircuitExpression</a></emu-nt>
|
||
<emu-t>?</emu-t>
|
||
<emu-nt id="_ref_19378"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_19379"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AssignmentExpression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uglis9ea" id="prod-d_vrZ4E2">
|
||
<emu-nt id="_ref_19380"><a href="ecmascript-language-functions-and-classes.html#prod-YieldExpression">YieldExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="k987eemp" id="prod-MsqqUtwK">
|
||
<emu-nt id="_ref_19381"><a href="ecmascript-language-functions-and-classes.html#prod-ArrowFunction">ArrowFunction</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="a3kew9kn" id="prod-OM0GWtO8">
|
||
<emu-nt id="_ref_19382"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncArrowFunction">AsyncArrowFunction</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="ijpo4eaq" id="prod--dpqOTdc">
|
||
<emu-nt id="_ref_19383"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>=</emu-t>
|
||
<emu-nt id="_ref_19384"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="xzqhr---" id="prod-DZjLGTZE">
|
||
<emu-nt id="_ref_19385"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-nt id="_ref_19386"><a href="ecmascript-language-expressions.html#prod-AssignmentOperator">AssignmentOperator</a></emu-nt>
|
||
<emu-nt id="_ref_19387"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="devkzibl" id="prod-7LWIIJBX">
|
||
<emu-nt id="_ref_19388"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>&&=</emu-t>
|
||
<emu-nt id="_ref_19389"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="dt1frwiy" id="prod-Bj3Q77v8">
|
||
<emu-nt id="_ref_19390"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>||=</emu-t>
|
||
<emu-nt id="_ref_19391"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
<emu-rhs a="dbifpqxa" id="prod-Lo8Q8Acu">
|
||
<emu-nt id="_ref_19392"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>
|
||
<emu-t>??=</emu-t>
|
||
<emu-nt id="_ref_19393"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="Expression">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cwoazx1t" id="prod-PrI2fhmx">
|
||
<emu-nt id="_ref_19394"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>
|
||
<emu-t>,</emu-t>
|
||
<emu-nt id="_ref_19395"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-const>invalid</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-static-semantics-propname" oldids="sec-object-initializer-static-semantics-propname,sec-method-definitions-static-semantics-propname,sec-generator-function-definitions-static-semantics-propname,sec-async-generator-function-definitions-static-semantics-propname,sec-class-definitions-static-semantics-propname,sec-async-function-definitions-static-semantics-PropName" type="sdo" aoid="PropName"><span id="sec-async-function-definitions-static-semantics-PropName"></span><span id="sec-class-definitions-static-semantics-propname"></span><span id="sec-async-generator-function-definitions-static-semantics-propname"></span><span id="sec-generator-function-definitions-static-semantics-propname"></span><span id="sec-method-definitions-static-semantics-propname"></span><span id="sec-object-initializer-static-semantics-propname"></span>
|
||
<h1><span class="secnum">8.6.5</span> Static Semantics: PropName</h1>
|
||
<p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_3533"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> PropName takes no arguments and returns a String or <emu-const>empty</emu-const>. It is defined piecewise over the following productions:</p>
|
||
<emu-grammar><emu-production name="PropertyDefinition" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PropertyDefinition">PropertyDefinition</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i2hxnrih" id="prod-qwkHLLWn"><emu-nt id="_ref_19396"><a href="ecmascript-language-expressions.html#prod-IdentifierReference">IdentifierReference</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="StringValue" id="_ref_3534"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_19397"><a href="ecmascript-language-expressions.html#prod-IdentifierReference">IdentifierReference</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="PropertyDefinition" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PropertyDefinition">PropertyDefinition</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="w7ifpmpd" id="prod-LNEVDzQo">
|
||
<emu-t>...</emu-t>
|
||
<emu-nt id="_ref_19398"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-const>empty</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="PropertyDefinition" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-PropertyDefinition">PropertyDefinition</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="8tkldtak" id="prod-T9fmdB_X">
|
||
<emu-nt id="_ref_19399"><a href="ecmascript-language-expressions.html#prod-PropertyName">PropertyName</a></emu-nt>
|
||
<emu-t>:</emu-t>
|
||
<emu-nt id="_ref_19400"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="PropName" id="_ref_3535"><a href="syntax-directed-operations.html#sec-static-semantics-propname">PropName</a></emu-xref> of <emu-nt id="_ref_19401"><a href="ecmascript-language-expressions.html#prod-PropertyName">PropertyName</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LiteralPropertyName" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LiteralPropertyName">LiteralPropertyName</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="drsx4tka" id="prod-u_yMpuq5"><emu-nt id="_ref_19402"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AttributeKey" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-AttributeKey">AttributeKey</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="drsx4tka" id="prod-g9_10BzJ"><emu-nt id="_ref_19403"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="StringValue" id="_ref_3536"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_19404"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LiteralPropertyName" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LiteralPropertyName">LiteralPropertyName</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xhtltz00" id="prod-Xw0182zP"><emu-nt id="_ref_19405"><a href="ecmascript-language-lexical-grammar.html#prod-StringLiteral">StringLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="AttributeKey" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-scripts-and-modules.html#prod-AttributeKey">AttributeKey</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xhtltz00" id="prod-A3YceRaF"><emu-nt id="_ref_19406"><a href="ecmascript-language-lexical-grammar.html#prod-StringLiteral">StringLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="SV" id="_ref_3537"><a href="ecmascript-language-lexical-grammar.html#sec-static-semantics-sv">SV</a></emu-xref> of <emu-nt id="_ref_19407"><a href="ecmascript-language-lexical-grammar.html#prod-StringLiteral">StringLiteral</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="LiteralPropertyName" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-LiteralPropertyName">LiteralPropertyName</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pui0b1rt" id="prod-nyDilreQ"><emu-nt id="_ref_19408"><a href="ecmascript-language-lexical-grammar.html#prod-NumericLiteral">NumericLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Let <var>nbr</var> be the <emu-xref aoid="NumericValue" id="_ref_3538"><a href="ecmascript-language-lexical-grammar.html#sec-numericvalue">NumericValue</a></emu-xref> of <emu-nt id="_ref_19409"><a href="ecmascript-language-lexical-grammar.html#prod-NumericLiteral">NumericLiteral</a></emu-nt>.</li><li>Return ! <emu-xref aoid="ToString" id="_ref_3539"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<var>nbr</var>).</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ComputedPropertyName" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-expressions.html#prod-ComputedPropertyName">ComputedPropertyName</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ltvvc-5a" id="prod-r9-JDvZR">
|
||
<emu-t>[</emu-t>
|
||
<emu-nt id="_ref_19410"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>
|
||
<emu-t>]</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-const>empty</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="MethodDefinition">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-MethodDefinition">MethodDefinition</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="f2ayx1_q" id="prod-CpdLYUt9">
|
||
<emu-nt id="_ref_19411"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19412"><a href="ecmascript-language-functions-and-classes.html#prod-UniqueFormalParameters">UniqueFormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19413"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="s7vk7pda" id="prod-5q0xQjd1">
|
||
<emu-t>get</emu-t>
|
||
<emu-nt id="_ref_19414"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19415"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
<emu-rhs a="lbu40xzc" id="prod-Pj7-Oy-Q">
|
||
<emu-t>set</emu-t>
|
||
<emu-nt id="_ref_19416"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19417"><a href="ecmascript-language-functions-and-classes.html#prod-PropertySetParameterList">PropertySetParameterList</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19418"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionBody">FunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="PropName" id="_ref_3540"><a href="syntax-directed-operations.html#sec-static-semantics-propname">PropName</a></emu-xref> of <emu-nt id="_ref_19419"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="GeneratorMethod" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorMethod">GeneratorMethod</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="e6yupcp1" id="prod-zA_cSICS">
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_19420"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19421"><a href="ecmascript-language-functions-and-classes.html#prod-UniqueFormalParameters">UniqueFormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19422"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorBody">GeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="PropName" id="_ref_3541"><a href="syntax-directed-operations.html#sec-static-semantics-propname">PropName</a></emu-xref> of <emu-nt id="_ref_19423"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncGeneratorMethod" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorMethod">AsyncGeneratorMethod</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="2edb8sar" id="prod-kfKLLmSB">
|
||
<emu-t>async</emu-t>
|
||
<emu-t>*</emu-t>
|
||
<emu-nt id="_ref_19424"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19425"><a href="ecmascript-language-functions-and-classes.html#prod-UniqueFormalParameters">UniqueFormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19426"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorBody">AsyncGeneratorBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="PropName" id="_ref_3542"><a href="syntax-directed-operations.html#sec-static-semantics-propname">PropName</a></emu-xref> of <emu-nt id="_ref_19427"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassElement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassElement">ClassElement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="2ui-f2qn" id="prod-auRJV_iy"><emu-nt id="_ref_19428"><a href="ecmascript-language-functions-and-classes.html#prod-ClassStaticBlock">ClassStaticBlock</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-const>empty</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassElement" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassElement">ClassElement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="sg2sawim" id="prod-eIc0iw1U"><emu-t>;</emu-t></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-const>empty</emu-const>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="AsyncMethod" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-AsyncMethod">AsyncMethod</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cfy3_9l8" id="prod-cOwxJsMP">
|
||
<emu-t>async</emu-t>
|
||
<emu-nt id="_ref_19429"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-t>(</emu-t>
|
||
<emu-nt id="_ref_19430"><a href="ecmascript-language-functions-and-classes.html#prod-UniqueFormalParameters">UniqueFormalParameters</a></emu-nt>
|
||
<emu-t>)</emu-t>
|
||
<emu-t>{</emu-t>
|
||
<emu-nt id="_ref_19431"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionBody">AsyncFunctionBody</a></emu-nt>
|
||
<emu-t>}</emu-t>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="PropName" id="_ref_3543"><a href="syntax-directed-operations.html#sec-static-semantics-propname">PropName</a></emu-xref> of <emu-nt id="_ref_19432"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="FieldDefinition" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-FieldDefinition">FieldDefinition</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="rqzzdcte" id="prod-NW7fjJTs">
|
||
<emu-nt id="_ref_19433"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>
|
||
<emu-nt optional="" id="_ref_19434"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt>
|
||
</emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return the <emu-xref aoid="PropName" id="_ref_3544"><a href="syntax-directed-operations.html#sec-static-semantics-propname">PropName</a></emu-xref> of <emu-nt id="_ref_19435"><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt>.</li></ol></emu-alg>
|
||
<emu-grammar><emu-production name="ClassElementName" collapsed="">
|
||
<emu-nt><a href="ecmascript-language-functions-and-classes.html#prod-ClassElementName">ClassElementName</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ie2-zc1c" id="prod-5EaGoVCR"><emu-nt id="_ref_19436"><a href="ecmascript-language-lexical-grammar.html#prod-PrivateIdentifier">PrivateIdentifier</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
</emu-grammar>
|
||
<emu-alg><ol><li>Return <emu-const>empty</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause></div></body></html> |