CINXE.COM
ECMAScript® 2025 Language Specification
<!doctype html><html lang="en-GB-oxendict"> <head><meta charset="utf-8"><meta property="og:image" content="https://tc39.es/ecmarkup/ecma-logo.png"><meta property="og:title" content="ECMAScript® 2025 Language Specification"><meta property="og:description" content="Introduction This Ecma Standard defines the ECMAScript 2025 Language. It is the sixteenth edition of the ECMAScript Language Specification. Since publication of the first edition in 1997, ECMAScript has grown to be one of the world's most widely used general-purpose programming languages. It is"> <link rel="icon" href="../img/favicon.ico"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.0.1/styles/base16/solarized-light.min.css"><link rel="stylesheet" href="../assets/ecmarkup.css"><link rel="stylesheet" href="../assets/print.css" media="print"><style> #metadata-block { margin: 4em 0; padding: 10px; border: 1px solid #ee8421; } #metadata-block h1 { font-size: 1.5em; margin-top: 0; } #metadata-block > ul { list-style-type: none; margin: 0; padding: 0; } #ecma-logo { width: 500px; } .unicode-property-table { table-layout: fixed; width: 100%; font-size: 80%; } .corner-cell { position: relative; height: 2lh; } .corner-cell .slash { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to bottom left, transparent calc(50% - 1px), gray, transparent calc(50% + 1px)); } .corner-cell > .column { position: absolute; bottom: 0.4em; left: 1em; } .corner-cell > .row { position: absolute; top: 0.4em; right: 1em; } </style> <title>ECMAScript® 2025 Language Specification</title><script src="../assets/multipage.js?cache=PxlMRbFW" defer=""></script><script src="../assets/ecmarkup.js?cache=Rn5g_R02" defer=""></script><style> @media print { @page :left { @bottom-right { content: '© Ecma International 2024'; } } @page :right { @bottom-left { content: '© Ecma International 2024'; } } @page :first { @bottom-left { content: ''; } @bottom-right { content: ''; } } @page :blank { @bottom-left { content: ''; } @bottom-right { content: ''; } } } </style><link rel="canonical" href="../#sec-ecmascript-language-statements-and-declarations"></head> <body><div id="menu"><div id="menu-search"><input type="text" id="menu-search-box" placeholder="Search..."><div id="menu-search-results" class="inactive"></div></div><div id="menu-pins"><div class="menu-pane-header">Pins<button class="unpin-all">clear</button></div><ul id="menu-pins-list"></ul></div><div class="menu-pane-header">Table of Contents</div><div id="menu-toc"><ol class="toc"><li><span class="item-toggle-none"></span><a href="./#sec-intro" title="Introduction">Introduction</a></li><li><span class="item-toggle-none"></span><a href="scope.html#sec-scope" title="Scope"><span class="secnum">1</span> Scope</a></li><li><span class="item-toggle">+</span><a href="conformance.html#sec-conformance" title="Conformance"><span class="secnum">2</span> Conformance</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="conformance.html#sec-conformance-normative-optional" title="Example Normative Optional Clause Heading"><span class="secnum">2.1</span> Example Normative Optional Clause Heading</a></li><li><span class="item-toggle-none"></span><a href="conformance.html#sec-conformance-legacy" title="Example Legacy Clause Heading"><span class="secnum">2.2</span> Example Legacy Clause Heading</a></li><li><span class="item-toggle-none"></span><a href="conformance.html#sec-conformance-legacy-normative-optional" title="Example Legacy Normative Optional Clause Heading"><span class="secnum">2.3</span> Example Legacy Normative Optional Clause Heading</a></li></ol></li><li><span class="item-toggle-none"></span><a href="normative-references.html#sec-normative-references" title="Normative References"><span class="secnum">3</span> Normative References</a></li><li><span class="item-toggle">+</span><a href="overview.html#sec-overview" title="Overview"><span class="secnum">4</span> Overview</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="overview.html#sec-web-scripting" title="Web Scripting"><span class="secnum">4.1</span> Web Scripting</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-hosts-and-implementations" title="Hosts and Implementations"><span class="secnum">4.2</span> Hosts and Implementations</a></li><li><span class="item-toggle">+</span><a href="overview.html#sec-ecmascript-overview" title="ECMAScript Overview"><span class="secnum">4.3</span> ECMAScript Overview</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="overview.html#sec-objects" title="Objects"><span class="secnum">4.3.1</span> Objects</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-strict-variant-of-ecmascript" title="The Strict Variant of ECMAScript"><span class="secnum">4.3.2</span> The Strict Variant of ECMAScript</a></li></ol></li><li><span class="item-toggle">+</span><a href="overview.html#sec-terms-and-definitions" title="Terms and Definitions"><span class="secnum">4.4</span> Terms and Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-implementation-approximated" title="implementation-approximated"><span class="secnum">4.4.1</span> implementation-approximated</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-implementation-defined" title="implementation-defined"><span class="secnum">4.4.2</span> implementation-defined</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-host-defined" title="host-defined"><span class="secnum">4.4.3</span> host-defined</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-type" title="type"><span class="secnum">4.4.4</span> type</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-primitive-value" title="primitive value"><span class="secnum">4.4.5</span> primitive value</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-object" title="object"><span class="secnum">4.4.6</span> object</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-constructor" title="constructor"><span class="secnum">4.4.7</span> constructor</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-prototype" title="prototype"><span class="secnum">4.4.8</span> prototype</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-ordinary-object" title="ordinary object"><span class="secnum">4.4.9</span> ordinary object</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-exotic-object" title="exotic object"><span class="secnum">4.4.10</span> exotic object</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-standard-object" title="standard object"><span class="secnum">4.4.11</span> standard object</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-built-in-object" title="built-in object"><span class="secnum">4.4.12</span> built-in object</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-undefined-value" title="undefined value"><span class="secnum">4.4.13</span> undefined value</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-undefined-type" title="Undefined type"><span class="secnum">4.4.14</span> Undefined type</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-null-value" title="null value"><span class="secnum">4.4.15</span> null value</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-null-type" title="Null type"><span class="secnum">4.4.16</span> Null type</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-boolean-value" title="Boolean value"><span class="secnum">4.4.17</span> Boolean value</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-boolean-type" title="Boolean type"><span class="secnum">4.4.18</span> Boolean type</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-boolean-object" title="Boolean object"><span class="secnum">4.4.19</span> Boolean object</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-string-value" title="String value"><span class="secnum">4.4.20</span> String value</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-string-type" title="String type"><span class="secnum">4.4.21</span> String type</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-string-object" title="String object"><span class="secnum">4.4.22</span> String object</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-number-value" title="Number value"><span class="secnum">4.4.23</span> Number value</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-number-type" title="Number type"><span class="secnum">4.4.24</span> Number type</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-number-object" title="Number object"><span class="secnum">4.4.25</span> Number object</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-infinity" title="Infinity"><span class="secnum">4.4.26</span> Infinity</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-nan" title="NaN"><span class="secnum">4.4.27</span> NaN</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-bigint-value" title="BigInt value"><span class="secnum">4.4.28</span> BigInt value</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-bigint-type" title="BigInt type"><span class="secnum">4.4.29</span> BigInt type</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-bigint-object" title="BigInt object"><span class="secnum">4.4.30</span> BigInt object</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-symbol-value" title="Symbol value"><span class="secnum">4.4.31</span> Symbol value</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-symbol-type" title="Symbol type"><span class="secnum">4.4.32</span> Symbol type</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-symbol-object" title="Symbol object"><span class="secnum">4.4.33</span> Symbol object</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-terms-and-definitions-function" title="function"><span class="secnum">4.4.34</span> function</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-built-in-function" title="built-in function"><span class="secnum">4.4.35</span> built-in function</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-built-in-constructor" title="built-in constructor"><span class="secnum">4.4.36</span> built-in constructor</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-property" title="property"><span class="secnum">4.4.37</span> property</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-method" title="method"><span class="secnum">4.4.38</span> method</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-built-in-method" title="built-in method"><span class="secnum">4.4.39</span> built-in method</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-attribute" title="attribute"><span class="secnum">4.4.40</span> attribute</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-own-property" title="own property"><span class="secnum">4.4.41</span> own property</a></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-inherited-property" title="inherited property"><span class="secnum">4.4.42</span> inherited property</a></li></ol></li><li><span class="item-toggle-none"></span><a href="overview.html#sec-organization-of-this-specification" title="Organization of This Specification"><span class="secnum">4.5</span> Organization of This Specification</a></li></ol></li><li><span class="item-toggle">+</span><a href="notational-conventions.html#sec-notational-conventions" title="Notational Conventions"><span class="secnum">5</span> Notational Conventions</a><ol class="toc"><li><span class="item-toggle">+</span><a href="notational-conventions.html#sec-syntactic-and-lexical-grammars" title="Syntactic and Lexical Grammars"><span class="secnum">5.1</span> Syntactic and Lexical Grammars</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-context-free-grammars" title="Context-Free Grammars"><span class="secnum">5.1.1</span> Context-Free Grammars</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-lexical-and-regexp-grammars" title="The Lexical and RegExp Grammars"><span class="secnum">5.1.2</span> The Lexical and RegExp Grammars</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-numeric-string-grammar" title="The Numeric String Grammar"><span class="secnum">5.1.3</span> The Numeric String Grammar</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-syntactic-grammar" title="The Syntactic Grammar"><span class="secnum">5.1.4</span> The Syntactic Grammar</a></li><li><span class="item-toggle">+</span><a href="notational-conventions.html#sec-grammar-notation" title="Grammar Notation"><span class="secnum">5.1.5</span> Grammar Notation</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-terminal-symbols" title="Terminal Symbols"><span class="secnum">5.1.5.1</span> Terminal Symbols</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-nonterminal-symbols-and-productions" title="Nonterminal Symbols and Productions"><span class="secnum">5.1.5.2</span> Nonterminal Symbols and Productions</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-optional-symbols" title="Optional Symbols"><span class="secnum">5.1.5.3</span> Optional Symbols</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-grammatical-parameters" title="Grammatical Parameters"><span class="secnum">5.1.5.4</span> Grammatical Parameters</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-one-of" title="one of"><span class="secnum">5.1.5.5</span> one of</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-empty" title="[empty]"><span class="secnum">5.1.5.6</span> [empty]</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-lookahead-restrictions" title="Lookahead Restrictions"><span class="secnum">5.1.5.7</span> Lookahead Restrictions</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-no-lineterminator-here" title="[no LineTerminator here]"><span class="secnum">5.1.5.8</span> [no <emu-nt>LineTerminator</emu-nt> here]</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-but-not" title="but not"><span class="secnum">5.1.5.9</span> but not</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-descriptive-phrases" title="Descriptive Phrases"><span class="secnum">5.1.5.10</span> Descriptive Phrases</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="notational-conventions.html#sec-algorithm-conventions" title="Algorithm Conventions"><span class="secnum">5.2</span> Algorithm Conventions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-algorithm-conventions-abstract-operations" title="Abstract Operations"><span class="secnum">5.2.1</span> Abstract Operations</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations" title="Syntax-Directed Operations"><span class="secnum">5.2.2</span> Syntax-Directed Operations</a></li><li><span class="item-toggle">+</span><a href="notational-conventions.html#sec-runtime-semantics" title="Runtime Semantics"><span class="secnum">5.2.3</span> Runtime Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-completion-ao" title="Completion ( completionRecord )"><span class="secnum">5.2.3.1</span> Completion ( <var>completionRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-throw-an-exception" title="Throw an Exception"><span class="secnum">5.2.3.2</span> Throw an Exception</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-returnifabrupt" title="ReturnIfAbrupt"><span class="secnum">5.2.3.3</span> ReturnIfAbrupt</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-returnifabrupt-shorthands" title="ReturnIfAbrupt Shorthands"><span class="secnum">5.2.3.4</span> ReturnIfAbrupt Shorthands</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-implicit-normal-completion" title="Implicit Normal Completion"><span class="secnum">5.2.3.5</span> Implicit Normal Completion</a></li></ol></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-static-semantic-rules" title="Static Semantics"><span class="secnum">5.2.4</span> Static Semantics</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-mathematical-operations" title="Mathematical Operations"><span class="secnum">5.2.5</span> Mathematical Operations</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-value-notation" title="Value Notation"><span class="secnum">5.2.6</span> Value Notation</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-identity" title="Identity"><span class="secnum">5.2.7</span> Identity</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-ecmascript-data-types-and-values" title="ECMAScript Data Types and Values"><span class="secnum">6</span> ECMAScript Data Types and Values</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types" title="ECMAScript Language Types"><span class="secnum">6.1</span> ECMAScript Language Types</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-undefined-type" title="The Undefined Type"><span class="secnum">6.1.1</span> The Undefined Type</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-null-type" title="The Null Type"><span class="secnum">6.1.2</span> The Null Type</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-boolean-type" title="The Boolean Type"><span class="secnum">6.1.3</span> The Boolean Type</a></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-string-type" title="The String Type"><span class="secnum">6.1.4</span> The String Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-stringindexof" title="StringIndexOf ( string, searchValue, fromIndex )"><span class="secnum">6.1.4.1</span> StringIndexOf ( <var>string</var>, <var>searchValue</var>, <var>fromIndex</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-stringlastindexof" title="StringLastIndexOf ( string, searchValue, fromIndex )"><span class="secnum">6.1.4.2</span> StringLastIndexOf ( <var>string</var>, <var>searchValue</var>, <var>fromIndex</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-symbol-type" title="The Symbol Type"><span class="secnum">6.1.5</span> The Symbol Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols" title="Well-Known Symbols"><span class="secnum">6.1.5.1</span> Well-Known Symbols</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-numeric-types" title="Numeric Types"><span class="secnum">6.1.6</span> Numeric Types</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-number-type" title="The Number Type"><span class="secnum">6.1.6.1</span> The Number Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-unaryMinus" title="Number::unaryMinus ( x )"><span class="secnum">6.1.6.1.1</span> Number::unaryMinus ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-bitwiseNOT" title="Number::bitwiseNOT ( x )"><span class="secnum">6.1.6.1.2</span> Number::bitwiseNOT ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-exponentiate" title="Number::exponentiate ( base, exponent )"><span class="secnum">6.1.6.1.3</span> Number::exponentiate ( <var>base</var>, <var>exponent</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-multiply" title="Number::multiply ( x, y )"><span class="secnum">6.1.6.1.4</span> Number::multiply ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-divide" title="Number::divide ( x, y )"><span class="secnum">6.1.6.1.5</span> Number::divide ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-remainder" title="Number::remainder ( n, d )"><span class="secnum">6.1.6.1.6</span> Number::remainder ( <var>n</var>, <var>d</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-add" title="Number::add ( x, y )"><span class="secnum">6.1.6.1.7</span> Number::add ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-subtract" title="Number::subtract ( x, y )"><span class="secnum">6.1.6.1.8</span> Number::subtract ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-leftShift" title="Number::leftShift ( x, y )"><span class="secnum">6.1.6.1.9</span> Number::leftShift ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-signedRightShift" title="Number::signedRightShift ( x, y )"><span class="secnum">6.1.6.1.10</span> Number::signedRightShift ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-unsignedRightShift" title="Number::unsignedRightShift ( x, y )"><span class="secnum">6.1.6.1.11</span> Number::unsignedRightShift ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-lessThan" title="Number::lessThan ( x, y )"><span class="secnum">6.1.6.1.12</span> Number::lessThan ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-equal" title="Number::equal ( x, y )"><span class="secnum">6.1.6.1.13</span> Number::equal ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-sameValue" title="Number::sameValue ( x, y )"><span class="secnum">6.1.6.1.14</span> Number::sameValue ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-sameValueZero" title="Number::sameValueZero ( x, y )"><span class="secnum">6.1.6.1.15</span> Number::sameValueZero ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numberbitwiseop" title="NumberBitwiseOp ( op, x, y )"><span class="secnum">6.1.6.1.16</span> NumberBitwiseOp ( <var>op</var>, <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-bitwiseAND" title="Number::bitwiseAND ( x, y )"><span class="secnum">6.1.6.1.17</span> Number::bitwiseAND ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-bitwiseXOR" title="Number::bitwiseXOR ( x, y )"><span class="secnum">6.1.6.1.18</span> Number::bitwiseXOR ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-bitwiseOR" title="Number::bitwiseOR ( x, y )"><span class="secnum">6.1.6.1.19</span> Number::bitwiseOR ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-tostring" title="Number::toString ( x, radix )"><span class="secnum">6.1.6.1.20</span> Number::toString ( <var>x</var>, <var>radix</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-bigint-type" title="The BigInt Type"><span class="secnum">6.1.6.2</span> The BigInt Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-unaryMinus" title="BigInt::unaryMinus ( x )"><span class="secnum">6.1.6.2.1</span> BigInt::unaryMinus ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-bitwiseNOT" title="BigInt::bitwiseNOT ( x )"><span class="secnum">6.1.6.2.2</span> BigInt::bitwiseNOT ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-exponentiate" title="BigInt::exponentiate ( base, exponent )"><span class="secnum">6.1.6.2.3</span> BigInt::exponentiate ( <var>base</var>, <var>exponent</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-multiply" title="BigInt::multiply ( x, y )"><span class="secnum">6.1.6.2.4</span> BigInt::multiply ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-divide" title="BigInt::divide ( x, y )"><span class="secnum">6.1.6.2.5</span> BigInt::divide ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-remainder" title="BigInt::remainder ( n, d )"><span class="secnum">6.1.6.2.6</span> BigInt::remainder ( <var>n</var>, <var>d</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-add" title="BigInt::add ( x, y )"><span class="secnum">6.1.6.2.7</span> BigInt::add ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-subtract" title="BigInt::subtract ( x, y )"><span class="secnum">6.1.6.2.8</span> BigInt::subtract ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-leftShift" title="BigInt::leftShift ( x, y )"><span class="secnum">6.1.6.2.9</span> BigInt::leftShift ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-signedRightShift" title="BigInt::signedRightShift ( x, y )"><span class="secnum">6.1.6.2.10</span> BigInt::signedRightShift ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-unsignedRightShift" title="BigInt::unsignedRightShift ( x, y )"><span class="secnum">6.1.6.2.11</span> BigInt::unsignedRightShift ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-lessThan" title="BigInt::lessThan ( x, y )"><span class="secnum">6.1.6.2.12</span> BigInt::lessThan ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-equal" title="BigInt::equal ( x, y )"><span class="secnum">6.1.6.2.13</span> BigInt::equal ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-binaryand" title="BinaryAnd ( x, y )"><span class="secnum">6.1.6.2.14</span> BinaryAnd ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-binaryor" title="BinaryOr ( x, y )"><span class="secnum">6.1.6.2.15</span> BinaryOr ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-binaryxor" title="BinaryXor ( x, y )"><span class="secnum">6.1.6.2.16</span> BinaryXor ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-bigintbitwiseop" title="BigIntBitwiseOp ( op, x, y )"><span class="secnum">6.1.6.2.17</span> BigIntBitwiseOp ( <var>op</var>, <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-bitwiseAND" title="BigInt::bitwiseAND ( x, y )"><span class="secnum">6.1.6.2.18</span> BigInt::bitwiseAND ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-bitwiseXOR" title="BigInt::bitwiseXOR ( x, y )"><span class="secnum">6.1.6.2.19</span> BigInt::bitwiseXOR ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-bitwiseOR" title="BigInt::bitwiseOR ( x, y )"><span class="secnum">6.1.6.2.20</span> BigInt::bitwiseOR ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-numeric-types-bigint-tostring" title="BigInt::toString ( x, radix )"><span class="secnum">6.1.6.2.21</span> BigInt::toString ( <var>x</var>, <var>radix</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-object-type" title="The Object Type"><span class="secnum">6.1.7</span> The Object Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-property-attributes" title="Property Attributes"><span class="secnum">6.1.7.1</span> Property Attributes</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-object-internal-methods-and-internal-slots" title="Object Internal Methods and Internal Slots"><span class="secnum">6.1.7.2</span> Object Internal Methods and Internal Slots</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-invariants-of-the-essential-internal-methods" title="Invariants of the Essential Internal Methods"><span class="secnum">6.1.7.3</span> Invariants of the Essential Internal Methods</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-well-known-intrinsic-objects" title="Well-Known Intrinsic Objects"><span class="secnum">6.1.7.4</span> Well-Known Intrinsic Objects</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-ecmascript-specification-types" title="ECMAScript Specification Types"><span class="secnum">6.2</span> ECMAScript Specification Types</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-enum-specification-type" title="The Enum Specification Type"><span class="secnum">6.2.1</span> The Enum Specification Type</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type" title="The List and Record Specification Types"><span class="secnum">6.2.2</span> The List and Record Specification Types</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-set-and-relation-specification-type" title="The Set and Relation Specification Types"><span class="secnum">6.2.3</span> The Set and Relation Specification Types</a></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type" title="The Completion Record Specification Type"><span class="secnum">6.2.4</span> The Completion Record Specification Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-normalcompletion" title="NormalCompletion ( value )"><span class="secnum">6.2.4.1</span> NormalCompletion ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-throwcompletion" title="ThrowCompletion ( value )"><span class="secnum">6.2.4.2</span> ThrowCompletion ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-returncompletion" title="ReturnCompletion ( value )"><span class="secnum">6.2.4.3</span> ReturnCompletion ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-updateempty" title="UpdateEmpty ( completionRecord, value )"><span class="secnum">6.2.4.4</span> UpdateEmpty ( <var>completionRecord</var>, <var>value</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-reference-record-specification-type" title="The Reference Record Specification Type"><span class="secnum">6.2.5</span> The Reference Record Specification Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-ispropertyreference" title="IsPropertyReference ( V )"><span class="secnum">6.2.5.1</span> IsPropertyReference ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-isunresolvablereference" title="IsUnresolvableReference ( V )"><span class="secnum">6.2.5.2</span> IsUnresolvableReference ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-issuperreference" title="IsSuperReference ( V )"><span class="secnum">6.2.5.3</span> IsSuperReference ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-isprivatereference" title="IsPrivateReference ( V )"><span class="secnum">6.2.5.4</span> IsPrivateReference ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-getvalue" title="GetValue ( V )"><span class="secnum">6.2.5.5</span> GetValue ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-putvalue" title="PutValue ( V, W )"><span class="secnum">6.2.5.6</span> PutValue ( <var>V</var>, <var>W</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-getthisvalue" title="GetThisValue ( V )"><span class="secnum">6.2.5.7</span> GetThisValue ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-initializereferencedbinding" title="InitializeReferencedBinding ( V, W )"><span class="secnum">6.2.5.8</span> InitializeReferencedBinding ( <var>V</var>, <var>W</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-makeprivatereference" title="MakePrivateReference ( baseValue, privateIdentifier )"><span class="secnum">6.2.5.9</span> MakePrivateReference ( <var>baseValue</var>, <var>privateIdentifier</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-property-descriptor-specification-type" title="The Property Descriptor Specification Type"><span class="secnum">6.2.6</span> The Property Descriptor Specification Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-isaccessordescriptor" title="IsAccessorDescriptor ( Desc )"><span class="secnum">6.2.6.1</span> IsAccessorDescriptor ( <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-isdatadescriptor" title="IsDataDescriptor ( Desc )"><span class="secnum">6.2.6.2</span> IsDataDescriptor ( <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-isgenericdescriptor" title="IsGenericDescriptor ( Desc )"><span class="secnum">6.2.6.3</span> IsGenericDescriptor ( <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-frompropertydescriptor" title="FromPropertyDescriptor ( Desc )"><span class="secnum">6.2.6.4</span> FromPropertyDescriptor ( <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-topropertydescriptor" title="ToPropertyDescriptor ( Obj )"><span class="secnum">6.2.6.5</span> ToPropertyDescriptor ( <var>Obj</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-completepropertydescriptor" title="CompletePropertyDescriptor ( Desc )"><span class="secnum">6.2.6.6</span> CompletePropertyDescriptor ( <var>Desc</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-lexical-environment-and-environment-record-specification-types" title="The Environment Record Specification Type"><span class="secnum">6.2.7</span> The Environment Record Specification Type</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-abstract-closure" title="The Abstract Closure Specification Type"><span class="secnum">6.2.8</span> The Abstract Closure Specification Type</a></li><li><span class="item-toggle">+</span><a href="ecmascript-data-types-and-values.html#sec-data-blocks" title="Data Blocks"><span class="secnum">6.2.9</span> Data Blocks</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-createbytedatablock" title="CreateByteDataBlock ( size )"><span class="secnum">6.2.9.1</span> CreateByteDataBlock ( <var>size</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-createsharedbytedatablock" title="CreateSharedByteDataBlock ( size )"><span class="secnum">6.2.9.2</span> CreateSharedByteDataBlock ( <var>size</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-copydatablockbytes" title="CopyDataBlockBytes ( toBlock, toIndex, fromBlock, fromIndex, count )"><span class="secnum">6.2.9.3</span> CopyDataBlockBytes ( <var>toBlock</var>, <var>toIndex</var>, <var>fromBlock</var>, <var>fromIndex</var>, <var>count</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-privateelement-specification-type" title="The PrivateElement Specification Type"><span class="secnum">6.2.10</span> The PrivateElement Specification Type</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-classfielddefinition-record-specification-type" title="The ClassFieldDefinition Record Specification Type"><span class="secnum">6.2.11</span> The ClassFieldDefinition Record Specification Type</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-private-names" title="Private Names"><span class="secnum">6.2.12</span> Private Names</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-data-types-and-values.html#sec-classstaticblockdefinition-record-specification-type" title="The ClassStaticBlockDefinition Record Specification Type"><span class="secnum">6.2.13</span> The ClassStaticBlockDefinition Record Specification Type</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="abstract-operations.html#sec-abstract-operations" title="Abstract Operations"><span class="secnum">7</span> Abstract Operations</a><ol class="toc"><li><span class="item-toggle">+</span><a href="abstract-operations.html#sec-type-conversion" title="Type Conversion"><span class="secnum">7.1</span> Type Conversion</a><ol class="toc"><li><span class="item-toggle">+</span><a href="abstract-operations.html#sec-toprimitive" title="ToPrimitive ( input [ , preferredType ] )"><span class="secnum">7.1.1</span> ToPrimitive ( <var>input</var> [ , <var>preferredType</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-ordinarytoprimitive" title="OrdinaryToPrimitive ( O, hint )"><span class="secnum">7.1.1.1</span> OrdinaryToPrimitive ( <var>O</var>, <var>hint</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-toboolean" title="ToBoolean ( argument )"><span class="secnum">7.1.2</span> ToBoolean ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-tonumeric" title="ToNumeric ( value )"><span class="secnum">7.1.3</span> ToNumeric ( <var>value</var> )</a></li><li><span class="item-toggle">+</span><a href="abstract-operations.html#sec-tonumber" title="ToNumber ( argument )"><span class="secnum">7.1.4</span> ToNumber ( <var>argument</var> )</a><ol class="toc"><li><span class="item-toggle">+</span><a href="abstract-operations.html#sec-tonumber-applied-to-the-string-type" title="ToNumber Applied to the String Type"><span class="secnum">7.1.4.1</span> ToNumber Applied to the String Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-stringtonumber" title="StringToNumber ( str )"><span class="secnum">7.1.4.1.1</span> StringToNumber ( <var>str</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-runtime-semantics-stringnumericvalue" title="Runtime Semantics: StringNumericValue"><span class="secnum">7.1.4.1.2</span> RS: StringNumericValue</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-roundmvresult" title="RoundMVResult ( n )"><span class="secnum">7.1.4.1.3</span> RoundMVResult ( <var>n</var> )</a></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-tointegerorinfinity" title="ToIntegerOrInfinity ( argument )"><span class="secnum">7.1.5</span> ToIntegerOrInfinity ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-toint32" title="ToInt32 ( argument )"><span class="secnum">7.1.6</span> ToInt32 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-touint32" title="ToUint32 ( argument )"><span class="secnum">7.1.7</span> ToUint32 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-toint16" title="ToInt16 ( argument )"><span class="secnum">7.1.8</span> ToInt16 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-touint16" title="ToUint16 ( argument )"><span class="secnum">7.1.9</span> ToUint16 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-toint8" title="ToInt8 ( argument )"><span class="secnum">7.1.10</span> ToInt8 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-touint8" title="ToUint8 ( argument )"><span class="secnum">7.1.11</span> ToUint8 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-touint8clamp" title="ToUint8Clamp ( argument )"><span class="secnum">7.1.12</span> ToUint8Clamp ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-tobigint" title="ToBigInt ( argument )"><span class="secnum">7.1.13</span> ToBigInt ( <var>argument</var> )</a></li><li><span class="item-toggle">+</span><a href="abstract-operations.html#sec-stringtobigint" title="StringToBigInt ( str )"><span class="secnum">7.1.14</span> StringToBigInt ( <var>str</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-stringintegerliteral-grammar" title="StringIntegerLiteral Grammar"><span class="secnum">7.1.14.1</span> StringIntegerLiteral Grammar</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-runtime-semantics-mv-for-stringintegerliteral" title="Runtime Semantics: MV"><span class="secnum">7.1.14.2</span> RS: MV</a></li></ol></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-tobigint64" title="ToBigInt64 ( argument )"><span class="secnum">7.1.15</span> ToBigInt64 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-tobiguint64" title="ToBigUint64 ( argument )"><span class="secnum">7.1.16</span> ToBigUint64 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-tostring" title="ToString ( argument )"><span class="secnum">7.1.17</span> ToString ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-toobject" title="ToObject ( argument )"><span class="secnum">7.1.18</span> ToObject ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-topropertykey" title="ToPropertyKey ( argument )"><span class="secnum">7.1.19</span> ToPropertyKey ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-tolength" title="ToLength ( argument )"><span class="secnum">7.1.20</span> ToLength ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-canonicalnumericindexstring" title="CanonicalNumericIndexString ( argument )"><span class="secnum">7.1.21</span> CanonicalNumericIndexString ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-toindex" title="ToIndex ( value )"><span class="secnum">7.1.22</span> ToIndex ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="abstract-operations.html#sec-testing-and-comparison-operations" title="Testing and Comparison Operations"><span class="secnum">7.2</span> Testing and Comparison Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-requireobjectcoercible" title="RequireObjectCoercible ( argument )"><span class="secnum">7.2.1</span> RequireObjectCoercible ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-isarray" title="IsArray ( argument )"><span class="secnum">7.2.2</span> IsArray ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-iscallable" title="IsCallable ( argument )"><span class="secnum">7.2.3</span> IsCallable ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-isconstructor" title="IsConstructor ( argument )"><span class="secnum">7.2.4</span> IsConstructor ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-isextensible-o" title="IsExtensible ( O )"><span class="secnum">7.2.5</span> IsExtensible ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-isregexp" title="IsRegExp ( argument )"><span class="secnum">7.2.6</span> IsRegExp ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-isstringwellformedunicode" title="Static Semantics: IsStringWellFormedUnicode ( string )"><span class="secnum">7.2.7</span> SS: IsStringWellFormedUnicode ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-sametype" title="SameType ( x, y )"><span class="secnum">7.2.8</span> SameType ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-samevalue" title="SameValue ( x, y )"><span class="secnum">7.2.9</span> SameValue ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-samevaluezero" title="SameValueZero ( x, y )"><span class="secnum">7.2.10</span> SameValueZero ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-samevaluenonnumber" title="SameValueNonNumber ( x, y )"><span class="secnum">7.2.11</span> SameValueNonNumber ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-islessthan" title="IsLessThan ( x, y, LeftFirst )"><span class="secnum">7.2.12</span> IsLessThan ( <var>x</var>, <var>y</var>, <var>LeftFirst</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-islooselyequal" title="IsLooselyEqual ( x, y )"><span class="secnum">7.2.13</span> IsLooselyEqual ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-isstrictlyequal" title="IsStrictlyEqual ( x, y )"><span class="secnum">7.2.14</span> IsStrictlyEqual ( <var>x</var>, <var>y</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="abstract-operations.html#sec-operations-on-objects" title="Operations on Objects"><span class="secnum">7.3</span> Operations on Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-makebasicobject" title="MakeBasicObject ( internalSlotsList )"><span class="secnum">7.3.1</span> MakeBasicObject ( <var>internalSlotsList</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-get-o-p" title="Get ( O, P )"><span class="secnum">7.3.2</span> Get ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-getv" title="GetV ( V, P )"><span class="secnum">7.3.3</span> GetV ( <var>V</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-set-o-p-v-throw" title="Set ( O, P, V, Throw )"><span class="secnum">7.3.4</span> Set ( <var>O</var>, <var>P</var>, <var>V</var>, <var>Throw</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-createdataproperty" title="CreateDataProperty ( O, P, V )"><span class="secnum">7.3.5</span> CreateDataProperty ( <var>O</var>, <var>P</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-createdatapropertyorthrow" title="CreateDataPropertyOrThrow ( O, P, V )"><span class="secnum">7.3.6</span> CreateDataPropertyOrThrow ( <var>O</var>, <var>P</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-createnonenumerabledatapropertyorthrow" title="CreateNonEnumerableDataPropertyOrThrow ( O, P, V )"><span class="secnum">7.3.7</span> CreateNonEnumerableDataPropertyOrThrow ( <var>O</var>, <var>P</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-definepropertyorthrow" title="DefinePropertyOrThrow ( O, P, desc )"><span class="secnum">7.3.8</span> DefinePropertyOrThrow ( <var>O</var>, <var>P</var>, <var>desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-deletepropertyorthrow" title="DeletePropertyOrThrow ( O, P )"><span class="secnum">7.3.9</span> DeletePropertyOrThrow ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-getmethod" title="GetMethod ( V, P )"><span class="secnum">7.3.10</span> GetMethod ( <var>V</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-hasproperty" title="HasProperty ( O, P )"><span class="secnum">7.3.11</span> HasProperty ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-hasownproperty" title="HasOwnProperty ( O, P )"><span class="secnum">7.3.12</span> HasOwnProperty ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-call" title="Call ( F, V [ , argumentsList ] )"><span class="secnum">7.3.13</span> Call ( <var>F</var>, <var>V</var> [ , <var>argumentsList</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-construct" title="Construct ( F [ , argumentsList [ , newTarget ] ] )"><span class="secnum">7.3.14</span> Construct ( <var>F</var> [ , <var>argumentsList</var> [ , <var>newTarget</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-setintegritylevel" title="SetIntegrityLevel ( O, level )"><span class="secnum">7.3.15</span> SetIntegrityLevel ( <var>O</var>, <var>level</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-testintegritylevel" title="TestIntegrityLevel ( O, level )"><span class="secnum">7.3.16</span> TestIntegrityLevel ( <var>O</var>, <var>level</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-createarrayfromlist" title="CreateArrayFromList ( elements )"><span class="secnum">7.3.17</span> CreateArrayFromList ( <var>elements</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-lengthofarraylike" title="LengthOfArrayLike ( obj )"><span class="secnum">7.3.18</span> LengthOfArrayLike ( <var>obj</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-createlistfromarraylike" title="CreateListFromArrayLike ( obj [ , validElementTypes ] )"><span class="secnum">7.3.19</span> CreateListFromArrayLike ( <var>obj</var> [ , <var>validElementTypes</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-invoke" title="Invoke ( V, P [ , argumentsList ] )"><span class="secnum">7.3.20</span> Invoke ( <var>V</var>, <var>P</var> [ , <var>argumentsList</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-ordinaryhasinstance" title="OrdinaryHasInstance ( C, O )"><span class="secnum">7.3.21</span> OrdinaryHasInstance ( <var>C</var>, <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-speciesconstructor" title="SpeciesConstructor ( O, defaultConstructor )"><span class="secnum">7.3.22</span> SpeciesConstructor ( <var>O</var>, <var>defaultConstructor</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-enumerableownproperties" title="EnumerableOwnProperties ( O, kind )"><span class="secnum">7.3.23</span> EnumerableOwnProperties ( <var>O</var>, <var>kind</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-getfunctionrealm" title="GetFunctionRealm ( obj )"><span class="secnum">7.3.24</span> GetFunctionRealm ( <var>obj</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-copydataproperties" title="CopyDataProperties ( target, source, excludedItems )"><span class="secnum">7.3.25</span> CopyDataProperties ( <var>target</var>, <var>source</var>, <var>excludedItems</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-privateelementfind" title="PrivateElementFind ( O, P )"><span class="secnum">7.3.26</span> PrivateElementFind ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-privatefieldadd" title="PrivateFieldAdd ( O, P, value )"><span class="secnum">7.3.27</span> PrivateFieldAdd ( <var>O</var>, <var>P</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-privatemethodoraccessoradd" title="PrivateMethodOrAccessorAdd ( O, method )"><span class="secnum">7.3.28</span> PrivateMethodOrAccessorAdd ( <var>O</var>, <var>method</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-hostensurecanaddprivateelement" title="HostEnsureCanAddPrivateElement ( O )"><span class="secnum">7.3.29</span> HostEnsureCanAddPrivateElement ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-privateget" title="PrivateGet ( O, P )"><span class="secnum">7.3.30</span> PrivateGet ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-privateset" title="PrivateSet ( O, P, value )"><span class="secnum">7.3.31</span> PrivateSet ( <var>O</var>, <var>P</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-definefield" title="DefineField ( receiver, fieldRecord )"><span class="secnum">7.3.32</span> DefineField ( <var>receiver</var>, <var>fieldRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-initializeinstanceelements" title="InitializeInstanceElements ( O, constructor )"><span class="secnum">7.3.33</span> InitializeInstanceElements ( <var>O</var>, <var>constructor</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-add-value-to-keyed-group" title="AddValueToKeyedGroup ( groups, key, value )"><span class="secnum">7.3.34</span> AddValueToKeyedGroup ( <var>groups</var>, <var>key</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-groupby" title="GroupBy ( items, callback, keyCoercion )"><span class="secnum">7.3.35</span> GroupBy ( <var>items</var>, <var>callback</var>, <var>keyCoercion</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-SetterThatIgnoresPrototypeProperties" title="SetterThatIgnoresPrototypeProperties ( thisValue, home, p, v )"><span class="secnum">7.3.36</span> SetterThatIgnoresPrototypeProperties ( <var>thisValue</var>, <var>home</var>, <var>p</var>, <var>v</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="abstract-operations.html#sec-operations-on-iterator-objects" title="Operations on Iterator Objects"><span class="secnum">7.4</span> Operations on Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-iterator-records" title="Iterator Records"><span class="secnum">7.4.1</span> Iterator Records</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-getiteratordirect" title="GetIteratorDirect ( obj )"><span class="secnum">7.4.2</span> GetIteratorDirect ( <var>obj</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-getiteratorfrommethod" title="GetIteratorFromMethod ( obj, method )"><span class="secnum">7.4.3</span> GetIteratorFromMethod ( <var>obj</var>, <var>method</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-getiterator" title="GetIterator ( obj, kind )"><span class="secnum">7.4.4</span> GetIterator ( <var>obj</var>, <var>kind</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-getiteratorflattenable" title="GetIteratorFlattenable ( obj, primitiveHandling )"><span class="secnum">7.4.5</span> GetIteratorFlattenable ( <var>obj</var>, <var>primitiveHandling</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-iteratornext" title="IteratorNext ( iteratorRecord [ , value ] )"><span class="secnum">7.4.6</span> IteratorNext ( <var>iteratorRecord</var> [ , <var>value</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-iteratorcomplete" title="IteratorComplete ( iteratorResult )"><span class="secnum">7.4.7</span> IteratorComplete ( <var>iteratorResult</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-iteratorvalue" title="IteratorValue ( iteratorResult )"><span class="secnum">7.4.8</span> IteratorValue ( <var>iteratorResult</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-iteratorstep" title="IteratorStep ( iteratorRecord )"><span class="secnum">7.4.9</span> IteratorStep ( <var>iteratorRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-iteratorstepvalue" title="IteratorStepValue ( iteratorRecord )"><span class="secnum">7.4.10</span> IteratorStepValue ( <var>iteratorRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-iteratorclose" title="IteratorClose ( iteratorRecord, completion )"><span class="secnum">7.4.11</span> IteratorClose ( <var>iteratorRecord</var>, <var>completion</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-ifabruptcloseiterator" title="IfAbruptCloseIterator ( value, iteratorRecord )"><span class="secnum">7.4.12</span> IfAbruptCloseIterator ( <var>value</var>, <var>iteratorRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-asynciteratorclose" title="AsyncIteratorClose ( iteratorRecord, completion )"><span class="secnum">7.4.13</span> AsyncIteratorClose ( <var>iteratorRecord</var>, <var>completion</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-createiterresultobject" title="CreateIteratorResultObject ( value, done )"><span class="secnum">7.4.14</span> CreateIteratorResultObject ( <var>value</var>, <var>done</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-createlistiteratorRecord" title="CreateListIteratorRecord ( list )"><span class="secnum">7.4.15</span> CreateListIteratorRecord ( <var>list</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-iteratortolist" title="IteratorToList ( iteratorRecord )"><span class="secnum">7.4.16</span> IteratorToList ( <var>iteratorRecord</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="syntax-directed-operations.html#sec-syntax-directed-operations" title="Syntax-Directed Operations"><span class="secnum">8</span> Syntax-Directed Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">8.1</span> RS: Evaluation</a></li><li><span class="item-toggle">+</span><a href="syntax-directed-operations.html#sec-syntax-directed-operations-scope-analysis" title="Scope Analysis"><span class="secnum">8.2</span> Scope Analysis</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">8.2.1</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-declarationpart" title="Static Semantics: DeclarationPart"><span class="secnum">8.2.2</span> SS: DeclarationPart</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-isconstantdeclaration" title="Static Semantics: IsConstantDeclaration"><span class="secnum">8.2.3</span> SS: IsConstantDeclaration</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames" title="Static Semantics: LexicallyDeclaredNames"><span class="secnum">8.2.4</span> SS: LexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations" title="Static Semantics: LexicallyScopedDeclarations"><span class="secnum">8.2.5</span> SS: LexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">8.2.6</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">8.2.7</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallydeclarednames" title="Static Semantics: TopLevelLexicallyDeclaredNames"><span class="secnum">8.2.8</span> SS: TopLevelLexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-toplevellexicallyscopeddeclarations" title="Static Semantics: TopLevelLexicallyScopedDeclarations"><span class="secnum">8.2.9</span> SS: TopLevelLexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvardeclarednames" title="Static Semantics: TopLevelVarDeclaredNames"><span class="secnum">8.2.10</span> SS: TopLevelVarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-toplevelvarscopeddeclarations" title="Static Semantics: TopLevelVarScopedDeclarations"><span class="secnum">8.2.11</span> SS: TopLevelVarScopedDeclarations</a></li></ol></li><li><span class="item-toggle">+</span><a href="syntax-directed-operations.html#sec-syntax-directed-operations-labels" title="Labels"><span class="secnum">8.3</span> Labels</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">8.3.1</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">8.3.2</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">8.3.3</span> SS: ContainsUndefinedContinueTarget</a></li></ol></li><li><span class="item-toggle">+</span><a href="syntax-directed-operations.html#sec-syntax-directed-operations-function-name-inference" title="Function Name Inference"><span class="secnum">8.4</span> Function Name Inference</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-hasname" title="Static Semantics: HasName"><span class="secnum">8.4.1</span> SS: HasName</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">8.4.2</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-isanonymousfunctiondefinition" title="Static Semantics: IsAnonymousFunctionDefinition ( expr )"><span class="secnum">8.4.3</span> SS: IsAnonymousFunctionDefinition ( <var>expr</var> )</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-isidentifierref" title="Static Semantics: IsIdentifierRef"><span class="secnum">8.4.4</span> SS: IsIdentifierRef</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-runtime-semantics-namedevaluation" title="Runtime Semantics: NamedEvaluation"><span class="secnum">8.4.5</span> RS: NamedEvaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="syntax-directed-operations.html#sec-syntax-directed-operations-contains" title="Contains"><span class="secnum">8.5</span> Contains</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-contains" title="Static Semantics: Contains"><span class="secnum">8.5.1</span> SS: Contains</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-computedpropertycontains" title="Static Semantics: ComputedPropertyContains"><span class="secnum">8.5.2</span> SS: ComputedPropertyContains</a></li></ol></li><li><span class="item-toggle">+</span><a href="syntax-directed-operations.html#sec-syntax-directed-operations-miscellaneous" title="Miscellaneous"><span class="secnum">8.6</span> Miscellaneous</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-runtime-semantics-instantiatefunctionobject" title="Runtime Semantics: InstantiateFunctionObject"><span class="secnum">8.6.1</span> RS: InstantiateFunctionObject</a></li><li><span class="item-toggle">+</span><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" title="Runtime Semantics: BindingInitialization"><span class="secnum">8.6.2</span> RS: BindingInitialization</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-initializeboundname" title="InitializeBoundName ( name, value, environment )"><span class="secnum">8.6.2.1</span> InitializeBoundName ( <var>name</var>, <var>value</var>, <var>environment</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-runtime-semantics-iteratorbindinginitialization" title="Runtime Semantics: IteratorBindingInitialization"><span class="secnum">8.6.3</span> RS: IteratorBindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">8.6.4</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="syntax-directed-operations.html#sec-static-semantics-propname" title="Static Semantics: PropName"><span class="secnum">8.6.5</span> SS: PropName</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-executable-code-and-execution-contexts" title="Executable Code and Execution Contexts"><span class="secnum">9</span> Executable Code and Execution Contexts</a><ol class="toc"><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-environment-records" title="Environment Records"><span class="secnum">9.1</span> Environment Records</a><ol class="toc"><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-the-environment-record-type-hierarchy" title="The Environment Record Type Hierarchy"><span class="secnum">9.1.1</span> The Environment Record Type Hierarchy</a><ol class="toc"><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records" title="Declarative Environment Records"><span class="secnum">9.1.1.1</span> Declarative Environment Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records-hasbinding-n" title="HasBinding ( N )"><span class="secnum">9.1.1.1.1</span> HasBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records-createmutablebinding-n-d" title="CreateMutableBinding ( N, D )"><span class="secnum">9.1.1.1.2</span> CreateMutableBinding ( <var>N</var>, <var>D</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records-createimmutablebinding-n-s" title="CreateImmutableBinding ( N, S )"><span class="secnum">9.1.1.1.3</span> CreateImmutableBinding ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records-initializebinding-n-v" title="InitializeBinding ( N, V )"><span class="secnum">9.1.1.1.4</span> InitializeBinding ( <var>N</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records-setmutablebinding-n-v-s" title="SetMutableBinding ( N, V, S )"><span class="secnum">9.1.1.1.5</span> SetMutableBinding ( <var>N</var>, <var>V</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records-getbindingvalue-n-s" title="GetBindingValue ( N, S )"><span class="secnum">9.1.1.1.6</span> GetBindingValue ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records-deletebinding-n" title="DeleteBinding ( N )"><span class="secnum">9.1.1.1.7</span> DeleteBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records-hasthisbinding" title="HasThisBinding ( )"><span class="secnum">9.1.1.1.8</span> HasThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records-hassuperbinding" title="HasSuperBinding ( )"><span class="secnum">9.1.1.1.9</span> HasSuperBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records-withbaseobject" title="WithBaseObject ( )"><span class="secnum">9.1.1.1.10</span> WithBaseObject ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records" title="Object Environment Records"><span class="secnum">9.1.1.2</span> Object Environment Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records-hasbinding-n" title="HasBinding ( N )"><span class="secnum">9.1.1.2.1</span> HasBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records-createmutablebinding-n-d" title="CreateMutableBinding ( N, D )"><span class="secnum">9.1.1.2.2</span> CreateMutableBinding ( <var>N</var>, <var>D</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records-createimmutablebinding-n-s" title="CreateImmutableBinding ( N, S )"><span class="secnum">9.1.1.2.3</span> CreateImmutableBinding ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records-initializebinding-n-v" title="InitializeBinding ( N, V )"><span class="secnum">9.1.1.2.4</span> InitializeBinding ( <var>N</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records-setmutablebinding-n-v-s" title="SetMutableBinding ( N, V, S )"><span class="secnum">9.1.1.2.5</span> SetMutableBinding ( <var>N</var>, <var>V</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records-getbindingvalue-n-s" title="GetBindingValue ( N, S )"><span class="secnum">9.1.1.2.6</span> GetBindingValue ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records-deletebinding-n" title="DeleteBinding ( N )"><span class="secnum">9.1.1.2.7</span> DeleteBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records-hasthisbinding" title="HasThisBinding ( )"><span class="secnum">9.1.1.2.8</span> HasThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records-hassuperbinding" title="HasSuperBinding ( )"><span class="secnum">9.1.1.2.9</span> HasSuperBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-object-environment-records-withbaseobject" title="WithBaseObject ( )"><span class="secnum">9.1.1.2.10</span> WithBaseObject ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-function-environment-records" title="Function Environment Records"><span class="secnum">9.1.1.3</span> Function Environment Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-bindthisvalue" title="BindThisValue ( V )"><span class="secnum">9.1.1.3.1</span> BindThisValue ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-function-environment-records-hasthisbinding" title="HasThisBinding ( )"><span class="secnum">9.1.1.3.2</span> HasThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-function-environment-records-hassuperbinding" title="HasSuperBinding ( )"><span class="secnum">9.1.1.3.3</span> HasSuperBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-function-environment-records-getthisbinding" title="GetThisBinding ( )"><span class="secnum">9.1.1.3.4</span> GetThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-getsuperbase" title="GetSuperBase ( )"><span class="secnum">9.1.1.3.5</span> GetSuperBase ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records" title="Global Environment Records"><span class="secnum">9.1.1.4</span> Global Environment Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-hasbinding-n" title="HasBinding ( N )"><span class="secnum">9.1.1.4.1</span> HasBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-createmutablebinding-n-d" title="CreateMutableBinding ( N, D )"><span class="secnum">9.1.1.4.2</span> CreateMutableBinding ( <var>N</var>, <var>D</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-createimmutablebinding-n-s" title="CreateImmutableBinding ( N, S )"><span class="secnum">9.1.1.4.3</span> CreateImmutableBinding ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-initializebinding-n-v" title="InitializeBinding ( N, V )"><span class="secnum">9.1.1.4.4</span> InitializeBinding ( <var>N</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-setmutablebinding-n-v-s" title="SetMutableBinding ( N, V, S )"><span class="secnum">9.1.1.4.5</span> SetMutableBinding ( <var>N</var>, <var>V</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-getbindingvalue-n-s" title="GetBindingValue ( N, S )"><span class="secnum">9.1.1.4.6</span> GetBindingValue ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-deletebinding-n" title="DeleteBinding ( N )"><span class="secnum">9.1.1.4.7</span> DeleteBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-hasthisbinding" title="HasThisBinding ( )"><span class="secnum">9.1.1.4.8</span> HasThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-hassuperbinding" title="HasSuperBinding ( )"><span class="secnum">9.1.1.4.9</span> HasSuperBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-withbaseobject" title="WithBaseObject ( )"><span class="secnum">9.1.1.4.10</span> WithBaseObject ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-global-environment-records-getthisbinding" title="GetThisBinding ( )"><span class="secnum">9.1.1.4.11</span> GetThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-hasvardeclaration" title="HasVarDeclaration ( N )"><span class="secnum">9.1.1.4.12</span> HasVarDeclaration ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-haslexicaldeclaration" title="HasLexicalDeclaration ( N )"><span class="secnum">9.1.1.4.13</span> HasLexicalDeclaration ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-hasrestrictedglobalproperty" title="HasRestrictedGlobalProperty ( N )"><span class="secnum">9.1.1.4.14</span> HasRestrictedGlobalProperty ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-candeclareglobalvar" title="CanDeclareGlobalVar ( N )"><span class="secnum">9.1.1.4.15</span> CanDeclareGlobalVar ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-candeclareglobalfunction" title="CanDeclareGlobalFunction ( N )"><span class="secnum">9.1.1.4.16</span> CanDeclareGlobalFunction ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-createglobalvarbinding" title="CreateGlobalVarBinding ( N, D )"><span class="secnum">9.1.1.4.17</span> CreateGlobalVarBinding ( <var>N</var>, <var>D</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-createglobalfunctionbinding" title="CreateGlobalFunctionBinding ( N, V, D )"><span class="secnum">9.1.1.4.18</span> CreateGlobalFunctionBinding ( <var>N</var>, <var>V</var>, <var>D</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-module-environment-records" title="Module Environment Records"><span class="secnum">9.1.1.5</span> Module Environment Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-module-environment-records-getbindingvalue-n-s" title="GetBindingValue ( N, S )"><span class="secnum">9.1.1.5.1</span> GetBindingValue ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-module-environment-records-deletebinding-n" title="DeleteBinding ( N )"><span class="secnum">9.1.1.5.2</span> DeleteBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-module-environment-records-hasthisbinding" title="HasThisBinding ( )"><span class="secnum">9.1.1.5.3</span> HasThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-module-environment-records-getthisbinding" title="GetThisBinding ( )"><span class="secnum">9.1.1.5.4</span> GetThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-createimportbinding" title="CreateImportBinding ( N, M, N2 )"><span class="secnum">9.1.1.5.5</span> CreateImportBinding ( <var>N</var>, <var>M</var>, <var>N2</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-environment-record-operations" title="Environment Record Operations"><span class="secnum">9.1.2</span> Environment Record Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-getidentifierreference" title="GetIdentifierReference ( env, name, strict )"><span class="secnum">9.1.2.1</span> GetIdentifierReference ( <var>env</var>, <var>name</var>, <var>strict</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-newdeclarativeenvironment" title="NewDeclarativeEnvironment ( E )"><span class="secnum">9.1.2.2</span> NewDeclarativeEnvironment ( <var>E</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-newobjectenvironment" title="NewObjectEnvironment ( O, W, E )"><span class="secnum">9.1.2.3</span> NewObjectEnvironment ( <var>O</var>, <var>W</var>, <var>E</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-newfunctionenvironment" title="NewFunctionEnvironment ( F, newTarget )"><span class="secnum">9.1.2.4</span> NewFunctionEnvironment ( <var>F</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-newglobalenvironment" title="NewGlobalEnvironment ( G, thisValue )"><span class="secnum">9.1.2.5</span> NewGlobalEnvironment ( <var>G</var>, <var>thisValue</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-newmoduleenvironment" title="NewModuleEnvironment ( E )"><span class="secnum">9.1.2.6</span> NewModuleEnvironment ( <var>E</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-privateenvironment-records" title="PrivateEnvironment Records"><span class="secnum">9.2</span> PrivateEnvironment Records</a><ol class="toc"><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-privateenvironment-record-operations" title="PrivateEnvironment Record Operations"><span class="secnum">9.2.1</span> PrivateEnvironment Record Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-newprivateenvironment" title="NewPrivateEnvironment ( outerPrivateEnv )"><span class="secnum">9.2.1.1</span> NewPrivateEnvironment ( <var>outerPrivateEnv</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-resolve-private-identifier" title="ResolvePrivateIdentifier ( privateEnv, identifier )"><span class="secnum">9.2.1.2</span> ResolvePrivateIdentifier ( <var>privateEnv</var>, <var>identifier</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-code-realms" title="Realms"><span class="secnum">9.3</span> Realms</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-initializehostdefinedrealm" title="InitializeHostDefinedRealm ( )"><span class="secnum">9.3.1</span> InitializeHostDefinedRealm ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-createintrinsics" title="CreateIntrinsics ( realmRec )"><span class="secnum">9.3.2</span> CreateIntrinsics ( <var>realmRec</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-setdefaultglobalbindings" title="SetDefaultGlobalBindings ( realmRec )"><span class="secnum">9.3.3</span> SetDefaultGlobalBindings ( <var>realmRec</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-execution-contexts" title="Execution Contexts"><span class="secnum">9.4</span> Execution Contexts</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-getactivescriptormodule" title="GetActiveScriptOrModule ( )"><span class="secnum">9.4.1</span> GetActiveScriptOrModule ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-resolvebinding" title="ResolveBinding ( name [ , env ] )"><span class="secnum">9.4.2</span> ResolveBinding ( <var>name</var> [ , <var>env</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-getthisenvironment" title="GetThisEnvironment ( )"><span class="secnum">9.4.3</span> GetThisEnvironment ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-resolvethisbinding" title="ResolveThisBinding ( )"><span class="secnum">9.4.4</span> ResolveThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-getnewtarget" title="GetNewTarget ( )"><span class="secnum">9.4.5</span> GetNewTarget ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-getglobalobject" title="GetGlobalObject ( )"><span class="secnum">9.4.6</span> GetGlobalObject ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-jobs" title="Jobs and Host Operations to Enqueue Jobs"><span class="secnum">9.5</span> Jobs and Host Operations to Enqueue Jobs</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-jobcallback-records" title="JobCallback Records"><span class="secnum">9.5.1</span> JobCallback Records</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-hostmakejobcallback" title="HostMakeJobCallback ( callback )"><span class="secnum">9.5.2</span> HostMakeJobCallback ( <var>callback</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-hostcalljobcallback" title="HostCallJobCallback ( jobCallback, V, argumentsList )"><span class="secnum">9.5.3</span> HostCallJobCallback ( <var>jobCallback</var>, <var>V</var>, <var>argumentsList</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-hostenqueuegenericjob" title="HostEnqueueGenericJob ( job, realm )"><span class="secnum">9.5.4</span> HostEnqueueGenericJob ( <var>job</var>, <var>realm</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-hostenqueuepromisejob" title="HostEnqueuePromiseJob ( job, realm )"><span class="secnum">9.5.5</span> HostEnqueuePromiseJob ( <var>job</var>, <var>realm</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-hostenqueuetimeoutjob" title="HostEnqueueTimeoutJob ( timeoutJob, realm, milliseconds )"><span class="secnum">9.5.6</span> HostEnqueueTimeoutJob ( <var>timeoutJob</var>, <var>realm</var>, <var>milliseconds</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-agents" title="Agents"><span class="secnum">9.6</span> Agents</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-agentsignifier" title="AgentSignifier ( )"><span class="secnum">9.6.1</span> AgentSignifier ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-agentcansuspend" title="AgentCanSuspend ( )"><span class="secnum">9.6.2</span> AgentCanSuspend ( )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-agent-clusters" title="Agent Clusters"><span class="secnum">9.7</span> Agent Clusters</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-forward-progress" title="Forward Progress"><span class="secnum">9.8</span> Forward Progress</a></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-weakref-processing-model" title="Processing Model of WeakRef and FinalizationRegistry Targets"><span class="secnum">9.9</span> Processing Model of WeakRef and FinalizationRegistry Targets</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-weakref-invariants" title="Objectives"><span class="secnum">9.9.1</span> Objectives</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-liveness" title="Liveness"><span class="secnum">9.9.2</span> Liveness</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-weakref-execution" title="Execution"><span class="secnum">9.9.3</span> Execution</a></li><li><span class="item-toggle">+</span><a href="executable-code-and-execution-contexts.html#sec-weakref-host-hooks" title="Host Hooks"><span class="secnum">9.9.4</span> Host Hooks</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-host-cleanup-finalization-registry" title="HostEnqueueFinalizationRegistryCleanupJob ( finalizationRegistry )"><span class="secnum">9.9.4.1</span> HostEnqueueFinalizationRegistryCleanupJob ( <var>finalizationRegistry</var> )</a></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-clear-kept-objects" title="ClearKeptObjects ( )"><span class="secnum">9.10</span> ClearKeptObjects ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-addtokeptobjects" title="AddToKeptObjects ( value )"><span class="secnum">9.11</span> AddToKeptObjects ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-cleanup-finalization-registry" title="CleanupFinalizationRegistry ( finalizationRegistry )"><span class="secnum">9.12</span> CleanupFinalizationRegistry ( <var>finalizationRegistry</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-canbeheldweakly" title="CanBeHeldWeakly ( v )"><span class="secnum">9.13</span> CanBeHeldWeakly ( <var>v</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-and-exotic-objects-behaviours" title="Ordinary and Exotic Objects Behaviours"><span class="secnum">10</span> Ordinary and Exotic Objects Behaviours</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots" title="Ordinary Object Internal Methods and Internal Slots"><span class="secnum">10.1</span> Ordinary Object Internal Methods and Internal Slots</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-getprototypeof" title="[[GetPrototypeOf]] ( )"><span class="secnum">10.1.1</span> <var class="field">[[GetPrototypeOf]]</var> ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinarygetprototypeof" title="OrdinaryGetPrototypeOf ( O )"><span class="secnum">10.1.1.1</span> OrdinaryGetPrototypeOf ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-setprototypeof-v" title="[[SetPrototypeOf]] ( V )"><span class="secnum">10.1.2</span> <var class="field">[[SetPrototypeOf]]</var> ( <var>V</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinarysetprototypeof" title="OrdinarySetPrototypeOf ( O, V )"><span class="secnum">10.1.2.1</span> OrdinarySetPrototypeOf ( <var>O</var>, <var>V</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-isextensible" title="[[IsExtensible]] ( )"><span class="secnum">10.1.3</span> <var class="field">[[IsExtensible]]</var> ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryisextensible" title="OrdinaryIsExtensible ( O )"><span class="secnum">10.1.3.1</span> OrdinaryIsExtensible ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-preventextensions" title="[[PreventExtensions]] ( )"><span class="secnum">10.1.4</span> <var class="field">[[PreventExtensions]]</var> ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinarypreventextensions" title="OrdinaryPreventExtensions ( O )"><span class="secnum">10.1.4.1</span> OrdinaryPreventExtensions ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">10.1.5</span> <var class="field">[[GetOwnProperty]]</var> ( <var>P</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinarygetownproperty" title="OrdinaryGetOwnProperty ( O, P )"><span class="secnum">10.1.5.1</span> OrdinaryGetOwnProperty ( <var>O</var>, <var>P</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">10.1.6</span> <var class="field">[[DefineOwnProperty]]</var> ( <var>P</var>, <var>Desc</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinarydefineownproperty" title="OrdinaryDefineOwnProperty ( O, P, Desc )"><span class="secnum">10.1.6.1</span> OrdinaryDefineOwnProperty ( <var>O</var>, <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-iscompatiblepropertydescriptor" title="IsCompatiblePropertyDescriptor ( Extensible, Desc, Current )"><span class="secnum">10.1.6.2</span> IsCompatiblePropertyDescriptor ( <var>Extensible</var>, <var>Desc</var>, <var>Current</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-validateandapplypropertydescriptor" title="ValidateAndApplyPropertyDescriptor ( O, P, extensible, Desc, current )"><span class="secnum">10.1.6.3</span> ValidateAndApplyPropertyDescriptor ( <var>O</var>, <var>P</var>, <var>extensible</var>, <var>Desc</var>, <var>current</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-hasproperty-p" title="[[HasProperty]] ( P )"><span class="secnum">10.1.7</span> <var class="field">[[HasProperty]]</var> ( <var>P</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryhasproperty" title="OrdinaryHasProperty ( O, P )"><span class="secnum">10.1.7.1</span> OrdinaryHasProperty ( <var>O</var>, <var>P</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-get-p-receiver" title="[[Get]] ( P, Receiver )"><span class="secnum">10.1.8</span> <var class="field">[[Get]]</var> ( <var>P</var>, <var>Receiver</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryget" title="OrdinaryGet ( O, P, Receiver )"><span class="secnum">10.1.8.1</span> OrdinaryGet ( <var>O</var>, <var>P</var>, <var>Receiver</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-set-p-v-receiver" title="[[Set]] ( P, V, Receiver )"><span class="secnum">10.1.9</span> <var class="field">[[Set]]</var> ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryset" title="OrdinarySet ( O, P, V, Receiver )"><span class="secnum">10.1.9.1</span> OrdinarySet ( <var>O</var>, <var>P</var>, <var>V</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinarysetwithowndescriptor" title="OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )"><span class="secnum">10.1.9.2</span> OrdinarySetWithOwnDescriptor ( <var>O</var>, <var>P</var>, <var>V</var>, <var>Receiver</var>, <var>ownDesc</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-delete-p" title="[[Delete]] ( P )"><span class="secnum">10.1.10</span> <var class="field">[[Delete]]</var> ( <var>P</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinarydelete" title="OrdinaryDelete ( O, P )"><span class="secnum">10.1.10.1</span> OrdinaryDelete ( <var>O</var>, <var>P</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinary-object-internal-methods-and-internal-slots-ownpropertykeys" title="[[OwnPropertyKeys]] ( )"><span class="secnum">10.1.11</span> <var class="field">[[OwnPropertyKeys]]</var> ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryownpropertykeys" title="OrdinaryOwnPropertyKeys ( O )"><span class="secnum">10.1.11.1</span> OrdinaryOwnPropertyKeys ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate" title="OrdinaryObjectCreate ( proto [ , additionalInternalSlotsList ] )"><span class="secnum">10.1.12</span> OrdinaryObjectCreate ( <var>proto</var> [ , <var>additionalInternalSlotsList</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinarycreatefromconstructor" title="OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )"><span class="secnum">10.1.13</span> OrdinaryCreateFromConstructor ( <var>constructor</var>, <var>intrinsicDefaultProto</var> [ , <var>internalSlotsList</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-getprototypefromconstructor" title="GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )"><span class="secnum">10.1.14</span> GetPrototypeFromConstructor ( <var>constructor</var>, <var>intrinsicDefaultProto</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-requireinternalslot" title="RequireInternalSlot ( O, internalSlot )"><span class="secnum">10.1.15</span> RequireInternalSlot ( <var>O</var>, <var>internalSlot</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ecmascript-function-objects" title="ECMAScript Function Objects"><span class="secnum">10.2</span> ECMAScript Function Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ecmascript-function-objects-call-thisargument-argumentslist" title="[[Call]] ( thisArgument, argumentsList )"><span class="secnum">10.2.1</span> <var class="field">[[Call]]</var> ( <var>thisArgument</var>, <var>argumentsList</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-prepareforordinarycall" title="PrepareForOrdinaryCall ( F, newTarget )"><span class="secnum">10.2.1.1</span> PrepareForOrdinaryCall ( <var>F</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinarycallbindthis" title="OrdinaryCallBindThis ( F, calleeContext, thisArgument )"><span class="secnum">10.2.1.2</span> OrdinaryCallBindThis ( <var>F</var>, <var>calleeContext</var>, <var>thisArgument</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-runtime-semantics-evaluatebody" title="Runtime Semantics: EvaluateBody"><span class="secnum">10.2.1.3</span> RS: EvaluateBody</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinarycallevaluatebody" title="OrdinaryCallEvaluateBody ( F, argumentsList )"><span class="secnum">10.2.1.4</span> OrdinaryCallEvaluateBody ( <var>F</var>, <var>argumentsList</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ecmascript-function-objects-construct-argumentslist-newtarget" title="[[Construct]] ( argumentsList, newTarget )"><span class="secnum">10.2.2</span> <var class="field">[[Construct]]</var> ( <var>argumentsList</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryfunctioncreate" title="OrdinaryFunctionCreate ( functionPrototype, sourceText, ParameterList, Body, thisMode, env, privateEnv )"><span class="secnum">10.2.3</span> OrdinaryFunctionCreate ( <var>functionPrototype</var>, <var>sourceText</var>, <var>ParameterList</var>, <var>Body</var>, <var>thisMode</var>, <var>env</var>, <var>privateEnv</var> )</a></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-addrestrictedfunctionproperties" title="AddRestrictedFunctionProperties ( F, realm )"><span class="secnum">10.2.4</span> AddRestrictedFunctionProperties ( <var>F</var>, <var>realm</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-%throwtypeerror%" title="%ThrowTypeError% ( )"><span class="secnum">10.2.4.1</span> %ThrowTypeError% ( )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-makeconstructor" title="MakeConstructor ( F [ , writablePrototype [ , prototype ] ] )"><span class="secnum">10.2.5</span> MakeConstructor ( <var>F</var> [ , <var>writablePrototype</var> [ , <var>prototype</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-makeclassconstructor" title="MakeClassConstructor ( F )"><span class="secnum">10.2.6</span> MakeClassConstructor ( <var>F</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-makemethod" title="MakeMethod ( F, homeObject )"><span class="secnum">10.2.7</span> MakeMethod ( <var>F</var>, <var>homeObject</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-definemethodproperty" title="DefineMethodProperty ( homeObject, key, closure, enumerable )"><span class="secnum">10.2.8</span> DefineMethodProperty ( <var>homeObject</var>, <var>key</var>, <var>closure</var>, <var>enumerable</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-setfunctionname" title="SetFunctionName ( F, name [ , prefix ] )"><span class="secnum">10.2.9</span> SetFunctionName ( <var>F</var>, <var>name</var> [ , <var>prefix</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-setfunctionlength" title="SetFunctionLength ( F, length )"><span class="secnum">10.2.10</span> SetFunctionLength ( <var>F</var>, <var>length</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-functiondeclarationinstantiation" title="FunctionDeclarationInstantiation ( func, argumentsList )"><span class="secnum">10.2.11</span> FunctionDeclarationInstantiation ( <var>func</var>, <var>argumentsList</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-built-in-function-objects" title="Built-in Function Objects"><span class="secnum">10.3</span> Built-in Function Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-built-in-function-objects-call-thisargument-argumentslist" title="[[Call]] ( thisArgument, argumentsList )"><span class="secnum">10.3.1</span> <var class="field">[[Call]]</var> ( <var>thisArgument</var>, <var>argumentsList</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-built-in-function-objects-construct-argumentslist-newtarget" title="[[Construct]] ( argumentsList, newTarget )"><span class="secnum">10.3.2</span> <var class="field">[[Construct]]</var> ( <var>argumentsList</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-builtincallorconstruct" title="BuiltinCallOrConstruct ( F, thisArgument, argumentsList, newTarget )"><span class="secnum">10.3.3</span> BuiltinCallOrConstruct ( <var>F</var>, <var>thisArgument</var>, <var>argumentsList</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-createbuiltinfunction" title="CreateBuiltinFunction ( behaviour, length, name, additionalInternalSlotsList [ , realm [ , prototype [ , prefix ] ] ] )"><span class="secnum">10.3.4</span> CreateBuiltinFunction ( <var>behaviour</var>, <var>length</var>, <var>name</var>, <var>additionalInternalSlotsList</var> [ , <var>realm</var> [ , <var>prototype</var> [ , <var>prefix</var> ] ] ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-built-in-exotic-object-internal-methods-and-slots" title="Built-in Exotic Object Internal Methods and Slots"><span class="secnum">10.4</span> Built-in Exotic Object Internal Methods and Slots</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-bound-function-exotic-objects" title="Bound Function Exotic Objects"><span class="secnum">10.4.1</span> Bound Function Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-bound-function-exotic-objects-call-thisargument-argumentslist" title="[[Call]] ( thisArgument, argumentsList )"><span class="secnum">10.4.1.1</span> <var class="field">[[Call]]</var> ( <var>thisArgument</var>, <var>argumentsList</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-bound-function-exotic-objects-construct-argumentslist-newtarget" title="[[Construct]] ( argumentsList, newTarget )"><span class="secnum">10.4.1.2</span> <var class="field">[[Construct]]</var> ( <var>argumentsList</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-boundfunctioncreate" title="BoundFunctionCreate ( targetFunction, boundThis, boundArgs )"><span class="secnum">10.4.1.3</span> BoundFunctionCreate ( <var>targetFunction</var>, <var>boundThis</var>, <var>boundArgs</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-array-exotic-objects" title="Array Exotic Objects"><span class="secnum">10.4.2</span> Array Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-array-exotic-objects-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">10.4.2.1</span> <var class="field">[[DefineOwnProperty]]</var> ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate" title="ArrayCreate ( length [ , proto ] )"><span class="secnum">10.4.2.2</span> ArrayCreate ( <var>length</var> [ , <var>proto</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-arrayspeciescreate" title="ArraySpeciesCreate ( originalArray, length )"><span class="secnum">10.4.2.3</span> ArraySpeciesCreate ( <var>originalArray</var>, <var>length</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraysetlength" title="ArraySetLength ( A, Desc )"><span class="secnum">10.4.2.4</span> ArraySetLength ( <var>A</var>, <var>Desc</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-string-exotic-objects" title="String Exotic Objects"><span class="secnum">10.4.3</span> String Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-string-exotic-objects-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">10.4.3.1</span> <var class="field">[[GetOwnProperty]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-string-exotic-objects-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">10.4.3.2</span> <var class="field">[[DefineOwnProperty]]</var> ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-string-exotic-objects-ownpropertykeys" title="[[OwnPropertyKeys]] ( )"><span class="secnum">10.4.3.3</span> <var class="field">[[OwnPropertyKeys]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-stringcreate" title="StringCreate ( value, prototype )"><span class="secnum">10.4.3.4</span> StringCreate ( <var>value</var>, <var>prototype</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-stringgetownproperty" title="StringGetOwnProperty ( S, P )"><span class="secnum">10.4.3.5</span> StringGetOwnProperty ( <var>S</var>, <var>P</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-arguments-exotic-objects" title="Arguments Exotic Objects"><span class="secnum">10.4.4</span> Arguments Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-arguments-exotic-objects-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">10.4.4.1</span> <var class="field">[[GetOwnProperty]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-arguments-exotic-objects-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">10.4.4.2</span> <var class="field">[[DefineOwnProperty]]</var> ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-arguments-exotic-objects-get-p-receiver" title="[[Get]] ( P, Receiver )"><span class="secnum">10.4.4.3</span> <var class="field">[[Get]]</var> ( <var>P</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-arguments-exotic-objects-set-p-v-receiver" title="[[Set]] ( P, V, Receiver )"><span class="secnum">10.4.4.4</span> <var class="field">[[Set]]</var> ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-arguments-exotic-objects-delete-p" title="[[Delete]] ( P )"><span class="secnum">10.4.4.5</span> <var class="field">[[Delete]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-createunmappedargumentsobject" title="CreateUnmappedArgumentsObject ( argumentsList )"><span class="secnum">10.4.4.6</span> CreateUnmappedArgumentsObject ( <var>argumentsList</var> )</a></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-createmappedargumentsobject" title="CreateMappedArgumentsObject ( func, formals, argumentsList, env )"><span class="secnum">10.4.4.7</span> CreateMappedArgumentsObject ( <var>func</var>, <var>formals</var>, <var>argumentsList</var>, <var>env</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-makearggetter" title="MakeArgGetter ( name, env )"><span class="secnum">10.4.4.7.1</span> MakeArgGetter ( <var>name</var>, <var>env</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-makeargsetter" title="MakeArgSetter ( name, env )"><span class="secnum">10.4.4.7.2</span> MakeArgSetter ( <var>name</var>, <var>env</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-exotic-objects" title="TypedArray Exotic Objects"><span class="secnum">10.4.5</span> TypedArray Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-preventextensions" title="[[PreventExtensions]] ( )"><span class="secnum">10.4.5.1</span> <var class="field">[[PreventExtensions]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-getownproperty" title="[[GetOwnProperty]] ( P )"><span class="secnum">10.4.5.2</span> <var class="field">[[GetOwnProperty]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-hasproperty" title="[[HasProperty]] ( P )"><span class="secnum">10.4.5.3</span> <var class="field">[[HasProperty]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-defineownproperty" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">10.4.5.4</span> <var class="field">[[DefineOwnProperty]]</var> ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-get" title="[[Get]] ( P, Receiver )"><span class="secnum">10.4.5.5</span> <var class="field">[[Get]]</var> ( <var>P</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-set" title="[[Set]] ( P, V, Receiver )"><span class="secnum">10.4.5.6</span> <var class="field">[[Set]]</var> ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-delete" title="[[Delete]] ( P )"><span class="secnum">10.4.5.7</span> <var class="field">[[Delete]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-ownpropertykeys" title="[[OwnPropertyKeys]] ( )"><span class="secnum">10.4.5.8</span> <var class="field">[[OwnPropertyKeys]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-with-buffer-witness-records" title="TypedArray With Buffer Witness Records"><span class="secnum">10.4.5.9</span> TypedArray With Buffer Witness Records</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord" title="MakeTypedArrayWithBufferWitnessRecord ( obj, order )"><span class="secnum">10.4.5.10</span> MakeTypedArrayWithBufferWitnessRecord ( <var>obj</var>, <var>order</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraycreate" title="TypedArrayCreate ( prototype )"><span class="secnum">10.4.5.11</span> TypedArrayCreate ( <var>prototype</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraybytelength" title="TypedArrayByteLength ( taRecord )"><span class="secnum">10.4.5.12</span> TypedArrayByteLength ( <var>taRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength" title="TypedArrayLength ( taRecord )"><span class="secnum">10.4.5.13</span> TypedArrayLength ( <var>taRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds" title="IsTypedArrayOutOfBounds ( taRecord )"><span class="secnum">10.4.5.14</span> IsTypedArrayOutOfBounds ( <var>taRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayfixedlength" title="IsTypedArrayFixedLength ( O )"><span class="secnum">10.4.5.15</span> IsTypedArrayFixedLength ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-isvalidintegerindex" title="IsValidIntegerIndex ( O, index )"><span class="secnum">10.4.5.16</span> IsValidIntegerIndex ( <var>O</var>, <var>index</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraygetelement" title="TypedArrayGetElement ( O, index )"><span class="secnum">10.4.5.17</span> TypedArrayGetElement ( <var>O</var>, <var>index</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraysetelement" title="TypedArraySetElement ( O, index, value )"><span class="secnum">10.4.5.18</span> TypedArraySetElement ( <var>O</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-isarraybufferviewoutofbounds" title="IsArrayBufferViewOutOfBounds ( O )"><span class="secnum">10.4.5.19</span> IsArrayBufferViewOutOfBounds ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects" title="Module Namespace Exotic Objects"><span class="secnum">10.4.6</span> Module Namespace Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-getprototypeof" title="[[GetPrototypeOf]] ( )"><span class="secnum">10.4.6.1</span> <var class="field">[[GetPrototypeOf]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-setprototypeof-v" title="[[SetPrototypeOf]] ( V )"><span class="secnum">10.4.6.2</span> <var class="field">[[SetPrototypeOf]]</var> ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-isextensible" title="[[IsExtensible]] ( )"><span class="secnum">10.4.6.3</span> <var class="field">[[IsExtensible]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-preventextensions" title="[[PreventExtensions]] ( )"><span class="secnum">10.4.6.4</span> <var class="field">[[PreventExtensions]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">10.4.6.5</span> <var class="field">[[GetOwnProperty]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">10.4.6.6</span> <var class="field">[[DefineOwnProperty]]</var> ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-hasproperty-p" title="[[HasProperty]] ( P )"><span class="secnum">10.4.6.7</span> <var class="field">[[HasProperty]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-get-p-receiver" title="[[Get]] ( P, Receiver )"><span class="secnum">10.4.6.8</span> <var class="field">[[Get]]</var> ( <var>P</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-set-p-v-receiver" title="[[Set]] ( P, V, Receiver )"><span class="secnum">10.4.6.9</span> <var class="field">[[Set]]</var> ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-delete-p" title="[[Delete]] ( P )"><span class="secnum">10.4.6.10</span> <var class="field">[[Delete]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-module-namespace-exotic-objects-ownpropertykeys" title="[[OwnPropertyKeys]] ( )"><span class="secnum">10.4.6.11</span> <var class="field">[[OwnPropertyKeys]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-modulenamespacecreate" title="ModuleNamespaceCreate ( module, exports )"><span class="secnum">10.4.6.12</span> ModuleNamespaceCreate ( <var>module</var>, <var>exports</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-immutable-prototype-exotic-objects" title="Immutable Prototype Exotic Objects"><span class="secnum">10.4.7</span> Immutable Prototype Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-immutable-prototype-exotic-objects-setprototypeof-v" title="[[SetPrototypeOf]] ( V )"><span class="secnum">10.4.7.1</span> <var class="field">[[SetPrototypeOf]]</var> ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-set-immutable-prototype" title="SetImmutablePrototype ( O, V )"><span class="secnum">10.4.7.2</span> SetImmutablePrototype ( <var>O</var>, <var>V</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots" title="Proxy Object Internal Methods and Internal Slots"><span class="secnum">10.5</span> Proxy Object Internal Methods and Internal Slots</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-getprototypeof" title="[[GetPrototypeOf]] ( )"><span class="secnum">10.5.1</span> <var class="field">[[GetPrototypeOf]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-setprototypeof-v" title="[[SetPrototypeOf]] ( V )"><span class="secnum">10.5.2</span> <var class="field">[[SetPrototypeOf]]</var> ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-isextensible" title="[[IsExtensible]] ( )"><span class="secnum">10.5.3</span> <var class="field">[[IsExtensible]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-preventextensions" title="[[PreventExtensions]] ( )"><span class="secnum">10.5.4</span> <var class="field">[[PreventExtensions]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">10.5.5</span> <var class="field">[[GetOwnProperty]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">10.5.6</span> <var class="field">[[DefineOwnProperty]]</var> ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-hasproperty-p" title="[[HasProperty]] ( P )"><span class="secnum">10.5.7</span> <var class="field">[[HasProperty]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver" title="[[Get]] ( P, Receiver )"><span class="secnum">10.5.8</span> <var class="field">[[Get]]</var> ( <var>P</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver" title="[[Set]] ( P, V, Receiver )"><span class="secnum">10.5.9</span> <var class="field">[[Set]]</var> ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-delete-p" title="[[Delete]] ( P )"><span class="secnum">10.5.10</span> <var class="field">[[Delete]]</var> ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys" title="[[OwnPropertyKeys]] ( )"><span class="secnum">10.5.11</span> <var class="field">[[OwnPropertyKeys]]</var> ( )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist" title="[[Call]] ( thisArgument, argumentsList )"><span class="secnum">10.5.12</span> <var class="field">[[Call]]</var> ( <var>thisArgument</var>, <var>argumentsList</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget" title="[[Construct]] ( argumentsList, newTarget )"><span class="secnum">10.5.13</span> <var class="field">[[Construct]]</var> ( <var>argumentsList</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-validatenonrevokedproxy" title="ValidateNonRevokedProxy ( proxy )"><span class="secnum">10.5.14</span> ValidateNonRevokedProxy ( <var>proxy</var> )</a></li><li><span class="item-toggle-none"></span><a href="ordinary-and-exotic-objects-behaviours.html#sec-proxycreate" title="ProxyCreate ( target, handler )"><span class="secnum">10.5.15</span> ProxyCreate ( <var>target</var>, <var>handler</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-source-code.html#sec-ecmascript-language-source-code" title="ECMAScript Language: Source Text"><span class="secnum">11</span> ECMAScript Language: Source Text</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-source-code.html#sec-source-text" title="Source Text"><span class="secnum">11.1</span> Source Text</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-source-code.html#sec-utf16encodecodepoint" title="Static Semantics: UTF16EncodeCodePoint ( cp )"><span class="secnum">11.1.1</span> SS: UTF16EncodeCodePoint ( <var>cp</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-source-code.html#sec-codepointstostring" title="Static Semantics: CodePointsToString ( text )"><span class="secnum">11.1.2</span> SS: CodePointsToString ( <var>text</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-source-code.html#sec-utf16decodesurrogatepair" title="Static Semantics: UTF16SurrogatePairToCodePoint ( lead, trail )"><span class="secnum">11.1.3</span> SS: UTF16SurrogatePairToCodePoint ( <var>lead</var>, <var>trail</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-source-code.html#sec-codepointat" title="Static Semantics: CodePointAt ( string, position )"><span class="secnum">11.1.4</span> SS: CodePointAt ( <var>string</var>, <var>position</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-source-code.html#sec-stringtocodepoints" title="Static Semantics: StringToCodePoints ( string )"><span class="secnum">11.1.5</span> SS: StringToCodePoints ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-source-code.html#sec-parsetext" title="Static Semantics: ParseText ( sourceText, goalSymbol )"><span class="secnum">11.1.6</span> SS: ParseText ( <var>sourceText</var>, <var>goalSymbol</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-source-code.html#sec-types-of-source-code" title="Types of Source Code"><span class="secnum">11.2</span> Types of Source Code</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-source-code.html#sec-directive-prologues-and-the-use-strict-directive" title="Directive Prologues and the Use Strict Directive"><span class="secnum">11.2.1</span> Directive Prologues and the Use Strict Directive</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-source-code.html#sec-strict-mode-code" title="Strict Mode Code"><span class="secnum">11.2.2</span> Strict Mode Code</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-source-code.html#sec-isstrict" title="Static Semantics: IsStrict ( node )"><span class="secnum">11.2.2.1</span> SS: IsStrict ( <var>node</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-source-code.html#sec-non-ecmascript-functions" title="Non-ECMAScript Functions"><span class="secnum">11.2.3</span> Non-ECMAScript Functions</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-ecmascript-language-lexical-grammar" title="ECMAScript Language: Lexical Grammar"><span class="secnum">12</span> ECMAScript Language: Lexical Grammar</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-unicode-format-control-characters" title="Unicode Format-Control Characters"><span class="secnum">12.1</span> Unicode Format-Control Characters</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-white-space" title="White Space"><span class="secnum">12.2</span> White Space</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-line-terminators" title="Line Terminators"><span class="secnum">12.3</span> Line Terminators</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-comments" title="Comments"><span class="secnum">12.4</span> Comments</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-hashbang" title="Hashbang Comments"><span class="secnum">12.5</span> Hashbang Comments</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-tokens" title="Tokens"><span class="secnum">12.6</span> Tokens</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-names-and-keywords" title="Names and Keywords"><span class="secnum">12.7</span> Names and Keywords</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-identifier-names" title="Identifier Names"><span class="secnum">12.7.1</span> Identifier Names</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-identifier-names-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.7.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-identifiercodepoints" title="Static Semantics: IdentifierCodePoints"><span class="secnum">12.7.1.2</span> SS: IdentifierCodePoints</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-identifiercodepoint" title="Static Semantics: IdentifierCodePoint"><span class="secnum">12.7.1.3</span> SS: IdentifierCodePoint</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-keywords-and-reserved-words" title="Keywords and Reserved Words"><span class="secnum">12.7.2</span> Keywords and Reserved Words</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-punctuators" title="Punctuators"><span class="secnum">12.8</span> Punctuators</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-ecmascript-language-lexical-grammar-literals" title="Literals"><span class="secnum">12.9</span> Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-null-literals" title="Null Literals"><span class="secnum">12.9.1</span> Null Literals</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-boolean-literals" title="Boolean Literals"><span class="secnum">12.9.2</span> Boolean Literals</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-literals-numeric-literals" title="Numeric Literals"><span class="secnum">12.9.3</span> Numeric Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-numeric-literals-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.9.3.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-static-semantics-mv" title="Static Semantics: MV"><span class="secnum">12.9.3.2</span> SS: MV</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-numericvalue" title="Static Semantics: NumericValue"><span class="secnum">12.9.3.3</span> SS: NumericValue</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-literals-string-literals" title="String Literals"><span class="secnum">12.9.4</span> String Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-string-literals-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.9.4.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-static-semantics-sv" title="Static Semantics: SV"><span class="secnum">12.9.4.2</span> SS: SV</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-string-literals-static-semantics-mv" title="Static Semantics: MV"><span class="secnum">12.9.4.3</span> SS: MV</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-literals-regular-expression-literals" title="Regular Expression Literals"><span class="secnum">12.9.5</span> Regular Expression Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-static-semantics-bodytext" title="Static Semantics: BodyText"><span class="secnum">12.9.5.1</span> SS: BodyText</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-static-semantics-flagtext" title="Static Semantics: FlagText"><span class="secnum">12.9.5.2</span> SS: FlagText</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-template-literal-lexical-components" title="Template Literal Lexical Components"><span class="secnum">12.9.6</span> Template Literal Lexical Components</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-static-semantics-tv" title="Static Semantics: TV"><span class="secnum">12.9.6.1</span> SS: TV</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-static-semantics-trv" title="Static Semantics: TRV"><span class="secnum">12.9.6.2</span> SS: TRV</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-automatic-semicolon-insertion" title="Automatic Semicolon Insertion"><span class="secnum">12.10</span> Automatic Semicolon Insertion</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-rules-of-automatic-semicolon-insertion" title="Rules of Automatic Semicolon Insertion"><span class="secnum">12.10.1</span> Rules of Automatic Semicolon Insertion</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-examples-of-automatic-semicolon-insertion" title="Examples of Automatic Semicolon Insertion"><span class="secnum">12.10.2</span> Examples of Automatic Semicolon Insertion</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-interesting-cases-of-automatic-semicolon-insertion" title="Interesting Cases of Automatic Semicolon Insertion"><span class="secnum">12.10.3</span> Interesting Cases of Automatic Semicolon Insertion</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-asi-interesting-cases-in-statement-lists" title="Interesting Cases of Automatic Semicolon Insertion in Statement Lists"><span class="secnum">12.10.3.1</span> Interesting Cases of Automatic Semicolon Insertion in Statement Lists</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-lexical-grammar.html#sec-asi-cases-with-no-lineterminator-here" title="Cases of Automatic Semicolon Insertion and “[no LineTerminator here]”"><span class="secnum">12.10.3.2</span> Cases of Automatic Semicolon Insertion and “[no <emu-nt>LineTerminator</emu-nt> here]”</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-lexical-grammar.html#sec-no-lineterminator-here-automatic-semicolon-insertion-list" title="List of Grammar Productions with Optional Operands and “[no LineTerminator here]”"><span class="secnum">12.10.3.2.1</span> List of Grammar Productions with Optional Operands and “[no <emu-nt>LineTerminator</emu-nt> here]”</a></li></ol></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-ecmascript-language-expressions" title="ECMAScript Language: Expressions"><span class="secnum">13</span> ECMAScript Language: Expressions</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-identifiers" title="Identifiers"><span class="secnum">13.1</span> Identifiers</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-identifiers-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue" title="Static Semantics: StringValue"><span class="secnum">13.1.2</span> SS: StringValue</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-identifiers-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.1.3</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-primary-expression" title="Primary Expression"><span class="secnum">13.2</span> Primary Expression</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-this-keyword" title="The this Keyword"><span class="secnum">13.2.1</span> The <code>this</code> Keyword</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-this-keyword-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.2.1.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-identifier-reference" title="Identifier Reference"><span class="secnum">13.2.2</span> Identifier Reference</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-primary-expression-literals" title="Literals"><span class="secnum">13.2.3</span> Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-literals-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.2.3.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-array-initializer" title="Array Initializer"><span class="secnum">13.2.4</span> Array Initializer</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-runtime-semantics-arrayaccumulation" title="Runtime Semantics: ArrayAccumulation"><span class="secnum">13.2.4.1</span> RS: ArrayAccumulation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-array-initializer-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.2.4.2</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-object-initializer" title="Object Initializer"><span class="secnum">13.2.5</span> Object Initializer</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-object-initializer-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.2.5.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-static-semantics-iscomputedpropertykey" title="Static Semantics: IsComputedPropertyKey"><span class="secnum">13.2.5.2</span> SS: IsComputedPropertyKey</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-static-semantics-propertynamelist" title="Static Semantics: PropertyNameList"><span class="secnum">13.2.5.3</span> SS: PropertyNameList</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-object-initializer-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.2.5.4</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-runtime-semantics-propertydefinitionevaluation" title="Runtime Semantics: PropertyDefinitionEvaluation"><span class="secnum">13.2.5.5</span> RS: PropertyDefinitionEvaluation</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-function-defining-expressions" title="Function Defining Expressions"><span class="secnum">13.2.6</span> Function Defining Expressions</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-primary-expression-regular-expression-literals" title="Regular Expression Literals"><span class="secnum">13.2.7</span> Regular Expression Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-primary-expression-regular-expression-literals-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.2.7.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-isvalidregularexpressionliteral" title="Static Semantics: IsValidRegularExpressionLiteral ( literal )"><span class="secnum">13.2.7.2</span> SS: IsValidRegularExpressionLiteral ( <var>literal</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-regular-expression-literals-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.2.7.3</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-template-literals" title="Template Literals"><span class="secnum">13.2.8</span> Template Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-static-semantics-template-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.2.8.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-static-semantics-templatestrings" title="Static Semantics: TemplateStrings"><span class="secnum">13.2.8.2</span> SS: TemplateStrings</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-templatestring" title="Static Semantics: TemplateString ( templateToken, raw )"><span class="secnum">13.2.8.3</span> SS: TemplateString ( <var>templateToken</var>, <var>raw</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-gettemplateobject" title="GetTemplateObject ( templateLiteral )"><span class="secnum">13.2.8.4</span> GetTemplateObject ( <var>templateLiteral</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-runtime-semantics-substitutionevaluation" title="Runtime Semantics: SubstitutionEvaluation"><span class="secnum">13.2.8.5</span> RS: SubstitutionEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-template-literals-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.2.8.6</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-grouping-operator" title="The Grouping Operator"><span class="secnum">13.2.9</span> The Grouping Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-grouping-operator-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.2.9.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-grouping-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.2.9.2</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-left-hand-side-expressions" title="Left-Hand-Side Expressions"><span class="secnum">13.3</span> Left-Hand-Side Expressions</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-static-semantics" title="Static Semantics"><span class="secnum">13.3.1</span> Static Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-left-hand-side-expressions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.3.1.1</span> SS: Early Errors</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-property-accessors" title="Property Accessors"><span class="secnum">13.3.2</span> Property Accessors</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-property-accessors-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.3.2.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-evaluate-property-access-with-expression-key" title="EvaluatePropertyAccessWithExpressionKey ( baseValue, expression, strict )"><span class="secnum">13.3.3</span> EvaluatePropertyAccessWithExpressionKey ( <var>baseValue</var>, <var>expression</var>, <var>strict</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-evaluate-property-access-with-identifier-key" title="EvaluatePropertyAccessWithIdentifierKey ( baseValue, identifierName, strict )"><span class="secnum">13.3.4</span> EvaluatePropertyAccessWithIdentifierKey ( <var>baseValue</var>, <var>identifierName</var>, <var>strict</var> )</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-new-operator" title="The new Operator"><span class="secnum">13.3.5</span> The <code>new</code> Operator</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-new-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.3.5.1</span> RS: Evaluation</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-evaluatenew" title="EvaluateNew ( constructExpr, arguments )"><span class="secnum">13.3.5.1.1</span> EvaluateNew ( <var>constructExpr</var>, <var>arguments</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-function-calls" title="Function Calls"><span class="secnum">13.3.6</span> Function Calls</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-function-calls-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.3.6.1</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-evaluatecall" title="EvaluateCall ( func, ref, arguments, tailPosition )"><span class="secnum">13.3.6.2</span> EvaluateCall ( <var>func</var>, <var>ref</var>, <var>arguments</var>, <var>tailPosition</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-super-keyword" title="The super Keyword"><span class="secnum">13.3.7</span> The <code>super</code> Keyword</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-super-keyword-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.3.7.1</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-getsuperconstructor" title="GetSuperConstructor ( )"><span class="secnum">13.3.7.2</span> GetSuperConstructor ( )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-makesuperpropertyreference" title="MakeSuperPropertyReference ( actualThis, propertyKey, strict )"><span class="secnum">13.3.7.3</span> MakeSuperPropertyReference ( <var>actualThis</var>, <var>propertyKey</var>, <var>strict</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-argument-lists" title="Argument Lists"><span class="secnum">13.3.8</span> Argument Lists</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-runtime-semantics-argumentlistevaluation" title="Runtime Semantics: ArgumentListEvaluation"><span class="secnum">13.3.8.1</span> RS: ArgumentListEvaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-optional-chains" title="Optional Chains"><span class="secnum">13.3.9</span> Optional Chains</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-optional-chaining-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.3.9.1</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-optional-chaining-chain-evaluation" title="Runtime Semantics: ChainEvaluation"><span class="secnum">13.3.9.2</span> RS: ChainEvaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-import-calls" title="Import Calls"><span class="secnum">13.3.10</span> Import Calls</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-import-call-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.3.10.1</span> RS: Evaluation</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-ContinueDynamicImport" title="ContinueDynamicImport ( promiseCapability, moduleCompletion )"><span class="secnum">13.3.10.1.1</span> ContinueDynamicImport ( <var>promiseCapability</var>, <var>moduleCompletion</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-tagged-templates" title="Tagged Templates"><span class="secnum">13.3.11</span> Tagged Templates</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-tagged-templates-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.3.11.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-meta-properties" title="Meta Properties"><span class="secnum">13.3.12</span> Meta Properties</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-meta-properties-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.3.12.1</span> RS: Evaluation</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-hostgetimportmetaproperties" title="HostGetImportMetaProperties ( moduleRecord )"><span class="secnum">13.3.12.1.1</span> HostGetImportMetaProperties ( <var>moduleRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-hostfinalizeimportmeta" title="HostFinalizeImportMeta ( importMeta, moduleRecord )"><span class="secnum">13.3.12.1.2</span> HostFinalizeImportMeta ( <var>importMeta</var>, <var>moduleRecord</var> )</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-update-expressions" title="Update Expressions"><span class="secnum">13.4</span> Update Expressions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-update-expressions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.4.1</span> SS: Early Errors</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-postfix-increment-operator" title="Postfix Increment Operator"><span class="secnum">13.4.2</span> Postfix Increment Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-postfix-increment-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.4.2.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-postfix-decrement-operator" title="Postfix Decrement Operator"><span class="secnum">13.4.3</span> Postfix Decrement Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-postfix-decrement-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.4.3.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-prefix-increment-operator" title="Prefix Increment Operator"><span class="secnum">13.4.4</span> Prefix Increment Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-prefix-increment-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.4.4.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-prefix-decrement-operator" title="Prefix Decrement Operator"><span class="secnum">13.4.5</span> Prefix Decrement Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-prefix-decrement-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.4.5.1</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-unary-operators" title="Unary Operators"><span class="secnum">13.5</span> Unary Operators</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-delete-operator" title="The delete Operator"><span class="secnum">13.5.1</span> The <code>delete</code> Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-delete-operator-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.5.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-delete-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.5.1.2</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-void-operator" title="The void Operator"><span class="secnum">13.5.2</span> The <code>void</code> Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-void-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.5.2.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-typeof-operator" title="The typeof Operator"><span class="secnum">13.5.3</span> The <code>typeof</code> Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-typeof-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.5.3.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-unary-plus-operator" title="Unary + Operator"><span class="secnum">13.5.4</span> Unary <code>+</code> Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-unary-plus-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.5.4.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-unary-minus-operator" title="Unary - Operator"><span class="secnum">13.5.5</span> Unary <code>-</code> Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-unary-minus-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.5.5.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-bitwise-not-operator" title="Bitwise NOT Operator ( ~ )"><span class="secnum">13.5.6</span> Bitwise NOT Operator ( <code>~</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-bitwise-not-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.5.6.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-logical-not-operator" title="Logical NOT Operator ( ! )"><span class="secnum">13.5.7</span> Logical NOT Operator ( <code>!</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-logical-not-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.5.7.1</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-exp-operator" title="Exponentiation Operator"><span class="secnum">13.6</span> Exponentiation Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-exp-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.6.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-multiplicative-operators" title="Multiplicative Operators"><span class="secnum">13.7</span> Multiplicative Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-multiplicative-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.7.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-additive-operators" title="Additive Operators"><span class="secnum">13.8</span> Additive Operators</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-addition-operator-plus" title="The Addition Operator ( + )"><span class="secnum">13.8.1</span> The Addition Operator ( <code>+</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-addition-operator-plus-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.8.1.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-subtraction-operator-minus" title="The Subtraction Operator ( - )"><span class="secnum">13.8.2</span> The Subtraction Operator ( <code>-</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-subtraction-operator-minus-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.8.2.1</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-bitwise-shift-operators" title="Bitwise Shift Operators"><span class="secnum">13.9</span> Bitwise Shift Operators</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-left-shift-operator" title="The Left Shift Operator ( << )"><span class="secnum">13.9.1</span> The Left Shift Operator ( <code><<</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-left-shift-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.9.1.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-signed-right-shift-operator" title="The Signed Right Shift Operator ( >> )"><span class="secnum">13.9.2</span> The Signed Right Shift Operator ( <code>>></code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-signed-right-shift-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.9.2.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-unsigned-right-shift-operator" title="The Unsigned Right Shift Operator ( >>> )"><span class="secnum">13.9.3</span> The Unsigned Right Shift Operator ( <code>>>></code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-unsigned-right-shift-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.9.3.1</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-relational-operators" title="Relational Operators"><span class="secnum">13.10</span> Relational Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-relational-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.10.1</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-instanceofoperator" title="InstanceofOperator ( V, target )"><span class="secnum">13.10.2</span> InstanceofOperator ( <var>V</var>, <var>target</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-equality-operators" title="Equality Operators"><span class="secnum">13.11</span> Equality Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-equality-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.11.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-binary-bitwise-operators" title="Binary Bitwise Operators"><span class="secnum">13.12</span> Binary Bitwise Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-binary-bitwise-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.12.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-binary-logical-operators" title="Binary Logical Operators"><span class="secnum">13.13</span> Binary Logical Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-binary-logical-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.13.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-conditional-operator" title="Conditional Operator ( ? : )"><span class="secnum">13.14</span> Conditional Operator ( <code>? :</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-conditional-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.14.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-assignment-operators" title="Assignment Operators"><span class="secnum">13.15</span> Assignment Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-assignment-operators-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.15.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-assignment-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.15.2</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-applystringornumericbinaryoperator" title="ApplyStringOrNumericBinaryOperator ( lVal, opText, rVal )"><span class="secnum">13.15.3</span> ApplyStringOrNumericBinaryOperator ( <var>lVal</var>, <var>opText</var>, <var>rVal</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-evaluatestringornumericbinaryexpression" title="EvaluateStringOrNumericBinaryExpression ( leftOperand, opText, rightOperand )"><span class="secnum">13.15.4</span> EvaluateStringOrNumericBinaryExpression ( <var>leftOperand</var>, <var>opText</var>, <var>rightOperand</var> )</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-destructuring-assignment" title="Destructuring Assignment"><span class="secnum">13.15.5</span> Destructuring Assignment</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-destructuring-assignment-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.15.5.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-runtime-semantics-destructuringassignmentevaluation" title="Runtime Semantics: DestructuringAssignmentEvaluation"><span class="secnum">13.15.5.2</span> RS: DestructuringAssignmentEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-runtime-semantics-propertydestructuringassignmentevaluation" title="Runtime Semantics: PropertyDestructuringAssignmentEvaluation"><span class="secnum">13.15.5.3</span> RS: PropertyDestructuringAssignmentEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-runtime-semantics-restdestructuringassignmentevaluation" title="Runtime Semantics: RestDestructuringAssignmentEvaluation"><span class="secnum">13.15.5.4</span> RS: RestDestructuringAssignmentEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-runtime-semantics-iteratordestructuringassignmentevaluation" title="Runtime Semantics: IteratorDestructuringAssignmentEvaluation"><span class="secnum">13.15.5.5</span> RS: IteratorDestructuringAssignmentEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-runtime-semantics-keyeddestructuringassignmentevaluation" title="Runtime Semantics: KeyedDestructuringAssignmentEvaluation"><span class="secnum">13.15.5.6</span> RS: KeyedDestructuringAssignmentEvaluation</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-expressions.html#sec-comma-operator" title="Comma Operator ( , )"><span class="secnum">13.16</span> Comma Operator ( <code>,</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-comma-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.16.1</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-ecmascript-language-statements-and-declarations" title="ECMAScript Language: Statements and Declarations"><span class="secnum">14</span> ECMAScript Language: Statements and Declarations</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-statement-semantics" title="Statement Semantics"><span class="secnum">14.1</span> Statement Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-statement-semantics-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.1.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-block" title="Block"><span class="secnum">14.2</span> Block</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-block-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.2.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-block-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.2.2</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-blockdeclarationinstantiation" title="BlockDeclarationInstantiation ( code, env )"><span class="secnum">14.2.3</span> BlockDeclarationInstantiation ( <var>code</var>, <var>env</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-declarations-and-the-variable-statement" title="Declarations and the Variable Statement"><span class="secnum">14.3</span> Declarations and the Variable Statement</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-let-and-const-declarations" title="Let and Const Declarations"><span class="secnum">14.3.1</span> Let and Const Declarations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-let-and-const-declarations-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.3.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-let-and-const-declarations-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.3.1.2</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-variable-statement" title="Variable Statement"><span class="secnum">14.3.2</span> Variable Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-variable-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.3.2.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-destructuring-binding-patterns" title="Destructuring Binding Patterns"><span class="secnum">14.3.3</span> Destructuring Binding Patterns</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization" title="Runtime Semantics: PropertyBindingInitialization"><span class="secnum">14.3.3.1</span> RS: PropertyBindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-destructuring-binding-patterns-runtime-semantics-restbindinginitialization" title="Runtime Semantics: RestBindingInitialization"><span class="secnum">14.3.3.2</span> RS: RestBindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-keyedbindinginitialization" title="Runtime Semantics: KeyedBindingInitialization"><span class="secnum">14.3.3.3</span> RS: KeyedBindingInitialization</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-empty-statement" title="Empty Statement"><span class="secnum">14.4</span> Empty Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-empty-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.4.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-expression-statement" title="Expression Statement"><span class="secnum">14.5</span> Expression Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-expression-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.5.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-if-statement" title="The if Statement"><span class="secnum">14.6</span> The <code>if</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-if-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.6.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-if-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.6.2</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-iteration-statements" title="Iteration Statements"><span class="secnum">14.7</span> Iteration Statements</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-iteration-statements-semantics" title="Semantics"><span class="secnum">14.7.1</span> Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-loopcontinues" title="LoopContinues ( completion, labelSet )"><span class="secnum">14.7.1.1</span> LoopContinues ( <var>completion</var>, <var>labelSet</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-loopevaluation" title="Runtime Semantics: LoopEvaluation"><span class="secnum">14.7.1.2</span> RS: LoopEvaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-do-while-statement" title="The do-while Statement"><span class="secnum">14.7.2</span> The <code>do</code>-<code>while</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-do-while-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.7.2.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-dowhileloopevaluation" title="Runtime Semantics: DoWhileLoopEvaluation"><span class="secnum">14.7.2.2</span> RS: DoWhileLoopEvaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-while-statement" title="The while Statement"><span class="secnum">14.7.3</span> The <code>while</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-while-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.7.3.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-whileloopevaluation" title="Runtime Semantics: WhileLoopEvaluation"><span class="secnum">14.7.3.2</span> RS: WhileLoopEvaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-for-statement" title="The for Statement"><span class="secnum">14.7.4</span> The <code>for</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-for-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.7.4.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forloopevaluation" title="Runtime Semantics: ForLoopEvaluation"><span class="secnum">14.7.4.2</span> RS: ForLoopEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-forbodyevaluation" title="ForBodyEvaluation ( test, increment, stmt, perIterationBindings, labelSet )"><span class="secnum">14.7.4.3</span> ForBodyEvaluation ( <var>test</var>, <var>increment</var>, <var>stmt</var>, <var>perIterationBindings</var>, <var>labelSet</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-createperiterationenvironment" title="CreatePerIterationEnvironment ( perIterationBindings )"><span class="secnum">14.7.4.4</span> CreatePerIterationEnvironment ( <var>perIterationBindings</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-and-for-of-statements" title="The for-in, for-of, and for-await-of Statements"><span class="secnum">14.7.5</span> The <code>for</code>-<code>in</code>, <code>for</code>-<code>of</code>, and <code>for</code>-<code>await</code>-<code>of</code> Statements</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-and-for-of-statements-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.7.5.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-static-semantics-isdestructuring" title="Static Semantics: IsDestructuring"><span class="secnum">14.7.5.2</span> SS: IsDestructuring</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-fordeclarationbindinginitialization" title="Runtime Semantics: ForDeclarationBindingInitialization"><span class="secnum">14.7.5.3</span> RS: ForDeclarationBindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-fordeclarationbindinginstantiation" title="Runtime Semantics: ForDeclarationBindingInstantiation"><span class="secnum">14.7.5.4</span> RS: ForDeclarationBindingInstantiation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofloopevaluation" title="Runtime Semantics: ForInOfLoopEvaluation"><span class="secnum">14.7.5.5</span> RS: ForInOfLoopEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofheadevaluation" title="ForIn/OfHeadEvaluation ( uninitializedBoundNames, expr, iterationKind )"><span class="secnum">14.7.5.6</span> ForIn/OfHeadEvaluation ( <var>uninitializedBoundNames</var>, <var>expr</var>, <var>iterationKind</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" title="ForIn/OfBodyEvaluation ( lhs, stmt, iteratorRecord, iterationKind, lhsKind, labelSet [ , iteratorKind ] )"><span class="secnum">14.7.5.7</span> ForIn/OfBodyEvaluation ( <var>lhs</var>, <var>stmt</var>, <var>iteratorRecord</var>, <var>iterationKind</var>, <var>lhsKind</var>, <var>labelSet</var> [ , <var>iteratorKind</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-and-for-of-statements-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.7.5.8</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-enumerate-object-properties" title="EnumerateObjectProperties ( O )"><span class="secnum">14.7.5.9</span> EnumerateObjectProperties ( <var>O</var> )</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-iterator-objects" title="For-In Iterator Objects"><span class="secnum">14.7.5.10</span> For-In Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-createforiniterator" title="CreateForInIterator ( object )"><span class="secnum">14.7.5.10.1</span> CreateForInIterator ( <var>object</var> )</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-%foriniteratorprototype%-object" title="The %ForInIteratorPrototype% Object"><span class="secnum">14.7.5.10.2</span> The %ForInIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-%foriniteratorprototype%.next" title="%ForInIteratorPrototype%.next ( )"><span class="secnum">14.7.5.10.2.1</span> %ForInIteratorPrototype%.next ( )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-properties-of-for-in-iterator-instances" title="Properties of For-In Iterator Instances"><span class="secnum">14.7.5.10.3</span> Properties of For-In Iterator Instances</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-continue-statement" title="The continue Statement"><span class="secnum">14.8</span> The <code>continue</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-continue-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.8.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-continue-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.8.2</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-break-statement" title="The break Statement"><span class="secnum">14.9</span> The <code>break</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-break-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.9.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-break-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.9.2</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-return-statement" title="The return Statement"><span class="secnum">14.10</span> The <code>return</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-return-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.10.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-with-statement" title="The with Statement"><span class="secnum">14.11</span> The <code>with</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-with-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.11.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-with-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.11.2</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-switch-statement" title="The switch Statement"><span class="secnum">14.12</span> The <code>switch</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-switch-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.12.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-caseblockevaluation" title="Runtime Semantics: CaseBlockEvaluation"><span class="secnum">14.12.2</span> RS: CaseBlockEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-caseclauseisselected" title="CaseClauseIsSelected ( C, input )"><span class="secnum">14.12.3</span> CaseClauseIsSelected ( <var>C</var>, <var>input</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-switch-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.12.4</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-labelled-statements" title="Labelled Statements"><span class="secnum">14.13</span> Labelled Statements</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-labelled-statements-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.13.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-islabelledfunction" title="Static Semantics: IsLabelledFunction ( stmt )"><span class="secnum">14.13.2</span> SS: IsLabelledFunction ( <var>stmt</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-labelled-statements-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.13.3</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-labelledevaluation" title="Runtime Semantics: LabelledEvaluation"><span class="secnum">14.13.4</span> RS: LabelledEvaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-throw-statement" title="The throw Statement"><span class="secnum">14.14</span> The <code>throw</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-throw-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.14.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-try-statement" title="The try Statement"><span class="secnum">14.15</span> The <code>try</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-try-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.15.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-catchclauseevaluation" title="Runtime Semantics: CatchClauseEvaluation"><span class="secnum">14.15.2</span> RS: CatchClauseEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-try-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.15.3</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-statements-and-declarations.html#sec-debugger-statement" title="The debugger Statement"><span class="secnum">14.16</span> The <code>debugger</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-statements-and-declarations.html#sec-debugger-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.16.1</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-ecmascript-language-functions-and-classes" title="ECMAScript Language: Functions and Classes"><span class="secnum">15</span> ECMAScript Language: Functions and Classes</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-parameter-lists" title="Parameter Lists"><span class="secnum">15.1</span> Parameter Lists</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-parameter-lists-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-containsexpression" title="Static Semantics: ContainsExpression"><span class="secnum">15.1.2</span> SS: ContainsExpression</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-issimpleparameterlist" title="Static Semantics: IsSimpleParameterList"><span class="secnum">15.1.3</span> SS: IsSimpleParameterList</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-hasinitializer" title="Static Semantics: HasInitializer"><span class="secnum">15.1.4</span> SS: HasInitializer</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-expectedargumentcount" title="Static Semantics: ExpectedArgumentCount"><span class="secnum">15.1.5</span> SS: ExpectedArgumentCount</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-function-definitions" title="Function Definitions"><span class="secnum">15.2</span> Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-function-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.2.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-functionbodycontainsusestrict" title="Static Semantics: FunctionBodyContainsUseStrict"><span class="secnum">15.2.2</span> SS: FunctionBodyContainsUseStrict</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-evaluatefunctionbody" title="Runtime Semantics: EvaluateFunctionBody"><span class="secnum">15.2.3</span> RS: EvaluateFunctionBody</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateordinaryfunctionobject" title="Runtime Semantics: InstantiateOrdinaryFunctionObject"><span class="secnum">15.2.4</span> RS: InstantiateOrdinaryFunctionObject</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateordinaryfunctionexpression" title="Runtime Semantics: InstantiateOrdinaryFunctionExpression"><span class="secnum">15.2.5</span> RS: InstantiateOrdinaryFunctionExpression</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-function-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">15.2.6</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-arrow-function-definitions" title="Arrow Function Definitions"><span class="secnum">15.3</span> Arrow Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-arrow-function-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.3.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-concisebodycontainsusestrict" title="Static Semantics: ConciseBodyContainsUseStrict"><span class="secnum">15.3.2</span> SS: ConciseBodyContainsUseStrict</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-evaluateconcisebody" title="Runtime Semantics: EvaluateConciseBody"><span class="secnum">15.3.3</span> RS: EvaluateConciseBody</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiatearrowfunctionexpression" title="Runtime Semantics: InstantiateArrowFunctionExpression"><span class="secnum">15.3.4</span> RS: InstantiateArrowFunctionExpression</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-arrow-function-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">15.3.5</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-method-definitions" title="Method Definitions"><span class="secnum">15.4</span> Method Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-method-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.4.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-hasdirectsuper" title="Static Semantics: HasDirectSuper"><span class="secnum">15.4.2</span> SS: HasDirectSuper</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-specialmethod" title="Static Semantics: SpecialMethod"><span class="secnum">15.4.3</span> SS: SpecialMethod</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-definemethod" title="Runtime Semantics: DefineMethod"><span class="secnum">15.4.4</span> RS: DefineMethod</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-methoddefinitionevaluation" title="Runtime Semantics: MethodDefinitionEvaluation"><span class="secnum">15.4.5</span> RS: MethodDefinitionEvaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-generator-function-definitions" title="Generator Function Definitions"><span class="secnum">15.5</span> Generator Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-generator-function-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.5.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-evaluategeneratorbody" title="Runtime Semantics: EvaluateGeneratorBody"><span class="secnum">15.5.2</span> RS: EvaluateGeneratorBody</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiategeneratorfunctionobject" title="Runtime Semantics: InstantiateGeneratorFunctionObject"><span class="secnum">15.5.3</span> RS: InstantiateGeneratorFunctionObject</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiategeneratorfunctionexpression" title="Runtime Semantics: InstantiateGeneratorFunctionExpression"><span class="secnum">15.5.4</span> RS: InstantiateGeneratorFunctionExpression</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-generator-function-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">15.5.5</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-async-generator-function-definitions" title="Async Generator Function Definitions"><span class="secnum">15.6</span> Async Generator Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-async-generator-function-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.6.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-evaluateasyncgeneratorbody" title="Runtime Semantics: EvaluateAsyncGeneratorBody"><span class="secnum">15.6.2</span> RS: EvaluateAsyncGeneratorBody</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateasyncgeneratorfunctionobject" title="Runtime Semantics: InstantiateAsyncGeneratorFunctionObject"><span class="secnum">15.6.3</span> RS: InstantiateAsyncGeneratorFunctionObject</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateasyncgeneratorfunctionexpression" title="Runtime Semantics: InstantiateAsyncGeneratorFunctionExpression"><span class="secnum">15.6.4</span> RS: InstantiateAsyncGeneratorFunctionExpression</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-asyncgenerator-definitions-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">15.6.5</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-class-definitions" title="Class Definitions"><span class="secnum">15.7</span> Class Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-class-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.7.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-classelementkind" title="Static Semantics: ClassElementKind"><span class="secnum">15.7.2</span> SS: ClassElementKind</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-constructormethod" title="Static Semantics: ConstructorMethod"><span class="secnum">15.7.3</span> SS: ConstructorMethod</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-isstatic" title="Static Semantics: IsStatic"><span class="secnum">15.7.4</span> SS: IsStatic</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-nonconstructorelements" title="Static Semantics: NonConstructorElements"><span class="secnum">15.7.5</span> SS: NonConstructorElements</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-prototypepropertynamelist" title="Static Semantics: PrototypePropertyNameList"><span class="secnum">15.7.6</span> SS: PrototypePropertyNameList</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-allprivateidentifiersvalid" title="Static Semantics: AllPrivateIdentifiersValid"><span class="secnum">15.7.7</span> SS: AllPrivateIdentifiersValid</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-privateboundidentifiers" title="Static Semantics: PrivateBoundIdentifiers"><span class="secnum">15.7.8</span> SS: PrivateBoundIdentifiers</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-containsarguments" title="Static Semantics: ContainsArguments"><span class="secnum">15.7.9</span> SS: ContainsArguments</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-classfielddefinitionevaluation" title="Runtime Semantics: ClassFieldDefinitionEvaluation"><span class="secnum">15.7.10</span> RS: ClassFieldDefinitionEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-classstaticblockdefinitionevaluation" title="Runtime Semantics: ClassStaticBlockDefinitionEvaluation"><span class="secnum">15.7.11</span> RS: ClassStaticBlockDefinitionEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-evaluateclassstaticblockbody" title="Runtime Semantics: EvaluateClassStaticBlockBody"><span class="secnum">15.7.12</span> RS: EvaluateClassStaticBlockBody</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-classelementevaluation" title="Runtime Semantics: ClassElementEvaluation"><span class="secnum">15.7.13</span> RS: ClassElementEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-classdefinitionevaluation" title="Runtime Semantics: ClassDefinitionEvaluation"><span class="secnum">15.7.14</span> RS: ClassDefinitionEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-bindingclassdeclarationevaluation" title="Runtime Semantics: BindingClassDeclarationEvaluation"><span class="secnum">15.7.15</span> RS: BindingClassDeclarationEvaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-class-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">15.7.16</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-async-function-definitions" title="Async Function Definitions"><span class="secnum">15.8</span> Async Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-async-function-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.8.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateasyncfunctionobject" title="Runtime Semantics: InstantiateAsyncFunctionObject"><span class="secnum">15.8.2</span> RS: InstantiateAsyncFunctionObject</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateasyncfunctionexpression" title="Runtime Semantics: InstantiateAsyncFunctionExpression"><span class="secnum">15.8.3</span> RS: InstantiateAsyncFunctionExpression</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-evaluateasyncfunctionbody" title="Runtime Semantics: EvaluateAsyncFunctionBody"><span class="secnum">15.8.4</span> RS: EvaluateAsyncFunctionBody</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-async-function-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">15.8.5</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-async-arrow-function-definitions" title="Async Arrow Function Definitions"><span class="secnum">15.9</span> Async Arrow Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-async-arrow-function-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.9.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-asyncconcisebodycontainsusestrict" title="Static Semantics: AsyncConciseBodyContainsUseStrict"><span class="secnum">15.9.2</span> SS: AsyncConciseBodyContainsUseStrict</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-evaluateasyncconcisebody" title="Runtime Semantics: EvaluateAsyncConciseBody"><span class="secnum">15.9.3</span> RS: EvaluateAsyncConciseBody</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-runtime-semantics-instantiateasyncarrowfunctionexpression" title="Runtime Semantics: InstantiateAsyncArrowFunctionExpression"><span class="secnum">15.9.4</span> RS: InstantiateAsyncArrowFunctionExpression</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-async-arrow-function-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">15.9.5</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-functions-and-classes.html#sec-tail-position-calls" title="Tail Position Calls"><span class="secnum">15.10</span> Tail Position Calls</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-isintailposition" title="Static Semantics: IsInTailPosition ( call )"><span class="secnum">15.10.1</span> SS: IsInTailPosition ( <var>call</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-static-semantics-hascallintailposition" title="Static Semantics: HasCallInTailPosition"><span class="secnum">15.10.2</span> SS: HasCallInTailPosition</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-functions-and-classes.html#sec-preparefortailcall" title="PrepareForTailCall ( )"><span class="secnum">15.10.3</span> PrepareForTailCall ( )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-ecmascript-language-scripts-and-modules" title="ECMAScript Language: Scripts and Modules"><span class="secnum">16</span> ECMAScript Language: Scripts and Modules</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-scripts" title="Scripts"><span class="secnum">16.1</span> Scripts</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-scripts-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">16.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-scriptisstrict" title="Static Semantics: ScriptIsStrict"><span class="secnum">16.1.2</span> SS: ScriptIsStrict</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-script-semantics-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">16.1.3</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-script-records" title="Script Records"><span class="secnum">16.1.4</span> Script Records</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-parse-script" title="ParseScript ( sourceText, realm, hostDefined )"><span class="secnum">16.1.5</span> ParseScript ( <var>sourceText</var>, <var>realm</var>, <var>hostDefined</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-runtime-semantics-scriptevaluation" title="ScriptEvaluation ( scriptRecord )"><span class="secnum">16.1.6</span> ScriptEvaluation ( <var>scriptRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-globaldeclarationinstantiation" title="GlobalDeclarationInstantiation ( script, env )"><span class="secnum">16.1.7</span> GlobalDeclarationInstantiation ( <var>script</var>, <var>env</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-modules" title="Modules"><span class="secnum">16.2</span> Modules</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-module-semantics" title="Module Semantics"><span class="secnum">16.2.1</span> Module Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-module-semantics-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">16.2.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-importedlocalnames" title="Static Semantics: ImportedLocalNames ( importEntries )"><span class="secnum">16.2.1.2</span> SS: ImportedLocalNames ( <var>importEntries</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-static-semantics-modulerequests" title="Static Semantics: ModuleRequests"><span class="secnum">16.2.1.3</span> SS: ModuleRequests</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-abstract-module-records" title="Abstract Module Records"><span class="secnum">16.2.1.4</span> Abstract Module Records</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-cyclic-module-records" title="Cyclic Module Records"><span class="secnum">16.2.1.5</span> Cyclic Module Records</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-LoadRequestedModules" title="LoadRequestedModules ( [ hostDefined ] )"><span class="secnum">16.2.1.5.1</span> LoadRequestedModules ( [ <var>hostDefined</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-InnerModuleLoading" title="InnerModuleLoading ( state, module )"><span class="secnum">16.2.1.5.1.1</span> InnerModuleLoading ( <var>state</var>, <var>module</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-ContinueModuleLoading" title="ContinueModuleLoading ( state, moduleCompletion )"><span class="secnum">16.2.1.5.1.2</span> ContinueModuleLoading ( <var>state</var>, <var>moduleCompletion</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-moduledeclarationlinking" title="Link ( )"><span class="secnum">16.2.1.5.2</span> Link ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-InnerModuleLinking" title="InnerModuleLinking ( module, stack, index )"><span class="secnum">16.2.1.5.2.1</span> InnerModuleLinking ( <var>module</var>, <var>stack</var>, <var>index</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-moduleevaluation" title="Evaluate ( )"><span class="secnum">16.2.1.5.3</span> Evaluate ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-innermoduleevaluation" title="InnerModuleEvaluation ( module, stack, index )"><span class="secnum">16.2.1.5.3.1</span> InnerModuleEvaluation ( <var>module</var>, <var>stack</var>, <var>index</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-execute-async-module" title="ExecuteAsyncModule ( module )"><span class="secnum">16.2.1.5.3.2</span> ExecuteAsyncModule ( <var>module</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-gather-available-ancestors" title="GatherAvailableAncestors ( module, execList )"><span class="secnum">16.2.1.5.3.3</span> GatherAvailableAncestors ( <var>module</var>, <var>execList</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-async-module-execution-fulfilled" title="AsyncModuleExecutionFulfilled ( module )"><span class="secnum">16.2.1.5.3.4</span> AsyncModuleExecutionFulfilled ( <var>module</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-async-module-execution-rejected" title="AsyncModuleExecutionRejected ( module, error )"><span class="secnum">16.2.1.5.3.5</span> AsyncModuleExecutionRejected ( <var>module</var>, <var>error</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-example-cyclic-module-record-graphs" title="Example Cyclic Module Record Graphs"><span class="secnum">16.2.1.5.4</span> Example Cyclic Module Record Graphs</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-source-text-module-records" title="Source Text Module Records"><span class="secnum">16.2.1.6</span> Source Text Module Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-parsemodule" title="ParseModule ( sourceText, realm, hostDefined )"><span class="secnum">16.2.1.6.1</span> ParseModule ( <var>sourceText</var>, <var>realm</var>, <var>hostDefined</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-getexportednames" title="GetExportedNames ( [ exportStarSet ] )"><span class="secnum">16.2.1.6.2</span> GetExportedNames ( [ <var>exportStarSet</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-resolveexport" title="ResolveExport ( exportName [ , resolveSet ] )"><span class="secnum">16.2.1.6.3</span> ResolveExport ( <var>exportName</var> [ , <var>resolveSet</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-source-text-module-record-initialize-environment" title="InitializeEnvironment ( )"><span class="secnum">16.2.1.6.4</span> InitializeEnvironment ( )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-source-text-module-record-execute-module" title="ExecuteModule ( [ capability ] )"><span class="secnum">16.2.1.6.5</span> ExecuteModule ( [ <var>capability</var> ] )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-GetImportedModule" title="GetImportedModule ( referrer, specifier )"><span class="secnum">16.2.1.7</span> GetImportedModule ( <var>referrer</var>, <var>specifier</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-HostLoadImportedModule" title="HostLoadImportedModule ( referrer, specifier, hostDefined, payload )"><span class="secnum">16.2.1.8</span> HostLoadImportedModule ( <var>referrer</var>, <var>specifier</var>, <var>hostDefined</var>, <var>payload</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-FinishLoadingImportedModule" title="FinishLoadingImportedModule ( referrer, specifier, payload, result )"><span class="secnum">16.2.1.9</span> FinishLoadingImportedModule ( <var>referrer</var>, <var>specifier</var>, <var>payload</var>, <var>result</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-getmodulenamespace" title="GetModuleNamespace ( module )"><span class="secnum">16.2.1.10</span> GetModuleNamespace ( <var>module</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-module-semantics-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">16.2.1.11</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-imports" title="Imports"><span class="secnum">16.2.2</span> Imports</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-imports-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">16.2.2.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-static-semantics-importentries" title="Static Semantics: ImportEntries"><span class="secnum">16.2.2.2</span> SS: ImportEntries</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-static-semantics-importentriesformodule" title="Static Semantics: ImportEntriesForModule"><span class="secnum">16.2.2.3</span> SS: ImportEntriesForModule</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-exports" title="Exports"><span class="secnum">16.2.3</span> Exports</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-exports-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">16.2.3.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-static-semantics-exportedbindings" title="Static Semantics: ExportedBindings"><span class="secnum">16.2.3.2</span> SS: ExportedBindings</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-static-semantics-exportednames" title="Static Semantics: ExportedNames"><span class="secnum">16.2.3.3</span> SS: ExportedNames</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-static-semantics-exportentries" title="Static Semantics: ExportEntries"><span class="secnum">16.2.3.4</span> SS: ExportEntries</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-static-semantics-exportentriesformodule" title="Static Semantics: ExportEntriesForModule"><span class="secnum">16.2.3.5</span> SS: ExportEntriesForModule</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-static-semantics-referencedbindings" title="Static Semantics: ReferencedBindings"><span class="secnum">16.2.3.6</span> SS: ReferencedBindings</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-exports-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">16.2.3.7</span> RS: Evaluation</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="error-handling-and-language-extensions.html#sec-error-handling-and-language-extensions" title="Error Handling and Language Extensions"><span class="secnum">17</span> Error Handling and Language Extensions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="error-handling-and-language-extensions.html#sec-forbidden-extensions" title="Forbidden Extensions"><span class="secnum">17.1</span> Forbidden Extensions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-standard-built-in-objects.html#sec-ecmascript-standard-built-in-objects" title="ECMAScript Standard Built-in Objects"><span class="secnum">18</span> ECMAScript Standard Built-in Objects</a></li><li><span class="item-toggle">+</span><a href="global-object.html#sec-global-object" title="The Global Object"><span class="secnum">19</span> The Global Object</a><ol class="toc"><li><span class="item-toggle">+</span><a href="global-object.html#sec-value-properties-of-the-global-object" title="Value Properties of the Global Object"><span class="secnum">19.1</span> Value Properties of the Global Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="global-object.html#sec-globalthis" title="globalThis"><span class="secnum">19.1.1</span> globalThis</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-value-properties-of-the-global-object-infinity" title="Infinity"><span class="secnum">19.1.2</span> Infinity</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-value-properties-of-the-global-object-nan" title="NaN"><span class="secnum">19.1.3</span> NaN</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-undefined" title="undefined"><span class="secnum">19.1.4</span> undefined</a></li></ol></li><li><span class="item-toggle">+</span><a href="global-object.html#sec-function-properties-of-the-global-object" title="Function Properties of the Global Object"><span class="secnum">19.2</span> Function Properties of the Global Object</a><ol class="toc"><li><span class="item-toggle">+</span><a href="global-object.html#sec-eval-x" title="eval ( x )"><span class="secnum">19.2.1</span> eval ( <var>x</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="global-object.html#sec-performeval" title="PerformEval ( x, strictCaller, direct )"><span class="secnum">19.2.1.1</span> PerformEval ( <var>x</var>, <var>strictCaller</var>, <var>direct</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-hostensurecancompilestrings" title="HostEnsureCanCompileStrings ( calleeRealm, parameterStrings, bodyString, direct )"><span class="secnum">19.2.1.2</span> HostEnsureCanCompileStrings ( <var>calleeRealm</var>, <var>parameterStrings</var>, <var>bodyString</var>, <var>direct</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-evaldeclarationinstantiation" title="EvalDeclarationInstantiation ( body, varEnv, lexEnv, privateEnv, strict )"><span class="secnum">19.2.1.3</span> EvalDeclarationInstantiation ( <var>body</var>, <var>varEnv</var>, <var>lexEnv</var>, <var>privateEnv</var>, <var>strict</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-isfinite-number" title="isFinite ( number )"><span class="secnum">19.2.2</span> isFinite ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-isnan-number" title="isNaN ( number )"><span class="secnum">19.2.3</span> isNaN ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-parsefloat-string" title="parseFloat ( string )"><span class="secnum">19.2.4</span> parseFloat ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-parseint-string-radix" title="parseInt ( string, radix )"><span class="secnum">19.2.5</span> parseInt ( <var>string</var>, <var>radix</var> )</a></li><li><span class="item-toggle">+</span><a href="global-object.html#sec-uri-handling-functions" title="URI Handling Functions"><span class="secnum">19.2.6</span> URI Handling Functions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="global-object.html#sec-decodeuri-encodeduri" title="decodeURI ( encodedURI )"><span class="secnum">19.2.6.1</span> decodeURI ( <var>encodedURI</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-decodeuricomponent-encodeduricomponent" title="decodeURIComponent ( encodedURIComponent )"><span class="secnum">19.2.6.2</span> decodeURIComponent ( <var>encodedURIComponent</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-encodeuri-uri" title="encodeURI ( uri )"><span class="secnum">19.2.6.3</span> encodeURI ( <var>uri</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-encodeuricomponent-uricomponent" title="encodeURIComponent ( uriComponent )"><span class="secnum">19.2.6.4</span> encodeURIComponent ( <var>uriComponent</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-encode" title="Encode ( string, extraUnescaped )"><span class="secnum">19.2.6.5</span> Encode ( <var>string</var>, <var>extraUnescaped</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-decode" title="Decode ( string, preserveEscapeSet )"><span class="secnum">19.2.6.6</span> Decode ( <var>string</var>, <var>preserveEscapeSet</var> )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-parsehexoctet" title="ParseHexOctet ( string, position )"><span class="secnum">19.2.6.7</span> ParseHexOctet ( <var>string</var>, <var>position</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="global-object.html#sec-constructor-properties-of-the-global-object" title="Constructor Properties of the Global Object"><span class="secnum">19.3</span> Constructor Properties of the Global Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-aggregate-error" title="AggregateError ( . . . )"><span class="secnum">19.3.1</span> AggregateError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-array" title="Array ( . . . )"><span class="secnum">19.3.2</span> Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-arraybuffer" title="ArrayBuffer ( . . . )"><span class="secnum">19.3.3</span> ArrayBuffer ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-bigint" title="BigInt ( . . . )"><span class="secnum">19.3.4</span> BigInt ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-bigint64array" title="BigInt64Array ( . . . )"><span class="secnum">19.3.5</span> BigInt64Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-biguint64array" title="BigUint64Array ( . . . )"><span class="secnum">19.3.6</span> BigUint64Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-boolean" title="Boolean ( . . . )"><span class="secnum">19.3.7</span> Boolean ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-dataview" title="DataView ( . . . )"><span class="secnum">19.3.8</span> DataView ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-date" title="Date ( . . . )"><span class="secnum">19.3.9</span> Date ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-error" title="Error ( . . . )"><span class="secnum">19.3.10</span> Error ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-evalerror" title="EvalError ( . . . )"><span class="secnum">19.3.11</span> EvalError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-finalization-registry" title="FinalizationRegistry ( . . . )"><span class="secnum">19.3.12</span> FinalizationRegistry ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-float32array" title="Float32Array ( . . . )"><span class="secnum">19.3.13</span> Float32Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-float64array" title="Float64Array ( . . . )"><span class="secnum">19.3.14</span> Float64Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-function" title="Function ( . . . )"><span class="secnum">19.3.15</span> Function ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-int8array" title="Int8Array ( . . . )"><span class="secnum">19.3.16</span> Int8Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-int16array" title="Int16Array ( . . . )"><span class="secnum">19.3.17</span> Int16Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-int32array" title="Int32Array ( . . . )"><span class="secnum">19.3.18</span> Int32Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-iterator" title="Iterator ( . . . )"><span class="secnum">19.3.19</span> Iterator ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-map" title="Map ( . . . )"><span class="secnum">19.3.20</span> Map ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-number" title="Number ( . . . )"><span class="secnum">19.3.21</span> Number ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-object" title="Object ( . . . )"><span class="secnum">19.3.22</span> Object ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-promise" title="Promise ( . . . )"><span class="secnum">19.3.23</span> Promise ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-proxy" title="Proxy ( . . . )"><span class="secnum">19.3.24</span> Proxy ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-rangeerror" title="RangeError ( . . . )"><span class="secnum">19.3.25</span> RangeError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-referenceerror" title="ReferenceError ( . . . )"><span class="secnum">19.3.26</span> ReferenceError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-regexp" title="RegExp ( . . . )"><span class="secnum">19.3.27</span> RegExp ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-set" title="Set ( . . . )"><span class="secnum">19.3.28</span> Set ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-sharedarraybuffer" title="SharedArrayBuffer ( . . . )"><span class="secnum">19.3.29</span> SharedArrayBuffer ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-string" title="String ( . . . )"><span class="secnum">19.3.30</span> String ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-symbol" title="Symbol ( . . . )"><span class="secnum">19.3.31</span> Symbol ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-syntaxerror" title="SyntaxError ( . . . )"><span class="secnum">19.3.32</span> SyntaxError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-typeerror" title="TypeError ( . . . )"><span class="secnum">19.3.33</span> TypeError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-uint8array" title="Uint8Array ( . . . )"><span class="secnum">19.3.34</span> Uint8Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-uint8clampedarray" title="Uint8ClampedArray ( . . . )"><span class="secnum">19.3.35</span> Uint8ClampedArray ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-uint16array" title="Uint16Array ( . . . )"><span class="secnum">19.3.36</span> Uint16Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-uint32array" title="Uint32Array ( . . . )"><span class="secnum">19.3.37</span> Uint32Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-urierror" title="URIError ( . . . )"><span class="secnum">19.3.38</span> URIError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-weakmap" title="WeakMap ( . . . )"><span class="secnum">19.3.39</span> WeakMap ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-weakref" title="WeakRef ( . . . )"><span class="secnum">19.3.40</span> WeakRef ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-weakset" title="WeakSet ( . . . )"><span class="secnum">19.3.41</span> WeakSet ( . . . )</a></li></ol></li><li><span class="item-toggle">+</span><a href="global-object.html#sec-other-properties-of-the-global-object" title="Other Properties of the Global Object"><span class="secnum">19.4</span> Other Properties of the Global Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="global-object.html#sec-atomics" title="Atomics"><span class="secnum">19.4.1</span> Atomics</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-json" title="JSON"><span class="secnum">19.4.2</span> JSON</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-math" title="Math"><span class="secnum">19.4.3</span> Math</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-reflect" title="Reflect"><span class="secnum">19.4.4</span> Reflect</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-fundamental-objects" title="Fundamental Objects"><span class="secnum">20</span> Fundamental Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-object-objects" title="Object Objects"><span class="secnum">20.1</span> Object Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-object-constructor" title="The Object Constructor"><span class="secnum">20.1.1</span> The Object Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object-value" title="Object ( [ value ] )"><span class="secnum">20.1.1.1</span> Object ( [ <var>value</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-object-constructor" title="Properties of the Object Constructor"><span class="secnum">20.1.2</span> Properties of the Object Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.assign" title="Object.assign ( target, ...sources )"><span class="secnum">20.1.2.1</span> Object.assign ( <var>target</var>, ...<var>sources</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.create" title="Object.create ( O, Properties )"><span class="secnum">20.1.2.2</span> Object.create ( <var>O</var>, <var>Properties</var> )</a></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-object.defineproperties" title="Object.defineProperties ( O, Properties )"><span class="secnum">20.1.2.3</span> Object.defineProperties ( <var>O</var>, <var>Properties</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-objectdefineproperties" title="ObjectDefineProperties ( O, Properties )"><span class="secnum">20.1.2.3.1</span> ObjectDefineProperties ( <var>O</var>, <var>Properties</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.defineproperty" title="Object.defineProperty ( O, P, Attributes )"><span class="secnum">20.1.2.4</span> Object.defineProperty ( <var>O</var>, <var>P</var>, <var>Attributes</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.entries" title="Object.entries ( O )"><span class="secnum">20.1.2.5</span> Object.entries ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.freeze" title="Object.freeze ( O )"><span class="secnum">20.1.2.6</span> Object.freeze ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.fromentries" title="Object.fromEntries ( iterable )"><span class="secnum">20.1.2.7</span> Object.fromEntries ( <var>iterable</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.getownpropertydescriptor" title="Object.getOwnPropertyDescriptor ( O, P )"><span class="secnum">20.1.2.8</span> Object.getOwnPropertyDescriptor ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.getownpropertydescriptors" title="Object.getOwnPropertyDescriptors ( O )"><span class="secnum">20.1.2.9</span> Object.getOwnPropertyDescriptors ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.getownpropertynames" title="Object.getOwnPropertyNames ( O )"><span class="secnum">20.1.2.10</span> Object.getOwnPropertyNames ( <var>O</var> )</a></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-object.getownpropertysymbols" title="Object.getOwnPropertySymbols ( O )"><span class="secnum">20.1.2.11</span> Object.getOwnPropertySymbols ( <var>O</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-getownpropertykeys" title="GetOwnPropertyKeys ( O, type )"><span class="secnum">20.1.2.11.1</span> GetOwnPropertyKeys ( <var>O</var>, <var>type</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.getprototypeof" title="Object.getPrototypeOf ( O )"><span class="secnum">20.1.2.12</span> Object.getPrototypeOf ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.groupby" title="Object.groupBy ( items, callback )"><span class="secnum">20.1.2.13</span> Object.groupBy ( <var>items</var>, <var>callback</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.hasown" title="Object.hasOwn ( O, P )"><span class="secnum">20.1.2.14</span> Object.hasOwn ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.is" title="Object.is ( value1, value2 )"><span class="secnum">20.1.2.15</span> Object.is ( <var>value1</var>, <var>value2</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.isextensible" title="Object.isExtensible ( O )"><span class="secnum">20.1.2.16</span> Object.isExtensible ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.isfrozen" title="Object.isFrozen ( O )"><span class="secnum">20.1.2.17</span> Object.isFrozen ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.issealed" title="Object.isSealed ( O )"><span class="secnum">20.1.2.18</span> Object.isSealed ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.keys" title="Object.keys ( O )"><span class="secnum">20.1.2.19</span> Object.keys ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.preventextensions" title="Object.preventExtensions ( O )"><span class="secnum">20.1.2.20</span> Object.preventExtensions ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype" title="Object.prototype"><span class="secnum">20.1.2.21</span> Object.prototype</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.seal" title="Object.seal ( O )"><span class="secnum">20.1.2.22</span> Object.seal ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.setprototypeof" title="Object.setPrototypeOf ( O, proto )"><span class="secnum">20.1.2.23</span> Object.setPrototypeOf ( <var>O</var>, <var>proto</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.values" title="Object.values ( O )"><span class="secnum">20.1.2.24</span> Object.values ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-object-prototype-object" title="Properties of the Object Prototype Object"><span class="secnum">20.1.3</span> Properties of the Object Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.constructor" title="Object.prototype.constructor"><span class="secnum">20.1.3.1</span> Object.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.hasownproperty" title="Object.prototype.hasOwnProperty ( V )"><span class="secnum">20.1.3.2</span> Object.prototype.hasOwnProperty ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.isprototypeof" title="Object.prototype.isPrototypeOf ( V )"><span class="secnum">20.1.3.3</span> Object.prototype.isPrototypeOf ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.propertyisenumerable" title="Object.prototype.propertyIsEnumerable ( V )"><span class="secnum">20.1.3.4</span> Object.prototype.propertyIsEnumerable ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.tolocalestring" title="Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">20.1.3.5</span> Object.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.tostring" title="Object.prototype.toString ( )"><span class="secnum">20.1.3.6</span> Object.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.valueof" title="Object.prototype.valueOf ( )"><span class="secnum">20.1.3.7</span> Object.prototype.valueOf ( )</a></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-object.prototype.__proto__" title="Object.prototype.__proto__"><span class="secnum">20.1.3.8</span> Object.prototype.__proto__</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-get-object.prototype.__proto__" title="get Object.prototype.__proto__"><span class="secnum">20.1.3.8.1</span> get Object.prototype.__proto__</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-set-object.prototype.__proto__" title="set Object.prototype.__proto__"><span class="secnum">20.1.3.8.2</span> set Object.prototype.__proto__</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-object.prototype-legacy-accessor-methods" title="Legacy Object.prototype Accessor Methods"><span class="secnum">20.1.3.9</span> Legacy Object.prototype Accessor Methods</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.__defineGetter__" title="Object.prototype.__defineGetter__ ( P, getter )"><span class="secnum">20.1.3.9.1</span> Object.prototype.__defineGetter__ ( <var>P</var>, <var>getter</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.__defineSetter__" title="Object.prototype.__defineSetter__ ( P, setter )"><span class="secnum">20.1.3.9.2</span> Object.prototype.__defineSetter__ ( <var>P</var>, <var>setter</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.__lookupGetter__" title="Object.prototype.__lookupGetter__ ( P )"><span class="secnum">20.1.3.9.3</span> Object.prototype.__lookupGetter__ ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-object.prototype.__lookupSetter__" title="Object.prototype.__lookupSetter__ ( P )"><span class="secnum">20.1.3.9.4</span> Object.prototype.__lookupSetter__ ( <var>P</var> )</a></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-properties-of-object-instances" title="Properties of Object Instances"><span class="secnum">20.1.4</span> Properties of Object Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-function-objects" title="Function Objects"><span class="secnum">20.2</span> Function Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-function-constructor" title="The Function Constructor"><span class="secnum">20.2.1</span> The Function Constructor</a><ol class="toc"><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-function-p1-p2-pn-body" title="Function ( ...parameterArgs, bodyArg )"><span class="secnum">20.2.1.1</span> Function ( ...<var>parameterArgs</var>, <var>bodyArg</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-createdynamicfunction" title="CreateDynamicFunction ( constructor, newTarget, kind, parameterArgs, bodyArg )"><span class="secnum">20.2.1.1.1</span> CreateDynamicFunction ( <var>constructor</var>, <var>newTarget</var>, <var>kind</var>, <var>parameterArgs</var>, <var>bodyArg</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-function-constructor" title="Properties of the Function Constructor"><span class="secnum">20.2.2</span> Properties of the Function Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-function.prototype" title="Function.prototype"><span class="secnum">20.2.2.1</span> Function.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-function-prototype-object" title="Properties of the Function Prototype Object"><span class="secnum">20.2.3</span> Properties of the Function Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-function.prototype.apply" title="Function.prototype.apply ( thisArg, argArray )"><span class="secnum">20.2.3.1</span> Function.prototype.apply ( <var>thisArg</var>, <var>argArray</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-function.prototype.bind" title="Function.prototype.bind ( thisArg, ...args )"><span class="secnum">20.2.3.2</span> Function.prototype.bind ( <var>thisArg</var>, ...<var>args</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-function.prototype.call" title="Function.prototype.call ( thisArg, ...args )"><span class="secnum">20.2.3.3</span> Function.prototype.call ( <var>thisArg</var>, ...<var>args</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-function.prototype.constructor" title="Function.prototype.constructor"><span class="secnum">20.2.3.4</span> Function.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-function.prototype.tostring" title="Function.prototype.toString ( )"><span class="secnum">20.2.3.5</span> Function.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-function.prototype-%symbol.hasinstance%" title="Function.prototype [ %Symbol.hasInstance% ] ( V )"><span class="secnum">20.2.3.6</span> Function.prototype [ %Symbol.hasInstance% ] ( <var>V</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-function-instances" title="Function Instances"><span class="secnum">20.2.4</span> Function Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-function-instances-length" title="length"><span class="secnum">20.2.4.1</span> length</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-function-instances-name" title="name"><span class="secnum">20.2.4.2</span> name</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-function-instances-prototype" title="prototype"><span class="secnum">20.2.4.3</span> prototype</a></li></ol></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-hosthassourcetextavailable" title="HostHasSourceTextAvailable ( func )"><span class="secnum">20.2.5</span> HostHasSourceTextAvailable ( <var>func</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-boolean-objects" title="Boolean Objects"><span class="secnum">20.3</span> Boolean Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-boolean-constructor" title="The Boolean Constructor"><span class="secnum">20.3.1</span> The Boolean Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-boolean-constructor-boolean-value" title="Boolean ( value )"><span class="secnum">20.3.1.1</span> Boolean ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-boolean-constructor" title="Properties of the Boolean Constructor"><span class="secnum">20.3.2</span> Properties of the Boolean Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-boolean.prototype" title="Boolean.prototype"><span class="secnum">20.3.2.1</span> Boolean.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-boolean-prototype-object" title="Properties of the Boolean Prototype Object"><span class="secnum">20.3.3</span> Properties of the Boolean Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-boolean.prototype.constructor" title="Boolean.prototype.constructor"><span class="secnum">20.3.3.1</span> Boolean.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-boolean.prototype.tostring" title="Boolean.prototype.toString ( )"><span class="secnum">20.3.3.2</span> Boolean.prototype.toString ( )</a></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-boolean.prototype.valueof" title="Boolean.prototype.valueOf ( )"><span class="secnum">20.3.3.3</span> Boolean.prototype.valueOf ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-thisbooleanvalue" title="ThisBooleanValue ( value )"><span class="secnum">20.3.3.3.1</span> ThisBooleanValue ( <var>value</var> )</a></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-properties-of-boolean-instances" title="Properties of Boolean Instances"><span class="secnum">20.3.4</span> Properties of Boolean Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-symbol-objects" title="Symbol Objects"><span class="secnum">20.4</span> Symbol Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-symbol-constructor" title="The Symbol Constructor"><span class="secnum">20.4.1</span> The Symbol Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol-description" title="Symbol ( [ description ] )"><span class="secnum">20.4.1.1</span> Symbol ( [ <var>description</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-symbol-constructor" title="Properties of the Symbol Constructor"><span class="secnum">20.4.2</span> Properties of the Symbol Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.asynciterator" title="Symbol.asyncIterator"><span class="secnum">20.4.2.1</span> Symbol.asyncIterator</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.for" title="Symbol.for ( key )"><span class="secnum">20.4.2.2</span> Symbol.for ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.hasinstance" title="Symbol.hasInstance"><span class="secnum">20.4.2.3</span> Symbol.hasInstance</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.isconcatspreadable" title="Symbol.isConcatSpreadable"><span class="secnum">20.4.2.4</span> Symbol.isConcatSpreadable</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.iterator" title="Symbol.iterator"><span class="secnum">20.4.2.5</span> Symbol.iterator</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.keyfor" title="Symbol.keyFor ( sym )"><span class="secnum">20.4.2.6</span> Symbol.keyFor ( <var>sym</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.match" title="Symbol.match"><span class="secnum">20.4.2.7</span> Symbol.match</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.matchall" title="Symbol.matchAll"><span class="secnum">20.4.2.8</span> Symbol.matchAll</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.prototype" title="Symbol.prototype"><span class="secnum">20.4.2.9</span> Symbol.prototype</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.replace" title="Symbol.replace"><span class="secnum">20.4.2.10</span> Symbol.replace</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.search" title="Symbol.search"><span class="secnum">20.4.2.11</span> Symbol.search</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.species" title="Symbol.species"><span class="secnum">20.4.2.12</span> Symbol.species</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.split" title="Symbol.split"><span class="secnum">20.4.2.13</span> Symbol.split</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.toprimitive" title="Symbol.toPrimitive"><span class="secnum">20.4.2.14</span> Symbol.toPrimitive</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.tostringtag" title="Symbol.toStringTag"><span class="secnum">20.4.2.15</span> Symbol.toStringTag</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.unscopables" title="Symbol.unscopables"><span class="secnum">20.4.2.16</span> Symbol.unscopables</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-symbol-prototype-object" title="Properties of the Symbol Prototype Object"><span class="secnum">20.4.3</span> Properties of the Symbol Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.prototype.constructor" title="Symbol.prototype.constructor"><span class="secnum">20.4.3.1</span> Symbol.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.prototype.description" title="get Symbol.prototype.description"><span class="secnum">20.4.3.2</span> get Symbol.prototype.description</a></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-symbol.prototype.tostring" title="Symbol.prototype.toString ( )"><span class="secnum">20.4.3.3</span> Symbol.prototype.toString ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symboldescriptivestring" title="SymbolDescriptiveString ( sym )"><span class="secnum">20.4.3.3.1</span> SymbolDescriptiveString ( <var>sym</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-symbol.prototype.valueof" title="Symbol.prototype.valueOf ( )"><span class="secnum">20.4.3.4</span> Symbol.prototype.valueOf ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-thissymbolvalue" title="ThisSymbolValue ( value )"><span class="secnum">20.4.3.4.1</span> ThisSymbolValue ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.prototype-%symbol.toprimitive%" title="Symbol.prototype [ %Symbol.toPrimitive% ] ( hint )"><span class="secnum">20.4.3.5</span> Symbol.prototype [ %Symbol.toPrimitive% ] ( <var>hint</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-symbol.prototype-%symbol.tostringtag%" title="Symbol.prototype [ %Symbol.toStringTag% ]"><span class="secnum">20.4.3.6</span> Symbol.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-properties-of-symbol-instances" title="Properties of Symbol Instances"><span class="secnum">20.4.4</span> Properties of Symbol Instances</a></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-abstract-operations-for-symbols" title="Abstract Operations for Symbols"><span class="secnum">20.4.5</span> Abstract Operations for Symbols</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-keyforsymbol" title="KeyForSymbol ( sym )"><span class="secnum">20.4.5.1</span> KeyForSymbol ( <var>sym</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-error-objects" title="Error Objects"><span class="secnum">20.5</span> Error Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-error-constructor" title="The Error Constructor"><span class="secnum">20.5.1</span> The Error Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-error-message" title="Error ( message [ , options ] )"><span class="secnum">20.5.1.1</span> Error ( <var>message</var> [ , <var>options</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-error-constructor" title="Properties of the Error Constructor"><span class="secnum">20.5.2</span> Properties of the Error Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-error.prototype" title="Error.prototype"><span class="secnum">20.5.2.1</span> Error.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-error-prototype-object" title="Properties of the Error Prototype Object"><span class="secnum">20.5.3</span> Properties of the Error Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-error.prototype.constructor" title="Error.prototype.constructor"><span class="secnum">20.5.3.1</span> Error.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-error.prototype.message" title="Error.prototype.message"><span class="secnum">20.5.3.2</span> Error.prototype.message</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-error.prototype.name" title="Error.prototype.name"><span class="secnum">20.5.3.3</span> Error.prototype.name</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-error.prototype.tostring" title="Error.prototype.toString ( )"><span class="secnum">20.5.3.4</span> Error.prototype.toString ( )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-properties-of-error-instances" title="Properties of Error Instances"><span class="secnum">20.5.4</span> Properties of Error Instances</a></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-native-error-types-used-in-this-standard" title="Native Error Types Used in This Standard"><span class="secnum">20.5.5</span> Native Error Types Used in This Standard</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-native-error-types-used-in-this-standard-evalerror" title="EvalError"><span class="secnum">20.5.5.1</span> EvalError</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-native-error-types-used-in-this-standard-rangeerror" title="RangeError"><span class="secnum">20.5.5.2</span> RangeError</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-native-error-types-used-in-this-standard-referenceerror" title="ReferenceError"><span class="secnum">20.5.5.3</span> ReferenceError</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-native-error-types-used-in-this-standard-syntaxerror" title="SyntaxError"><span class="secnum">20.5.5.4</span> SyntaxError</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-native-error-types-used-in-this-standard-typeerror" title="TypeError"><span class="secnum">20.5.5.5</span> TypeError</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-native-error-types-used-in-this-standard-urierror" title="URIError"><span class="secnum">20.5.5.6</span> URIError</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-nativeerror-object-structure" title="NativeError Object Structure"><span class="secnum">20.5.6</span> <var>NativeError</var> Object Structure</a><ol class="toc"><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-nativeerror-constructors" title="The NativeError Constructors"><span class="secnum">20.5.6.1</span> The <var>NativeError</var> Constructors</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-nativeerror" title="NativeError ( message [ , options ] )"><span class="secnum">20.5.6.1.1</span> <var>NativeError</var> ( <var>message</var> [ , <var>options</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-nativeerror-constructors" title="Properties of the NativeError Constructors"><span class="secnum">20.5.6.2</span> Properties of the <var>NativeError</var> Constructors</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-nativeerror.prototype" title="NativeError.prototype"><span class="secnum">20.5.6.2.1</span> <var>NativeError</var>.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-nativeerror-prototype-objects" title="Properties of the NativeError Prototype Objects"><span class="secnum">20.5.6.3</span> Properties of the <var>NativeError</var> Prototype Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-nativeerror.prototype.constructor" title="NativeError.prototype.constructor"><span class="secnum">20.5.6.3.1</span> <var>NativeError</var>.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-nativeerror.prototype.message" title="NativeError.prototype.message"><span class="secnum">20.5.6.3.2</span> <var>NativeError</var>.prototype.message</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-nativeerror.prototype.name" title="NativeError.prototype.name"><span class="secnum">20.5.6.3.3</span> <var>NativeError</var>.prototype.name</a></li></ol></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-properties-of-nativeerror-instances" title="Properties of NativeError Instances"><span class="secnum">20.5.6.4</span> Properties of <var>NativeError</var> Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-aggregate-error-objects" title="AggregateError Objects"><span class="secnum">20.5.7</span> AggregateError Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-aggregate-error-constructor" title="The AggregateError Constructor"><span class="secnum">20.5.7.1</span> The AggregateError Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-aggregate-error" title="AggregateError ( errors, message [ , options ] )"><span class="secnum">20.5.7.1.1</span> AggregateError ( <var>errors</var>, <var>message</var> [ , <var>options</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-aggregate-error-constructors" title="Properties of the AggregateError Constructor"><span class="secnum">20.5.7.2</span> Properties of the AggregateError Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-aggregate-error.prototype" title="AggregateError.prototype"><span class="secnum">20.5.7.2.1</span> AggregateError.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-properties-of-the-aggregate-error-prototype-objects" title="Properties of the AggregateError Prototype Object"><span class="secnum">20.5.7.3</span> Properties of the AggregateError Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-aggregate-error.prototype.constructor" title="AggregateError.prototype.constructor"><span class="secnum">20.5.7.3.1</span> AggregateError.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-aggregate-error.prototype.message" title="AggregateError.prototype.message"><span class="secnum">20.5.7.3.2</span> AggregateError.prototype.message</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-aggregate-error.prototype.name" title="AggregateError.prototype.name"><span class="secnum">20.5.7.3.3</span> AggregateError.prototype.name</a></li></ol></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-properties-of-aggregate-error-instances" title="Properties of AggregateError Instances"><span class="secnum">20.5.7.4</span> Properties of AggregateError Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="fundamental-objects.html#sec-abstract-operations-for-error-objects" title="Abstract Operations for Error Objects"><span class="secnum">20.5.8</span> Abstract Operations for Error Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-installerrorcause" title="InstallErrorCause ( O, options )"><span class="secnum">20.5.8.1</span> InstallErrorCause ( <var>O</var>, <var>options</var> )</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-numbers-and-dates" title="Numbers and Dates"><span class="secnum">21</span> Numbers and Dates</a><ol class="toc"><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-number-objects" title="Number Objects"><span class="secnum">21.1</span> Number Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-number-constructor" title="The Number Constructor"><span class="secnum">21.1.1</span> The Number Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number-constructor-number-value" title="Number ( value )"><span class="secnum">21.1.1.1</span> Number ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-properties-of-the-number-constructor" title="Properties of the Number Constructor"><span class="secnum">21.1.2</span> Properties of the Number Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.epsilon" title="Number.EPSILON"><span class="secnum">21.1.2.1</span> Number.EPSILON</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.isfinite" title="Number.isFinite ( number )"><span class="secnum">21.1.2.2</span> Number.isFinite ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.isinteger" title="Number.isInteger ( number )"><span class="secnum">21.1.2.3</span> Number.isInteger ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.isnan" title="Number.isNaN ( number )"><span class="secnum">21.1.2.4</span> Number.isNaN ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.issafeinteger" title="Number.isSafeInteger ( number )"><span class="secnum">21.1.2.5</span> Number.isSafeInteger ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.max_safe_integer" title="Number.MAX_SAFE_INTEGER"><span class="secnum">21.1.2.6</span> Number.MAX_SAFE_INTEGER</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.max_value" title="Number.MAX_VALUE"><span class="secnum">21.1.2.7</span> Number.MAX_VALUE</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.min_safe_integer" title="Number.MIN_SAFE_INTEGER"><span class="secnum">21.1.2.8</span> Number.MIN_SAFE_INTEGER</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.min_value" title="Number.MIN_VALUE"><span class="secnum">21.1.2.9</span> Number.MIN_VALUE</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.nan" title="Number.NaN"><span class="secnum">21.1.2.10</span> Number.NaN</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.negative_infinity" title="Number.NEGATIVE_INFINITY"><span class="secnum">21.1.2.11</span> Number.NEGATIVE_INFINITY</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.parsefloat" title="Number.parseFloat ( string )"><span class="secnum">21.1.2.12</span> Number.parseFloat ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.parseint" title="Number.parseInt ( string, radix )"><span class="secnum">21.1.2.13</span> Number.parseInt ( <var>string</var>, <var>radix</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.positive_infinity" title="Number.POSITIVE_INFINITY"><span class="secnum">21.1.2.14</span> Number.POSITIVE_INFINITY</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.prototype" title="Number.prototype"><span class="secnum">21.1.2.15</span> Number.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-properties-of-the-number-prototype-object" title="Properties of the Number Prototype Object"><span class="secnum">21.1.3</span> Properties of the Number Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.prototype.constructor" title="Number.prototype.constructor"><span class="secnum">21.1.3.1</span> Number.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.prototype.toexponential" title="Number.prototype.toExponential ( fractionDigits )"><span class="secnum">21.1.3.2</span> Number.prototype.toExponential ( <var>fractionDigits</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.prototype.tofixed" title="Number.prototype.toFixed ( fractionDigits )"><span class="secnum">21.1.3.3</span> Number.prototype.toFixed ( <var>fractionDigits</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.prototype.tolocalestring" title="Number.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">21.1.3.4</span> Number.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.prototype.toprecision" title="Number.prototype.toPrecision ( precision )"><span class="secnum">21.1.3.5</span> Number.prototype.toPrecision ( <var>precision</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-number.prototype.tostring" title="Number.prototype.toString ( [ radix ] )"><span class="secnum">21.1.3.6</span> Number.prototype.toString ( [ <var>radix</var> ] )</a></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-number.prototype.valueof" title="Number.prototype.valueOf ( )"><span class="secnum">21.1.3.7</span> Number.prototype.valueOf ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-thisnumbervalue" title="ThisNumberValue ( value )"><span class="secnum">21.1.3.7.1</span> ThisNumberValue ( <var>value</var> )</a></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-properties-of-number-instances" title="Properties of Number Instances"><span class="secnum">21.1.4</span> Properties of Number Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-bigint-objects" title="BigInt Objects"><span class="secnum">21.2</span> BigInt Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-bigint-constructor" title="The BigInt Constructor"><span class="secnum">21.2.1</span> The BigInt Constructor</a><ol class="toc"><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-bigint-constructor-number-value" title="BigInt ( value )"><span class="secnum">21.2.1.1</span> BigInt ( <var>value</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-numbertobigint" title="NumberToBigInt ( number )"><span class="secnum">21.2.1.1.1</span> NumberToBigInt ( <var>number</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-properties-of-the-bigint-constructor" title="Properties of the BigInt Constructor"><span class="secnum">21.2.2</span> Properties of the BigInt Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-bigint.asintn" title="BigInt.asIntN ( bits, bigint )"><span class="secnum">21.2.2.1</span> BigInt.asIntN ( <var>bits</var>, <var>bigint</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-bigint.asuintn" title="BigInt.asUintN ( bits, bigint )"><span class="secnum">21.2.2.2</span> BigInt.asUintN ( <var>bits</var>, <var>bigint</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-bigint.prototype" title="BigInt.prototype"><span class="secnum">21.2.2.3</span> BigInt.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-properties-of-the-bigint-prototype-object" title="Properties of the BigInt Prototype Object"><span class="secnum">21.2.3</span> Properties of the BigInt Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-bigint.prototype.constructor" title="BigInt.prototype.constructor"><span class="secnum">21.2.3.1</span> BigInt.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-bigint.prototype.tolocalestring" title="BigInt.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">21.2.3.2</span> BigInt.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-bigint.prototype.tostring" title="BigInt.prototype.toString ( [ radix ] )"><span class="secnum">21.2.3.3</span> BigInt.prototype.toString ( [ <var>radix</var> ] )</a></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-bigint.prototype.valueof" title="BigInt.prototype.valueOf ( )"><span class="secnum">21.2.3.4</span> BigInt.prototype.valueOf ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-thisbigintvalue" title="ThisBigIntValue ( value )"><span class="secnum">21.2.3.4.1</span> ThisBigIntValue ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-bigint.prototype-%symbol.tostringtag%" title="BigInt.prototype [ %Symbol.toStringTag% ]"><span class="secnum">21.2.3.5</span> BigInt.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-properties-of-bigint-instances" title="Properties of BigInt Instances"><span class="secnum">21.2.4</span> Properties of BigInt Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-math-object" title="The Math Object"><span class="secnum">21.3</span> The Math Object</a><ol class="toc"><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-value-properties-of-the-math-object" title="Value Properties of the Math Object"><span class="secnum">21.3.1</span> Value Properties of the Math Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.e" title="Math.E"><span class="secnum">21.3.1.1</span> Math.E</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.ln10" title="Math.LN10"><span class="secnum">21.3.1.2</span> Math.LN10</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.ln2" title="Math.LN2"><span class="secnum">21.3.1.3</span> Math.LN2</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.log10e" title="Math.LOG10E"><span class="secnum">21.3.1.4</span> Math.LOG10E</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.log2e" title="Math.LOG2E"><span class="secnum">21.3.1.5</span> Math.LOG2E</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.pi" title="Math.PI"><span class="secnum">21.3.1.6</span> Math.PI</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.sqrt1_2" title="Math.SQRT1_2"><span class="secnum">21.3.1.7</span> Math.SQRT1_2</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.sqrt2" title="Math.SQRT2"><span class="secnum">21.3.1.8</span> Math.SQRT2</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math-%symbol.tostringtag%" title="Math [ %Symbol.toStringTag% ]"><span class="secnum">21.3.1.9</span> Math [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-function-properties-of-the-math-object" title="Function Properties of the Math Object"><span class="secnum">21.3.2</span> Function Properties of the Math Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.abs" title="Math.abs ( x )"><span class="secnum">21.3.2.1</span> Math.abs ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.acos" title="Math.acos ( x )"><span class="secnum">21.3.2.2</span> Math.acos ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.acosh" title="Math.acosh ( x )"><span class="secnum">21.3.2.3</span> Math.acosh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.asin" title="Math.asin ( x )"><span class="secnum">21.3.2.4</span> Math.asin ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.asinh" title="Math.asinh ( x )"><span class="secnum">21.3.2.5</span> Math.asinh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.atan" title="Math.atan ( x )"><span class="secnum">21.3.2.6</span> Math.atan ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.atanh" title="Math.atanh ( x )"><span class="secnum">21.3.2.7</span> Math.atanh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.atan2" title="Math.atan2 ( y, x )"><span class="secnum">21.3.2.8</span> Math.atan2 ( <var>y</var>, <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.cbrt" title="Math.cbrt ( x )"><span class="secnum">21.3.2.9</span> Math.cbrt ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.ceil" title="Math.ceil ( x )"><span class="secnum">21.3.2.10</span> Math.ceil ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.clz32" title="Math.clz32 ( x )"><span class="secnum">21.3.2.11</span> Math.clz32 ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.cos" title="Math.cos ( x )"><span class="secnum">21.3.2.12</span> Math.cos ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.cosh" title="Math.cosh ( x )"><span class="secnum">21.3.2.13</span> Math.cosh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.exp" title="Math.exp ( x )"><span class="secnum">21.3.2.14</span> Math.exp ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.expm1" title="Math.expm1 ( x )"><span class="secnum">21.3.2.15</span> Math.expm1 ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.floor" title="Math.floor ( x )"><span class="secnum">21.3.2.16</span> Math.floor ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.fround" title="Math.fround ( x )"><span class="secnum">21.3.2.17</span> Math.fround ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.hypot" title="Math.hypot ( ...args )"><span class="secnum">21.3.2.18</span> Math.hypot ( ...<var>args</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.imul" title="Math.imul ( x, y )"><span class="secnum">21.3.2.19</span> Math.imul ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.log" title="Math.log ( x )"><span class="secnum">21.3.2.20</span> Math.log ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.log1p" title="Math.log1p ( x )"><span class="secnum">21.3.2.21</span> Math.log1p ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.log10" title="Math.log10 ( x )"><span class="secnum">21.3.2.22</span> Math.log10 ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.log2" title="Math.log2 ( x )"><span class="secnum">21.3.2.23</span> Math.log2 ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.max" title="Math.max ( ...args )"><span class="secnum">21.3.2.24</span> Math.max ( ...<var>args</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.min" title="Math.min ( ...args )"><span class="secnum">21.3.2.25</span> Math.min ( ...<var>args</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.pow" title="Math.pow ( base, exponent )"><span class="secnum">21.3.2.26</span> Math.pow ( <var>base</var>, <var>exponent</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.random" title="Math.random ( )"><span class="secnum">21.3.2.27</span> Math.random ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.round" title="Math.round ( x )"><span class="secnum">21.3.2.28</span> Math.round ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.sign" title="Math.sign ( x )"><span class="secnum">21.3.2.29</span> Math.sign ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.sin" title="Math.sin ( x )"><span class="secnum">21.3.2.30</span> Math.sin ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.sinh" title="Math.sinh ( x )"><span class="secnum">21.3.2.31</span> Math.sinh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.sqrt" title="Math.sqrt ( x )"><span class="secnum">21.3.2.32</span> Math.sqrt ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.tan" title="Math.tan ( x )"><span class="secnum">21.3.2.33</span> Math.tan ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.tanh" title="Math.tanh ( x )"><span class="secnum">21.3.2.34</span> Math.tanh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.trunc" title="Math.trunc ( x )"><span class="secnum">21.3.2.35</span> Math.trunc ( <var>x</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-date-objects" title="Date Objects"><span class="secnum">21.4</span> Date Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-overview-of-date-objects-and-definitions-of-abstract-operations" title="Overview of Date Objects and Definitions of Abstract Operations"><span class="secnum">21.4.1</span> Overview of Date Objects and Definitions of Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-time-values-and-time-range" title="Time Values and Time Range"><span class="secnum">21.4.1.1</span> Time Values and Time Range</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-time-related-constants" title="Time-related Constants"><span class="secnum">21.4.1.2</span> Time-related Constants</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-day" title="Day ( t )"><span class="secnum">21.4.1.3</span> Day ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-timewithinday" title="TimeWithinDay ( t )"><span class="secnum">21.4.1.4</span> TimeWithinDay ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-daysinyear" title="DaysInYear ( y )"><span class="secnum">21.4.1.5</span> DaysInYear ( <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-dayfromyear" title="DayFromYear ( y )"><span class="secnum">21.4.1.6</span> DayFromYear ( <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-timefromyear" title="TimeFromYear ( y )"><span class="secnum">21.4.1.7</span> TimeFromYear ( <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-yearfromtime" title="YearFromTime ( t )"><span class="secnum">21.4.1.8</span> YearFromTime ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-daywithinyear" title="DayWithinYear ( t )"><span class="secnum">21.4.1.9</span> DayWithinYear ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-inleapyear" title="InLeapYear ( t )"><span class="secnum">21.4.1.10</span> InLeapYear ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-monthfromtime" title="MonthFromTime ( t )"><span class="secnum">21.4.1.11</span> MonthFromTime ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-datefromtime" title="DateFromTime ( t )"><span class="secnum">21.4.1.12</span> DateFromTime ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-weekday" title="WeekDay ( t )"><span class="secnum">21.4.1.13</span> WeekDay ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-hourfromtime" title="HourFromTime ( t )"><span class="secnum">21.4.1.14</span> HourFromTime ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-minfromtime" title="MinFromTime ( t )"><span class="secnum">21.4.1.15</span> MinFromTime ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-secfromtime" title="SecFromTime ( t )"><span class="secnum">21.4.1.16</span> SecFromTime ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-msfromtime" title="msFromTime ( t )"><span class="secnum">21.4.1.17</span> msFromTime ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-getutcepochnanoseconds" title="GetUTCEpochNanoseconds ( year, month, day, hour, minute, second, millisecond, microsecond, nanosecond )"><span class="secnum">21.4.1.18</span> GetUTCEpochNanoseconds ( <var>year</var>, <var>month</var>, <var>day</var>, <var>hour</var>, <var>minute</var>, <var>second</var>, <var>millisecond</var>, <var>microsecond</var>, <var>nanosecond</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-time-zone-identifiers" title="Time Zone Identifiers"><span class="secnum">21.4.1.19</span> Time Zone Identifiers</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-getnamedtimezoneepochnanoseconds" title="GetNamedTimeZoneEpochNanoseconds ( timeZoneIdentifier, year, month, day, hour, minute, second, millisecond, microsecond, nanosecond )"><span class="secnum">21.4.1.20</span> GetNamedTimeZoneEpochNanoseconds ( <var>timeZoneIdentifier</var>, <var>year</var>, <var>month</var>, <var>day</var>, <var>hour</var>, <var>minute</var>, <var>second</var>, <var>millisecond</var>, <var>microsecond</var>, <var>nanosecond</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-getnamedtimezoneoffsetnanoseconds" title="GetNamedTimeZoneOffsetNanoseconds ( timeZoneIdentifier, epochNanoseconds )"><span class="secnum">21.4.1.21</span> GetNamedTimeZoneOffsetNanoseconds ( <var>timeZoneIdentifier</var>, <var>epochNanoseconds</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-time-zone-identifier-record" title="Time Zone Identifier Record"><span class="secnum">21.4.1.22</span> Time Zone Identifier Record</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-availablenamedtimezoneidentifiers" title="AvailableNamedTimeZoneIdentifiers ( )"><span class="secnum">21.4.1.23</span> AvailableNamedTimeZoneIdentifiers ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-systemtimezoneidentifier" title="SystemTimeZoneIdentifier ( )"><span class="secnum">21.4.1.24</span> SystemTimeZoneIdentifier ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-localtime" title="LocalTime ( t )"><span class="secnum">21.4.1.25</span> LocalTime ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-utc-t" title="UTC ( t )"><span class="secnum">21.4.1.26</span> UTC ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-maketime" title="MakeTime ( hour, min, sec, ms )"><span class="secnum">21.4.1.27</span> MakeTime ( <var>hour</var>, <var>min</var>, <var>sec</var>, <var>ms</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-makeday" title="MakeDay ( year, month, date )"><span class="secnum">21.4.1.28</span> MakeDay ( <var>year</var>, <var>month</var>, <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-makedate" title="MakeDate ( day, time )"><span class="secnum">21.4.1.29</span> MakeDate ( <var>day</var>, <var>time</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-makefullyear" title="MakeFullYear ( year )"><span class="secnum">21.4.1.30</span> MakeFullYear ( <var>year</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-timeclip" title="TimeClip ( time )"><span class="secnum">21.4.1.31</span> TimeClip ( <var>time</var> )</a></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-date-time-string-format" title="Date Time String Format"><span class="secnum">21.4.1.32</span> Date Time String Format</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-expanded-years" title="Expanded Years"><span class="secnum">21.4.1.32.1</span> Expanded Years</a></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-time-zone-offset-strings" title="Time Zone Offset String Format"><span class="secnum">21.4.1.33</span> Time Zone Offset String Format</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-istimezoneoffsetstring" title="IsTimeZoneOffsetString ( offsetString )"><span class="secnum">21.4.1.33.1</span> IsTimeZoneOffsetString ( <var>offsetString</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-parsetimezoneoffsetstring" title="ParseTimeZoneOffsetString ( offsetString )"><span class="secnum">21.4.1.33.2</span> ParseTimeZoneOffsetString ( <var>offsetString</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-date-constructor" title="The Date Constructor"><span class="secnum">21.4.2</span> The Date Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date" title="Date ( ...values )"><span class="secnum">21.4.2.1</span> Date ( ...<var>values</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-properties-of-the-date-constructor" title="Properties of the Date Constructor"><span class="secnum">21.4.3</span> Properties of the Date Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.now" title="Date.now ( )"><span class="secnum">21.4.3.1</span> Date.now ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.parse" title="Date.parse ( string )"><span class="secnum">21.4.3.2</span> Date.parse ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype" title="Date.prototype"><span class="secnum">21.4.3.3</span> Date.prototype</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.utc" title="Date.UTC ( year [ , month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] ] )"><span class="secnum">21.4.3.4</span> Date.UTC ( <var>year</var> [ , <var>month</var> [ , <var>date</var> [ , <var>hours</var> [ , <var>minutes</var> [ , <var>seconds</var> [ , <var>ms</var> ] ] ] ] ] ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-properties-of-the-date-prototype-object" title="Properties of the Date Prototype Object"><span class="secnum">21.4.4</span> Properties of the Date Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.constructor" title="Date.prototype.constructor"><span class="secnum">21.4.4.1</span> Date.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getdate" title="Date.prototype.getDate ( )"><span class="secnum">21.4.4.2</span> Date.prototype.getDate ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getday" title="Date.prototype.getDay ( )"><span class="secnum">21.4.4.3</span> Date.prototype.getDay ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getfullyear" title="Date.prototype.getFullYear ( )"><span class="secnum">21.4.4.4</span> Date.prototype.getFullYear ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.gethours" title="Date.prototype.getHours ( )"><span class="secnum">21.4.4.5</span> Date.prototype.getHours ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getmilliseconds" title="Date.prototype.getMilliseconds ( )"><span class="secnum">21.4.4.6</span> Date.prototype.getMilliseconds ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getminutes" title="Date.prototype.getMinutes ( )"><span class="secnum">21.4.4.7</span> Date.prototype.getMinutes ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getmonth" title="Date.prototype.getMonth ( )"><span class="secnum">21.4.4.8</span> Date.prototype.getMonth ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getseconds" title="Date.prototype.getSeconds ( )"><span class="secnum">21.4.4.9</span> Date.prototype.getSeconds ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.gettime" title="Date.prototype.getTime ( )"><span class="secnum">21.4.4.10</span> Date.prototype.getTime ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.gettimezoneoffset" title="Date.prototype.getTimezoneOffset ( )"><span class="secnum">21.4.4.11</span> Date.prototype.getTimezoneOffset ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getutcdate" title="Date.prototype.getUTCDate ( )"><span class="secnum">21.4.4.12</span> Date.prototype.getUTCDate ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getutcday" title="Date.prototype.getUTCDay ( )"><span class="secnum">21.4.4.13</span> Date.prototype.getUTCDay ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getutcfullyear" title="Date.prototype.getUTCFullYear ( )"><span class="secnum">21.4.4.14</span> Date.prototype.getUTCFullYear ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getutchours" title="Date.prototype.getUTCHours ( )"><span class="secnum">21.4.4.15</span> Date.prototype.getUTCHours ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getutcmilliseconds" title="Date.prototype.getUTCMilliseconds ( )"><span class="secnum">21.4.4.16</span> Date.prototype.getUTCMilliseconds ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getutcminutes" title="Date.prototype.getUTCMinutes ( )"><span class="secnum">21.4.4.17</span> Date.prototype.getUTCMinutes ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getutcmonth" title="Date.prototype.getUTCMonth ( )"><span class="secnum">21.4.4.18</span> Date.prototype.getUTCMonth ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.getutcseconds" title="Date.prototype.getUTCSeconds ( )"><span class="secnum">21.4.4.19</span> Date.prototype.getUTCSeconds ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setdate" title="Date.prototype.setDate ( date )"><span class="secnum">21.4.4.20</span> Date.prototype.setDate ( <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setfullyear" title="Date.prototype.setFullYear ( year [ , month [ , date ] ] )"><span class="secnum">21.4.4.21</span> Date.prototype.setFullYear ( <var>year</var> [ , <var>month</var> [ , <var>date</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.sethours" title="Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )"><span class="secnum">21.4.4.22</span> Date.prototype.setHours ( <var>hour</var> [ , <var>min</var> [ , <var>sec</var> [ , <var>ms</var> ] ] ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setmilliseconds" title="Date.prototype.setMilliseconds ( ms )"><span class="secnum">21.4.4.23</span> Date.prototype.setMilliseconds ( <var>ms</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setminutes" title="Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )"><span class="secnum">21.4.4.24</span> Date.prototype.setMinutes ( <var>min</var> [ , <var>sec</var> [ , <var>ms</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setmonth" title="Date.prototype.setMonth ( month [ , date ] )"><span class="secnum">21.4.4.25</span> Date.prototype.setMonth ( <var>month</var> [ , <var>date</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setseconds" title="Date.prototype.setSeconds ( sec [ , ms ] )"><span class="secnum">21.4.4.26</span> Date.prototype.setSeconds ( <var>sec</var> [ , <var>ms</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.settime" title="Date.prototype.setTime ( time )"><span class="secnum">21.4.4.27</span> Date.prototype.setTime ( <var>time</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setutcdate" title="Date.prototype.setUTCDate ( date )"><span class="secnum">21.4.4.28</span> Date.prototype.setUTCDate ( <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setutcfullyear" title="Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )"><span class="secnum">21.4.4.29</span> Date.prototype.setUTCFullYear ( <var>year</var> [ , <var>month</var> [ , <var>date</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setutchours" title="Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )"><span class="secnum">21.4.4.30</span> Date.prototype.setUTCHours ( <var>hour</var> [ , <var>min</var> [ , <var>sec</var> [ , <var>ms</var> ] ] ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setutcmilliseconds" title="Date.prototype.setUTCMilliseconds ( ms )"><span class="secnum">21.4.4.31</span> Date.prototype.setUTCMilliseconds ( <var>ms</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setutcminutes" title="Date.prototype.setUTCMinutes ( min [ , sec [ , ms ] ] )"><span class="secnum">21.4.4.32</span> Date.prototype.setUTCMinutes ( <var>min</var> [ , <var>sec</var> [ , <var>ms</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setutcmonth" title="Date.prototype.setUTCMonth ( month [ , date ] )"><span class="secnum">21.4.4.33</span> Date.prototype.setUTCMonth ( <var>month</var> [ , <var>date</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.setutcseconds" title="Date.prototype.setUTCSeconds ( sec [ , ms ] )"><span class="secnum">21.4.4.34</span> Date.prototype.setUTCSeconds ( <var>sec</var> [ , <var>ms</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.todatestring" title="Date.prototype.toDateString ( )"><span class="secnum">21.4.4.35</span> Date.prototype.toDateString ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.toisostring" title="Date.prototype.toISOString ( )"><span class="secnum">21.4.4.36</span> Date.prototype.toISOString ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.tojson" title="Date.prototype.toJSON ( key )"><span class="secnum">21.4.4.37</span> Date.prototype.toJSON ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.tolocaledatestring" title="Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">21.4.4.38</span> Date.prototype.toLocaleDateString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.tolocalestring" title="Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">21.4.4.39</span> Date.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.tolocaletimestring" title="Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">21.4.4.40</span> Date.prototype.toLocaleTimeString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle">+</span><a href="numbers-and-dates.html#sec-date.prototype.tostring" title="Date.prototype.toString ( )"><span class="secnum">21.4.4.41</span> Date.prototype.toString ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-timestring" title="TimeString ( tv )"><span class="secnum">21.4.4.41.1</span> TimeString ( <var>tv</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-datestring" title="DateString ( tv )"><span class="secnum">21.4.4.41.2</span> DateString ( <var>tv</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-timezoneestring" title="TimeZoneString ( tv )"><span class="secnum">21.4.4.41.3</span> TimeZoneString ( <var>tv</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-todatestring" title="ToDateString ( tv )"><span class="secnum">21.4.4.41.4</span> ToDateString ( <var>tv</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.totimestring" title="Date.prototype.toTimeString ( )"><span class="secnum">21.4.4.42</span> Date.prototype.toTimeString ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.toutcstring" title="Date.prototype.toUTCString ( )"><span class="secnum">21.4.4.43</span> Date.prototype.toUTCString ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype.valueof" title="Date.prototype.valueOf ( )"><span class="secnum">21.4.4.44</span> Date.prototype.valueOf ( )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-date.prototype-%symbol.toprimitive%" title="Date.prototype [ %Symbol.toPrimitive% ] ( hint )"><span class="secnum">21.4.4.45</span> Date.prototype [ %Symbol.toPrimitive% ] ( <var>hint</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-properties-of-date-instances" title="Properties of Date Instances"><span class="secnum">21.4.5</span> Properties of Date Instances</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-text-processing" title="Text Processing"><span class="secnum">22</span> Text Processing</a><ol class="toc"><li><span class="item-toggle">+</span><a href="text-processing.html#sec-string-objects" title="String Objects"><span class="secnum">22.1</span> String Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="text-processing.html#sec-string-constructor" title="The String Constructor"><span class="secnum">22.1.1</span> The String Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string-constructor-string-value" title="String ( value )"><span class="secnum">22.1.1.1</span> String ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-properties-of-the-string-constructor" title="Properties of the String Constructor"><span class="secnum">22.1.2</span> Properties of the String Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.fromcharcode" title="String.fromCharCode ( ...codeUnits )"><span class="secnum">22.1.2.1</span> String.fromCharCode ( ...<var>codeUnits</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.fromcodepoint" title="String.fromCodePoint ( ...codePoints )"><span class="secnum">22.1.2.2</span> String.fromCodePoint ( ...<var>codePoints</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype" title="String.prototype"><span class="secnum">22.1.2.3</span> String.prototype</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.raw" title="String.raw ( template, ...substitutions )"><span class="secnum">22.1.2.4</span> String.raw ( <var>template</var>, ...<var>substitutions</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-properties-of-the-string-prototype-object" title="Properties of the String Prototype Object"><span class="secnum">22.1.3</span> Properties of the String Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.at" title="String.prototype.at ( index )"><span class="secnum">22.1.3.1</span> String.prototype.at ( <var>index</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.charat" title="String.prototype.charAt ( pos )"><span class="secnum">22.1.3.2</span> String.prototype.charAt ( <var>pos</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.charcodeat" title="String.prototype.charCodeAt ( pos )"><span class="secnum">22.1.3.3</span> String.prototype.charCodeAt ( <var>pos</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.codepointat" title="String.prototype.codePointAt ( pos )"><span class="secnum">22.1.3.4</span> String.prototype.codePointAt ( <var>pos</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.concat" title="String.prototype.concat ( ...args )"><span class="secnum">22.1.3.5</span> String.prototype.concat ( ...<var>args</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.constructor" title="String.prototype.constructor"><span class="secnum">22.1.3.6</span> String.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.endswith" title="String.prototype.endsWith ( searchString [ , endPosition ] )"><span class="secnum">22.1.3.7</span> String.prototype.endsWith ( <var>searchString</var> [ , <var>endPosition</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.includes" title="String.prototype.includes ( searchString [ , position ] )"><span class="secnum">22.1.3.8</span> String.prototype.includes ( <var>searchString</var> [ , <var>position</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.indexof" title="String.prototype.indexOf ( searchString [ , position ] )"><span class="secnum">22.1.3.9</span> String.prototype.indexOf ( <var>searchString</var> [ , <var>position</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.iswellformed" title="String.prototype.isWellFormed ( )"><span class="secnum">22.1.3.10</span> String.prototype.isWellFormed ( )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.lastindexof" title="String.prototype.lastIndexOf ( searchString [ , position ] )"><span class="secnum">22.1.3.11</span> String.prototype.lastIndexOf ( <var>searchString</var> [ , <var>position</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.localecompare" title="String.prototype.localeCompare ( that [ , reserved1 [ , reserved2 ] ] )"><span class="secnum">22.1.3.12</span> String.prototype.localeCompare ( <var>that</var> [ , <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.match" title="String.prototype.match ( regexp )"><span class="secnum">22.1.3.13</span> String.prototype.match ( <var>regexp</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.matchall" title="String.prototype.matchAll ( regexp )"><span class="secnum">22.1.3.14</span> String.prototype.matchAll ( <var>regexp</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.normalize" title="String.prototype.normalize ( [ form ] )"><span class="secnum">22.1.3.15</span> String.prototype.normalize ( [ <var>form</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.padend" title="String.prototype.padEnd ( maxLength [ , fillString ] )"><span class="secnum">22.1.3.16</span> String.prototype.padEnd ( <var>maxLength</var> [ , <var>fillString</var> ] )</a></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-string.prototype.padstart" title="String.prototype.padStart ( maxLength [ , fillString ] )"><span class="secnum">22.1.3.17</span> String.prototype.padStart ( <var>maxLength</var> [ , <var>fillString</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-stringpaddingbuiltinsimpl" title="StringPaddingBuiltinsImpl ( O, maxLength, fillString, placement )"><span class="secnum">22.1.3.17.1</span> StringPaddingBuiltinsImpl ( <var>O</var>, <var>maxLength</var>, <var>fillString</var>, <var>placement</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-stringpad" title="StringPad ( S, maxLength, fillString, placement )"><span class="secnum">22.1.3.17.2</span> StringPad ( <var>S</var>, <var>maxLength</var>, <var>fillString</var>, <var>placement</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-tozeropaddeddecimalstring" title="ToZeroPaddedDecimalString ( n, minLength )"><span class="secnum">22.1.3.17.3</span> ToZeroPaddedDecimalString ( <var>n</var>, <var>minLength</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.repeat" title="String.prototype.repeat ( count )"><span class="secnum">22.1.3.18</span> String.prototype.repeat ( <var>count</var> )</a></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-string.prototype.replace" title="String.prototype.replace ( searchValue, replaceValue )"><span class="secnum">22.1.3.19</span> String.prototype.replace ( <var>searchValue</var>, <var>replaceValue</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-getsubstitution" title="GetSubstitution ( matched, str, position, captures, namedCaptures, replacementTemplate )"><span class="secnum">22.1.3.19.1</span> GetSubstitution ( <var>matched</var>, <var>str</var>, <var>position</var>, <var>captures</var>, <var>namedCaptures</var>, <var>replacementTemplate</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.replaceall" title="String.prototype.replaceAll ( searchValue, replaceValue )"><span class="secnum">22.1.3.20</span> String.prototype.replaceAll ( <var>searchValue</var>, <var>replaceValue</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.search" title="String.prototype.search ( regexp )"><span class="secnum">22.1.3.21</span> String.prototype.search ( <var>regexp</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.slice" title="String.prototype.slice ( start, end )"><span class="secnum">22.1.3.22</span> String.prototype.slice ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.split" title="String.prototype.split ( separator, limit )"><span class="secnum">22.1.3.23</span> String.prototype.split ( <var>separator</var>, <var>limit</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.startswith" title="String.prototype.startsWith ( searchString [ , position ] )"><span class="secnum">22.1.3.24</span> String.prototype.startsWith ( <var>searchString</var> [ , <var>position</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.substring" title="String.prototype.substring ( start, end )"><span class="secnum">22.1.3.25</span> String.prototype.substring ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.tolocalelowercase" title="String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">22.1.3.26</span> String.prototype.toLocaleLowerCase ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.tolocaleuppercase" title="String.prototype.toLocaleUpperCase ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">22.1.3.27</span> String.prototype.toLocaleUpperCase ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.tolowercase" title="String.prototype.toLowerCase ( )"><span class="secnum">22.1.3.28</span> String.prototype.toLowerCase ( )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.tostring" title="String.prototype.toString ( )"><span class="secnum">22.1.3.29</span> String.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.touppercase" title="String.prototype.toUpperCase ( )"><span class="secnum">22.1.3.30</span> String.prototype.toUpperCase ( )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.towellformed" title="String.prototype.toWellFormed ( )"><span class="secnum">22.1.3.31</span> String.prototype.toWellFormed ( )</a></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-string.prototype.trim" title="String.prototype.trim ( )"><span class="secnum">22.1.3.32</span> String.prototype.trim ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-trimstring" title="TrimString ( string, where )"><span class="secnum">22.1.3.32.1</span> TrimString ( <var>string</var>, <var>where</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.trimend" title="String.prototype.trimEnd ( )"><span class="secnum">22.1.3.33</span> String.prototype.trimEnd ( )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype.trimstart" title="String.prototype.trimStart ( )"><span class="secnum">22.1.3.34</span> String.prototype.trimStart ( )</a></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-string.prototype.valueof" title="String.prototype.valueOf ( )"><span class="secnum">22.1.3.35</span> String.prototype.valueOf ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-thisstringvalue" title="ThisStringValue ( value )"><span class="secnum">22.1.3.35.1</span> ThisStringValue ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-string.prototype-%symbol.iterator%" title="String.prototype [ %Symbol.iterator% ] ( )"><span class="secnum">22.1.3.36</span> String.prototype [ %Symbol.iterator% ] ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-properties-of-string-instances" title="Properties of String Instances"><span class="secnum">22.1.4</span> Properties of String Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-properties-of-string-instances-length" title="length"><span class="secnum">22.1.4.1</span> length</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-string-iterator-objects" title="String Iterator Objects"><span class="secnum">22.1.5</span> String Iterator Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="text-processing.html#sec-%stringiteratorprototype%-object" title="The %StringIteratorPrototype% Object"><span class="secnum">22.1.5.1</span> The %StringIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-%stringiteratorprototype%.next" title="%StringIteratorPrototype%.next ( )"><span class="secnum">22.1.5.1.1</span> %StringIteratorPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-%stringiteratorprototype%-%symbol.tostringtag%" title="%StringIteratorPrototype% [ %Symbol.toStringTag% ]"><span class="secnum">22.1.5.1.2</span> %StringIteratorPrototype% [ %Symbol.toStringTag% ]</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-regexp-regular-expression-objects" title="RegExp (Regular Expression) Objects"><span class="secnum">22.2</span> RegExp (Regular Expression) Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="text-processing.html#sec-patterns" title="Patterns"><span class="secnum">22.2.1</span> Patterns</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-patterns-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">22.2.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-countleftcapturingparenswithin" title="Static Semantics: CountLeftCapturingParensWithin ( node )"><span class="secnum">22.2.1.2</span> SS: CountLeftCapturingParensWithin ( <var>node</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-countleftcapturingparensbefore" title="Static Semantics: CountLeftCapturingParensBefore ( node )"><span class="secnum">22.2.1.3</span> SS: CountLeftCapturingParensBefore ( <var>node</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-mightbothparticipate" title="Static Semantics: MightBothParticipate ( x, y )"><span class="secnum">22.2.1.4</span> SS: MightBothParticipate ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-patterns-static-semantics-capturing-group-number" title="Static Semantics: CapturingGroupNumber"><span class="secnum">22.2.1.5</span> SS: CapturingGroupNumber</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-patterns-static-semantics-is-character-class" title="Static Semantics: IsCharacterClass"><span class="secnum">22.2.1.6</span> SS: IsCharacterClass</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-patterns-static-semantics-character-value" title="Static Semantics: CharacterValue"><span class="secnum">22.2.1.7</span> SS: CharacterValue</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-static-semantics-maycontainstrings" title="Static Semantics: MayContainStrings"><span class="secnum">22.2.1.8</span> SS: MayContainStrings</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-groupspecifiersthatmatch" title="Static Semantics: GroupSpecifiersThatMatch ( thisGroupName )"><span class="secnum">22.2.1.9</span> SS: GroupSpecifiersThatMatch ( <var>thisGroupName</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-static-semantics-capturinggroupname" title="Static Semantics: CapturingGroupName"><span class="secnum">22.2.1.10</span> SS: CapturingGroupName</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexpidentifiercodepoints" title="Static Semantics: RegExpIdentifierCodePoints"><span class="secnum">22.2.1.11</span> SS: RegExpIdentifierCodePoints</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexpidentifiercodepoint" title="Static Semantics: RegExpIdentifierCodePoint"><span class="secnum">22.2.1.12</span> SS: RegExpIdentifierCodePoint</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-pattern-semantics" title="Pattern Semantics"><span class="secnum">22.2.2</span> Pattern Semantics</a><ol class="toc"><li><span class="item-toggle">+</span><a href="text-processing.html#sec-pattern-notation" title="Notation"><span class="secnum">22.2.2.1</span> Notation</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp-records" title="RegExp Records"><span class="secnum">22.2.2.1.1</span> RegExp Records</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-compilepattern" title="Runtime Semantics: CompilePattern"><span class="secnum">22.2.2.2</span> RS: CompilePattern</a></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-compilesubpattern" title="Runtime Semantics: CompileSubpattern"><span class="secnum">22.2.2.3</span> RS: CompileSubpattern</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-runtime-semantics-repeatmatcher-abstract-operation" title="RepeatMatcher ( m, min, max, greedy, x, c, parenIndex, parenCount )"><span class="secnum">22.2.2.3.1</span> RepeatMatcher ( <var>m</var>, <var>min</var>, <var>max</var>, <var>greedy</var>, <var>x</var>, <var>c</var>, <var>parenIndex</var>, <var>parenCount</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-emptymatcher" title="EmptyMatcher ( )"><span class="secnum">22.2.2.3.2</span> EmptyMatcher ( )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-matchtwoalternatives" title="MatchTwoAlternatives ( m1, m2 )"><span class="secnum">22.2.2.3.3</span> MatchTwoAlternatives ( <var>m1</var>, <var>m2</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-matchsequence" title="MatchSequence ( m1, m2, direction )"><span class="secnum">22.2.2.3.4</span> MatchSequence ( <var>m1</var>, <var>m2</var>, <var>direction</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-compileassertion" title="Runtime Semantics: CompileAssertion"><span class="secnum">22.2.2.4</span> RS: CompileAssertion</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-runtime-semantics-iswordchar-abstract-operation" title="IsWordChar ( rer, Input, e )"><span class="secnum">22.2.2.4.1</span> IsWordChar ( <var>rer</var>, <var>Input</var>, <var>e</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-compilequantifier" title="Runtime Semantics: CompileQuantifier"><span class="secnum">22.2.2.5</span> RS: CompileQuantifier</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-compilequantifierprefix" title="Runtime Semantics: CompileQuantifierPrefix"><span class="secnum">22.2.2.6</span> RS: CompileQuantifierPrefix</a></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-compileatom" title="Runtime Semantics: CompileAtom"><span class="secnum">22.2.2.7</span> RS: CompileAtom</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-runtime-semantics-charactersetmatcher-abstract-operation" title="CharacterSetMatcher ( rer, A, invert, direction )"><span class="secnum">22.2.2.7.1</span> CharacterSetMatcher ( <var>rer</var>, <var>A</var>, <var>invert</var>, <var>direction</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-backreference-matcher" title="BackreferenceMatcher ( rer, ns, direction )"><span class="secnum">22.2.2.7.2</span> BackreferenceMatcher ( <var>rer</var>, <var>ns</var>, <var>direction</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-runtime-semantics-canonicalize-ch" title="Canonicalize ( rer, ch )"><span class="secnum">22.2.2.7.3</span> Canonicalize ( <var>rer</var>, <var>ch</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-compilecharacterclass" title="Runtime Semantics: CompileCharacterClass"><span class="secnum">22.2.2.8</span> RS: CompileCharacterClass</a></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-compiletocharset" title="Runtime Semantics: CompileToCharSet"><span class="secnum">22.2.2.9</span> RS: CompileToCharSet</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-runtime-semantics-characterrange-abstract-operation" title="CharacterRange ( A, B )"><span class="secnum">22.2.2.9.1</span> CharacterRange ( <var>A</var>, <var>B</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-runtime-semantics-haseitherunicodeflag-abstract-operation" title="HasEitherUnicodeFlag ( rer )"><span class="secnum">22.2.2.9.2</span> HasEitherUnicodeFlag ( <var>rer</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-wordcharacters" title="WordCharacters ( rer )"><span class="secnum">22.2.2.9.3</span> WordCharacters ( <var>rer</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-allcharacters" title="AllCharacters ( rer )"><span class="secnum">22.2.2.9.4</span> AllCharacters ( <var>rer</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-maybesimplecasefolding" title="MaybeSimpleCaseFolding ( rer, A )"><span class="secnum">22.2.2.9.5</span> MaybeSimpleCaseFolding ( <var>rer</var>, <var>A</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-charactercomplement" title="CharacterComplement ( rer, S )"><span class="secnum">22.2.2.9.6</span> CharacterComplement ( <var>rer</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-runtime-semantics-unicodematchproperty-p" title="UnicodeMatchProperty ( rer, p )"><span class="secnum">22.2.2.9.7</span> UnicodeMatchProperty ( <var>rer</var>, <var>p</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-runtime-semantics-unicodematchpropertyvalue-p-v" title="UnicodeMatchPropertyValue ( p, v )"><span class="secnum">22.2.2.9.8</span> UnicodeMatchPropertyValue ( <var>p</var>, <var>v</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-compileclasssetstring" title="Runtime Semantics: CompileClassSetString"><span class="secnum">22.2.2.10</span> RS: CompileClassSetString</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-abstract-operations-for-regexp-creation" title="Abstract Operations for RegExp Creation"><span class="secnum">22.2.3</span> Abstract Operations for RegExp Creation</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexpcreate" title="RegExpCreate ( P, F )"><span class="secnum">22.2.3.1</span> RegExpCreate ( <var>P</var>, <var>F</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexpalloc" title="RegExpAlloc ( newTarget )"><span class="secnum">22.2.3.2</span> RegExpAlloc ( <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexpinitialize" title="RegExpInitialize ( obj, pattern, flags )"><span class="secnum">22.2.3.3</span> RegExpInitialize ( <var>obj</var>, <var>pattern</var>, <var>flags</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-parsepattern" title="Static Semantics: ParsePattern ( patternText, u, v )"><span class="secnum">22.2.3.4</span> SS: ParsePattern ( <var>patternText</var>, <var>u</var>, <var>v</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-regexp-constructor" title="The RegExp Constructor"><span class="secnum">22.2.4</span> The RegExp Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp-pattern-flags" title="RegExp ( pattern, flags )"><span class="secnum">22.2.4.1</span> RegExp ( <var>pattern</var>, <var>flags</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-properties-of-the-regexp-constructor" title="Properties of the RegExp Constructor"><span class="secnum">22.2.5</span> Properties of the RegExp Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp.prototype" title="RegExp.prototype"><span class="secnum">22.2.5.1</span> RegExp.prototype</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-get-regexp-%symbol.species%" title="get RegExp [ %Symbol.species% ]"><span class="secnum">22.2.5.2</span> get RegExp [ %Symbol.species% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-properties-of-the-regexp-prototype-object" title="Properties of the RegExp Prototype Object"><span class="secnum">22.2.6</span> Properties of the RegExp Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp.prototype.constructor" title="RegExp.prototype.constructor"><span class="secnum">22.2.6.1</span> RegExp.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp.prototype.exec" title="RegExp.prototype.exec ( string )"><span class="secnum">22.2.6.2</span> RegExp.prototype.exec ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-get-regexp.prototype.dotAll" title="get RegExp.prototype.dotAll"><span class="secnum">22.2.6.3</span> get RegExp.prototype.dotAll</a></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-get-regexp.prototype.flags" title="get RegExp.prototype.flags"><span class="secnum">22.2.6.4</span> get RegExp.prototype.flags</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexphasflag" title="RegExpHasFlag ( R, codeUnit )"><span class="secnum">22.2.6.4.1</span> RegExpHasFlag ( <var>R</var>, <var>codeUnit</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-get-regexp.prototype.global" title="get RegExp.prototype.global"><span class="secnum">22.2.6.5</span> get RegExp.prototype.global</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-get-regexp.prototype.hasIndices" title="get RegExp.prototype.hasIndices"><span class="secnum">22.2.6.6</span> get RegExp.prototype.hasIndices</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-get-regexp.prototype.ignorecase" title="get RegExp.prototype.ignoreCase"><span class="secnum">22.2.6.7</span> get RegExp.prototype.ignoreCase</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp.prototype-%symbol.match%" title="RegExp.prototype [ %Symbol.match% ] ( string )"><span class="secnum">22.2.6.8</span> RegExp.prototype [ %Symbol.match% ] ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp-prototype-%symbol.matchall%" title="RegExp.prototype [ %Symbol.matchAll% ] ( string )"><span class="secnum">22.2.6.9</span> RegExp.prototype [ %Symbol.matchAll% ] ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-get-regexp.prototype.multiline" title="get RegExp.prototype.multiline"><span class="secnum">22.2.6.10</span> get RegExp.prototype.multiline</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp.prototype-%symbol.replace%" title="RegExp.prototype [ %Symbol.replace% ] ( string, replaceValue )"><span class="secnum">22.2.6.11</span> RegExp.prototype [ %Symbol.replace% ] ( <var>string</var>, <var>replaceValue</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp.prototype-%symbol.search%" title="RegExp.prototype [ %Symbol.search% ] ( string )"><span class="secnum">22.2.6.12</span> RegExp.prototype [ %Symbol.search% ] ( <var>string</var> )</a></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-get-regexp.prototype.source" title="get RegExp.prototype.source"><span class="secnum">22.2.6.13</span> get RegExp.prototype.source</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-escaperegexppattern" title="EscapeRegExpPattern ( P, F )"><span class="secnum">22.2.6.13.1</span> EscapeRegExpPattern ( <var>P</var>, <var>F</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp.prototype-%symbol.split%" title="RegExp.prototype [ %Symbol.split% ] ( string, limit )"><span class="secnum">22.2.6.14</span> RegExp.prototype [ %Symbol.split% ] ( <var>string</var>, <var>limit</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-get-regexp.prototype.sticky" title="get RegExp.prototype.sticky"><span class="secnum">22.2.6.15</span> get RegExp.prototype.sticky</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp.prototype.test" title="RegExp.prototype.test ( S )"><span class="secnum">22.2.6.16</span> RegExp.prototype.test ( <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp.prototype.tostring" title="RegExp.prototype.toString ( )"><span class="secnum">22.2.6.17</span> RegExp.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-get-regexp.prototype.unicode" title="get RegExp.prototype.unicode"><span class="secnum">22.2.6.18</span> get RegExp.prototype.unicode</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-get-regexp.prototype.unicodesets" title="get RegExp.prototype.unicodeSets"><span class="secnum">22.2.6.19</span> get RegExp.prototype.unicodeSets</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-abstract-operations-for-regexp-matching" title="Abstract Operations for RegExp Matching"><span class="secnum">22.2.7</span> Abstract Operations for RegExp Matching</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexpexec" title="RegExpExec ( R, S )"><span class="secnum">22.2.7.1</span> RegExpExec ( <var>R</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexpbuiltinexec" title="RegExpBuiltinExec ( R, S )"><span class="secnum">22.2.7.2</span> RegExpBuiltinExec ( <var>R</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-advancestringindex" title="AdvanceStringIndex ( S, index, unicode )"><span class="secnum">22.2.7.3</span> AdvanceStringIndex ( <var>S</var>, <var>index</var>, <var>unicode</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-getstringindex" title="GetStringIndex ( S, codePointIndex )"><span class="secnum">22.2.7.4</span> GetStringIndex ( <var>S</var>, <var>codePointIndex</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-match-records" title="Match Records"><span class="secnum">22.2.7.5</span> Match Records</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-getmatchstring" title="GetMatchString ( S, match )"><span class="secnum">22.2.7.6</span> GetMatchString ( <var>S</var>, <var>match</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-getmatchindexpair" title="GetMatchIndexPair ( S, match )"><span class="secnum">22.2.7.7</span> GetMatchIndexPair ( <var>S</var>, <var>match</var> )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-makematchindicesindexpairarray" title="MakeMatchIndicesIndexPairArray ( S, indices, groupNames, hasGroups )"><span class="secnum">22.2.7.8</span> MakeMatchIndicesIndexPairArray ( <var>S</var>, <var>indices</var>, <var>groupNames</var>, <var>hasGroups</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-properties-of-regexp-instances" title="Properties of RegExp Instances"><span class="secnum">22.2.8</span> Properties of RegExp Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-lastindex" title="lastIndex"><span class="secnum">22.2.8.1</span> lastIndex</a></li></ol></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-regexp-string-iterator-objects" title="RegExp String Iterator Objects"><span class="secnum">22.2.9</span> RegExp String Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-createregexpstringiterator" title="CreateRegExpStringIterator ( R, S, global, fullUnicode )"><span class="secnum">22.2.9.1</span> CreateRegExpStringIterator ( <var>R</var>, <var>S</var>, <var>global</var>, <var>fullUnicode</var> )</a></li><li><span class="item-toggle">+</span><a href="text-processing.html#sec-%regexpstringiteratorprototype%-object" title="The %RegExpStringIteratorPrototype% Object"><span class="secnum">22.2.9.2</span> The %RegExpStringIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-%regexpstringiteratorprototype%.next" title="%RegExpStringIteratorPrototype%.next ( )"><span class="secnum">22.2.9.2.1</span> %RegExpStringIteratorPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-%regexpstringiteratorprototype%-%symbol.tostringtag%" title="%RegExpStringIteratorPrototype% [ %Symbol.toStringTag% ]"><span class="secnum">22.2.9.2.2</span> %RegExpStringIteratorPrototype% [ %Symbol.toStringTag% ]</a></li></ol></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-indexed-collections" title="Indexed Collections"><span class="secnum">23</span> Indexed Collections</a><ol class="toc"><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-array-objects" title="Array Objects"><span class="secnum">23.1</span> Array Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-array-constructor" title="The Array Constructor"><span class="secnum">23.1.1</span> The Array Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array" title="Array ( ...values )"><span class="secnum">23.1.1.1</span> Array ( ...<var>values</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-properties-of-the-array-constructor" title="Properties of the Array Constructor"><span class="secnum">23.1.2</span> Properties of the Array Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.from" title="Array.from ( items [ , mapper [ , thisArg ] ] )"><span class="secnum">23.1.2.1</span> Array.from ( <var>items</var> [ , <var>mapper</var> [ , <var>thisArg</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.isarray" title="Array.isArray ( arg )"><span class="secnum">23.1.2.2</span> Array.isArray ( <var>arg</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.of" title="Array.of ( ...items )"><span class="secnum">23.1.2.3</span> Array.of ( ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype" title="Array.prototype"><span class="secnum">23.1.2.4</span> Array.prototype</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-get-array-%symbol.species%" title="get Array [ %Symbol.species% ]"><span class="secnum">23.1.2.5</span> get Array [ %Symbol.species% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-properties-of-the-array-prototype-object" title="Properties of the Array Prototype Object"><span class="secnum">23.1.3</span> Properties of the Array Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.at" title="Array.prototype.at ( index )"><span class="secnum">23.1.3.1</span> Array.prototype.at ( <var>index</var> )</a></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-array.prototype.concat" title="Array.prototype.concat ( ...items )"><span class="secnum">23.1.3.2</span> Array.prototype.concat ( ...<var>items</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-isconcatspreadable" title="IsConcatSpreadable ( O )"><span class="secnum">23.1.3.2.1</span> IsConcatSpreadable ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.constructor" title="Array.prototype.constructor"><span class="secnum">23.1.3.3</span> Array.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.copywithin" title="Array.prototype.copyWithin ( target, start [ , end ] )"><span class="secnum">23.1.3.4</span> Array.prototype.copyWithin ( <var>target</var>, <var>start</var> [ , <var>end</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.entries" title="Array.prototype.entries ( )"><span class="secnum">23.1.3.5</span> Array.prototype.entries ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.every" title="Array.prototype.every ( callback [ , thisArg ] )"><span class="secnum">23.1.3.6</span> Array.prototype.every ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.fill" title="Array.prototype.fill ( value [ , start [ , end ] ] )"><span class="secnum">23.1.3.7</span> Array.prototype.fill ( <var>value</var> [ , <var>start</var> [ , <var>end</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.filter" title="Array.prototype.filter ( callback [ , thisArg ] )"><span class="secnum">23.1.3.8</span> Array.prototype.filter ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.find" title="Array.prototype.find ( predicate [ , thisArg ] )"><span class="secnum">23.1.3.9</span> Array.prototype.find ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.findindex" title="Array.prototype.findIndex ( predicate [ , thisArg ] )"><span class="secnum">23.1.3.10</span> Array.prototype.findIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.findlast" title="Array.prototype.findLast ( predicate [ , thisArg ] )"><span class="secnum">23.1.3.11</span> Array.prototype.findLast ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-array.prototype.findlastindex" title="Array.prototype.findLastIndex ( predicate [ , thisArg ] )"><span class="secnum">23.1.3.12</span> Array.prototype.findLastIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-findviapredicate" title="FindViaPredicate ( O, len, direction, predicate, thisArg )"><span class="secnum">23.1.3.12.1</span> FindViaPredicate ( <var>O</var>, <var>len</var>, <var>direction</var>, <var>predicate</var>, <var>thisArg</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-array.prototype.flat" title="Array.prototype.flat ( [ depth ] )"><span class="secnum">23.1.3.13</span> Array.prototype.flat ( [ <var>depth</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-flattenintoarray" title="FlattenIntoArray ( target, source, sourceLen, start, depth [ , mapperFunction [ , thisArg ] ] )"><span class="secnum">23.1.3.13.1</span> FlattenIntoArray ( <var>target</var>, <var>source</var>, <var>sourceLen</var>, <var>start</var>, <var>depth</var> [ , <var>mapperFunction</var> [ , <var>thisArg</var> ] ] )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.flatmap" title="Array.prototype.flatMap ( mapperFunction [ , thisArg ] )"><span class="secnum">23.1.3.14</span> Array.prototype.flatMap ( <var>mapperFunction</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.foreach" title="Array.prototype.forEach ( callback [ , thisArg ] )"><span class="secnum">23.1.3.15</span> Array.prototype.forEach ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.includes" title="Array.prototype.includes ( searchElement [ , fromIndex ] )"><span class="secnum">23.1.3.16</span> Array.prototype.includes ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.indexof" title="Array.prototype.indexOf ( searchElement [ , fromIndex ] )"><span class="secnum">23.1.3.17</span> Array.prototype.indexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.join" title="Array.prototype.join ( separator )"><span class="secnum">23.1.3.18</span> Array.prototype.join ( <var>separator</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.keys" title="Array.prototype.keys ( )"><span class="secnum">23.1.3.19</span> Array.prototype.keys ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.lastindexof" title="Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )"><span class="secnum">23.1.3.20</span> Array.prototype.lastIndexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.map" title="Array.prototype.map ( callback [ , thisArg ] )"><span class="secnum">23.1.3.21</span> Array.prototype.map ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.pop" title="Array.prototype.pop ( )"><span class="secnum">23.1.3.22</span> Array.prototype.pop ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.push" title="Array.prototype.push ( ...items )"><span class="secnum">23.1.3.23</span> Array.prototype.push ( ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.reduce" title="Array.prototype.reduce ( callback [ , initialValue ] )"><span class="secnum">23.1.3.24</span> Array.prototype.reduce ( <var>callback</var> [ , <var>initialValue</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.reduceright" title="Array.prototype.reduceRight ( callback [ , initialValue ] )"><span class="secnum">23.1.3.25</span> Array.prototype.reduceRight ( <var>callback</var> [ , <var>initialValue</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.reverse" title="Array.prototype.reverse ( )"><span class="secnum">23.1.3.26</span> Array.prototype.reverse ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.shift" title="Array.prototype.shift ( )"><span class="secnum">23.1.3.27</span> Array.prototype.shift ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.slice" title="Array.prototype.slice ( start, end )"><span class="secnum">23.1.3.28</span> Array.prototype.slice ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.some" title="Array.prototype.some ( callback [ , thisArg ] )"><span class="secnum">23.1.3.29</span> Array.prototype.some ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-array.prototype.sort" title="Array.prototype.sort ( comparator )"><span class="secnum">23.1.3.30</span> Array.prototype.sort ( <var>comparator</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-sortindexedproperties" title="SortIndexedProperties ( obj, len, SortCompare, holes )"><span class="secnum">23.1.3.30.1</span> SortIndexedProperties ( <var>obj</var>, <var>len</var>, <var>SortCompare</var>, <var>holes</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-comparearrayelements" title="CompareArrayElements ( x, y, comparator )"><span class="secnum">23.1.3.30.2</span> CompareArrayElements ( <var>x</var>, <var>y</var>, <var>comparator</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.splice" title="Array.prototype.splice ( start, deleteCount, ...items )"><span class="secnum">23.1.3.31</span> Array.prototype.splice ( <var>start</var>, <var>deleteCount</var>, ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.tolocalestring" title="Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">23.1.3.32</span> Array.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.toreversed" title="Array.prototype.toReversed ( )"><span class="secnum">23.1.3.33</span> Array.prototype.toReversed ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.tosorted" title="Array.prototype.toSorted ( comparator )"><span class="secnum">23.1.3.34</span> Array.prototype.toSorted ( <var>comparator</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.tospliced" title="Array.prototype.toSpliced ( start, skipCount, ...items )"><span class="secnum">23.1.3.35</span> Array.prototype.toSpliced ( <var>start</var>, <var>skipCount</var>, ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.tostring" title="Array.prototype.toString ( )"><span class="secnum">23.1.3.36</span> Array.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.unshift" title="Array.prototype.unshift ( ...items )"><span class="secnum">23.1.3.37</span> Array.prototype.unshift ( ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.values" title="Array.prototype.values ( )"><span class="secnum">23.1.3.38</span> Array.prototype.values ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype.with" title="Array.prototype.with ( index, value )"><span class="secnum">23.1.3.39</span> Array.prototype.with ( <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype-%symbol.iterator%" title="Array.prototype [ %Symbol.iterator% ] ( )"><span class="secnum">23.1.3.40</span> Array.prototype [ %Symbol.iterator% ] ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-array.prototype-%symbol.unscopables%" title="Array.prototype [ %Symbol.unscopables% ]"><span class="secnum">23.1.3.41</span> Array.prototype [ %Symbol.unscopables% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-properties-of-array-instances" title="Properties of Array Instances"><span class="secnum">23.1.4</span> Properties of Array Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-properties-of-array-instances-length" title="length"><span class="secnum">23.1.4.1</span> length</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-array-iterator-objects" title="Array Iterator Objects"><span class="secnum">23.1.5</span> Array Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-createarrayiterator" title="CreateArrayIterator ( array, kind )"><span class="secnum">23.1.5.1</span> CreateArrayIterator ( <var>array</var>, <var>kind</var> )</a></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-%arrayiteratorprototype%-object" title="The %ArrayIteratorPrototype% Object"><span class="secnum">23.1.5.2</span> The %ArrayIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%arrayiteratorprototype%.next" title="%ArrayIteratorPrototype%.next ( )"><span class="secnum">23.1.5.2.1</span> %ArrayIteratorPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%arrayiteratorprototype%-%symbol.tostringtag%" title="%ArrayIteratorPrototype% [ %Symbol.toStringTag% ]"><span class="secnum">23.1.5.2.2</span> %ArrayIteratorPrototype% [ %Symbol.toStringTag% ]</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-typedarray-objects" title="TypedArray Objects"><span class="secnum">23.2</span> TypedArray Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object" title="The %TypedArray% Intrinsic Object"><span class="secnum">23.2.1</span> The %TypedArray% Intrinsic Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%" title="%TypedArray% ( )"><span class="secnum">23.2.1.1</span> %TypedArray% ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-properties-of-the-%typedarray%-intrinsic-object" title="Properties of the %TypedArray% Intrinsic Object"><span class="secnum">23.2.2</span> Properties of the %TypedArray% Intrinsic Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.from" title="%TypedArray%.from ( source [ , mapper [ , thisArg ] ] )"><span class="secnum">23.2.2.1</span> %TypedArray%.from ( <var>source</var> [ , <var>mapper</var> [ , <var>thisArg</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.of" title="%TypedArray%.of ( ...items )"><span class="secnum">23.2.2.2</span> %TypedArray%.of ( ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype" title="%TypedArray%.prototype"><span class="secnum">23.2.2.3</span> %TypedArray%.prototype</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-get-%typedarray%-%symbol.species%" title="get %TypedArray% [ %Symbol.species% ]"><span class="secnum">23.2.2.4</span> get %TypedArray% [ %Symbol.species% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-properties-of-the-%typedarrayprototype%-object" title="Properties of the %TypedArray% Prototype Object"><span class="secnum">23.2.3</span> Properties of the %TypedArray% Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.at" title="%TypedArray%.prototype.at ( index )"><span class="secnum">23.2.3.1</span> %TypedArray%.prototype.at ( <var>index</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-get-%typedarray%.prototype.buffer" title="get %TypedArray%.prototype.buffer"><span class="secnum">23.2.3.2</span> get %TypedArray%.prototype.buffer</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-get-%typedarray%.prototype.bytelength" title="get %TypedArray%.prototype.byteLength"><span class="secnum">23.2.3.3</span> get %TypedArray%.prototype.byteLength</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-get-%typedarray%.prototype.byteoffset" title="get %TypedArray%.prototype.byteOffset"><span class="secnum">23.2.3.4</span> get %TypedArray%.prototype.byteOffset</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.constructor" title="%TypedArray%.prototype.constructor"><span class="secnum">23.2.3.5</span> %TypedArray%.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.copywithin" title="%TypedArray%.prototype.copyWithin ( target, start [ , end ] )"><span class="secnum">23.2.3.6</span> %TypedArray%.prototype.copyWithin ( <var>target</var>, <var>start</var> [ , <var>end</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.entries" title="%TypedArray%.prototype.entries ( )"><span class="secnum">23.2.3.7</span> %TypedArray%.prototype.entries ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.every" title="%TypedArray%.prototype.every ( callback [ , thisArg ] )"><span class="secnum">23.2.3.8</span> %TypedArray%.prototype.every ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.fill" title="%TypedArray%.prototype.fill ( value [ , start [ , end ] ] )"><span class="secnum">23.2.3.9</span> %TypedArray%.prototype.fill ( <var>value</var> [ , <var>start</var> [ , <var>end</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.filter" title="%TypedArray%.prototype.filter ( callback [ , thisArg ] )"><span class="secnum">23.2.3.10</span> %TypedArray%.prototype.filter ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.find" title="%TypedArray%.prototype.find ( predicate [ , thisArg ] )"><span class="secnum">23.2.3.11</span> %TypedArray%.prototype.find ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.findindex" title="%TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )"><span class="secnum">23.2.3.12</span> %TypedArray%.prototype.findIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.findlast" title="%TypedArray%.prototype.findLast ( predicate [ , thisArg ] )"><span class="secnum">23.2.3.13</span> %TypedArray%.prototype.findLast ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.findlastindex" title="%TypedArray%.prototype.findLastIndex ( predicate [ , thisArg ] )"><span class="secnum">23.2.3.14</span> %TypedArray%.prototype.findLastIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.foreach" title="%TypedArray%.prototype.forEach ( callback [ , thisArg ] )"><span class="secnum">23.2.3.15</span> %TypedArray%.prototype.forEach ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.includes" title="%TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )"><span class="secnum">23.2.3.16</span> %TypedArray%.prototype.includes ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.indexof" title="%TypedArray%.prototype.indexOf ( searchElement [ , fromIndex ] )"><span class="secnum">23.2.3.17</span> %TypedArray%.prototype.indexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.join" title="%TypedArray%.prototype.join ( separator )"><span class="secnum">23.2.3.18</span> %TypedArray%.prototype.join ( <var>separator</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.keys" title="%TypedArray%.prototype.keys ( )"><span class="secnum">23.2.3.19</span> %TypedArray%.prototype.keys ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.lastindexof" title="%TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )"><span class="secnum">23.2.3.20</span> %TypedArray%.prototype.lastIndexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-get-%typedarray%.prototype.length" title="get %TypedArray%.prototype.length"><span class="secnum">23.2.3.21</span> get %TypedArray%.prototype.length</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.map" title="%TypedArray%.prototype.map ( callback [ , thisArg ] )"><span class="secnum">23.2.3.22</span> %TypedArray%.prototype.map ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.reduce" title="%TypedArray%.prototype.reduce ( callback [ , initialValue ] )"><span class="secnum">23.2.3.23</span> %TypedArray%.prototype.reduce ( <var>callback</var> [ , <var>initialValue</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.reduceright" title="%TypedArray%.prototype.reduceRight ( callback [ , initialValue ] )"><span class="secnum">23.2.3.24</span> %TypedArray%.prototype.reduceRight ( <var>callback</var> [ , <var>initialValue</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.reverse" title="%TypedArray%.prototype.reverse ( )"><span class="secnum">23.2.3.25</span> %TypedArray%.prototype.reverse ( )</a></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-%typedarray%.prototype.set" title="%TypedArray%.prototype.set ( source [ , offset ] )"><span class="secnum">23.2.3.26</span> %TypedArray%.prototype.set ( <var>source</var> [ , <var>offset</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-settypedarrayfromtypedarray" title="SetTypedArrayFromTypedArray ( target, targetOffset, source )"><span class="secnum">23.2.3.26.1</span> SetTypedArrayFromTypedArray ( <var>target</var>, <var>targetOffset</var>, <var>source</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-settypedarrayfromarraylike" title="SetTypedArrayFromArrayLike ( target, targetOffset, source )"><span class="secnum">23.2.3.26.2</span> SetTypedArrayFromArrayLike ( <var>target</var>, <var>targetOffset</var>, <var>source</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.slice" title="%TypedArray%.prototype.slice ( start, end )"><span class="secnum">23.2.3.27</span> %TypedArray%.prototype.slice ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.some" title="%TypedArray%.prototype.some ( callback [ , thisArg ] )"><span class="secnum">23.2.3.28</span> %TypedArray%.prototype.some ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.sort" title="%TypedArray%.prototype.sort ( comparator )"><span class="secnum">23.2.3.29</span> %TypedArray%.prototype.sort ( <var>comparator</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.subarray" title="%TypedArray%.prototype.subarray ( start, end )"><span class="secnum">23.2.3.30</span> %TypedArray%.prototype.subarray ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.tolocalestring" title="%TypedArray%.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">23.2.3.31</span> %TypedArray%.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.toreversed" title="%TypedArray%.prototype.toReversed ( )"><span class="secnum">23.2.3.32</span> %TypedArray%.prototype.toReversed ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.tosorted" title="%TypedArray%.prototype.toSorted ( comparator )"><span class="secnum">23.2.3.33</span> %TypedArray%.prototype.toSorted ( <var>comparator</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.tostring" title="%TypedArray%.prototype.toString ( )"><span class="secnum">23.2.3.34</span> %TypedArray%.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.values" title="%TypedArray%.prototype.values ( )"><span class="secnum">23.2.3.35</span> %TypedArray%.prototype.values ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype.with" title="%TypedArray%.prototype.with ( index, value )"><span class="secnum">23.2.3.36</span> %TypedArray%.prototype.with ( <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-%typedarray%.prototype-%symbol.iterator%" title="%TypedArray%.prototype [ %Symbol.iterator% ] ( )"><span class="secnum">23.2.3.37</span> %TypedArray%.prototype [ %Symbol.iterator% ] ( )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-get-%typedarray%.prototype-%symbol.tostringtag%" title="get %TypedArray%.prototype [ %Symbol.toStringTag% ]"><span class="secnum">23.2.3.38</span> get %TypedArray%.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-abstract-operations-for-typedarray-objects" title="Abstract Operations for TypedArray Objects"><span class="secnum">23.2.4</span> Abstract Operations for TypedArray Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#typedarray-species-create" title="TypedArraySpeciesCreate ( exemplar, argumentList )"><span class="secnum">23.2.4.1</span> TypedArraySpeciesCreate ( <var>exemplar</var>, <var>argumentList</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-typedarraycreatefromconstructor" title="TypedArrayCreateFromConstructor ( constructor, argumentList )"><span class="secnum">23.2.4.2</span> TypedArrayCreateFromConstructor ( <var>constructor</var>, <var>argumentList</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-typedarray-create-same-type" title="TypedArrayCreateSameType ( exemplar, argumentList )"><span class="secnum">23.2.4.3</span> TypedArrayCreateSameType ( <var>exemplar</var>, <var>argumentList</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-validatetypedarray" title="ValidateTypedArray ( O, order )"><span class="secnum">23.2.4.4</span> ValidateTypedArray ( <var>O</var>, <var>order</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-typedarrayelementsize" title="TypedArrayElementSize ( O )"><span class="secnum">23.2.4.5</span> TypedArrayElementSize ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-typedarrayelementtype" title="TypedArrayElementType ( O )"><span class="secnum">23.2.4.6</span> TypedArrayElementType ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-comparetypedarrayelements" title="CompareTypedArrayElements ( x, y, comparator )"><span class="secnum">23.2.4.7</span> CompareTypedArrayElements ( <var>x</var>, <var>y</var>, <var>comparator</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-typedarray-constructors" title="The TypedArray Constructors"><span class="secnum">23.2.5</span> The <var>TypedArray</var> Constructors</a><ol class="toc"><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-typedarray" title="TypedArray ( ...args )"><span class="secnum">23.2.5.1</span> <var>TypedArray</var> ( ...<var>args</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-allocatetypedarray" title="AllocateTypedArray ( constructorName, newTarget, defaultProto [ , length ] )"><span class="secnum">23.2.5.1.1</span> AllocateTypedArray ( <var>constructorName</var>, <var>newTarget</var>, <var>defaultProto</var> [ , <var>length</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-initializetypedarrayfromtypedarray" title="InitializeTypedArrayFromTypedArray ( O, srcArray )"><span class="secnum">23.2.5.1.2</span> InitializeTypedArrayFromTypedArray ( <var>O</var>, <var>srcArray</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-initializetypedarrayfromarraybuffer" title="InitializeTypedArrayFromArrayBuffer ( O, buffer, byteOffset, length )"><span class="secnum">23.2.5.1.3</span> InitializeTypedArrayFromArrayBuffer ( <var>O</var>, <var>buffer</var>, <var>byteOffset</var>, <var>length</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-initializetypedarrayfromlist" title="InitializeTypedArrayFromList ( O, values )"><span class="secnum">23.2.5.1.4</span> InitializeTypedArrayFromList ( <var>O</var>, <var>values</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-initializetypedarrayfromarraylike" title="InitializeTypedArrayFromArrayLike ( O, arrayLike )"><span class="secnum">23.2.5.1.5</span> InitializeTypedArrayFromArrayLike ( <var>O</var>, <var>arrayLike</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-allocatetypedarraybuffer" title="AllocateTypedArrayBuffer ( O, length )"><span class="secnum">23.2.5.1.6</span> AllocateTypedArrayBuffer ( <var>O</var>, <var>length</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-properties-of-the-typedarray-constructors" title="Properties of the TypedArray Constructors"><span class="secnum">23.2.6</span> Properties of the <var>TypedArray</var> Constructors</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-typedarray.bytes_per_element" title="TypedArray.BYTES_PER_ELEMENT"><span class="secnum">23.2.6.1</span> <var>TypedArray</var>.BYTES_PER_ELEMENT</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-typedarray.prototype" title="TypedArray.prototype"><span class="secnum">23.2.6.2</span> <var>TypedArray</var>.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-properties-of-typedarray-prototype-objects" title="Properties of the TypedArray Prototype Objects"><span class="secnum">23.2.7</span> Properties of the <var>TypedArray</var> Prototype Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-typedarray.prototype.bytes_per_element" title="TypedArray.prototype.BYTES_PER_ELEMENT"><span class="secnum">23.2.7.1</span> <var>TypedArray</var>.prototype.BYTES_PER_ELEMENT</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-typedarray.prototype.constructor" title="TypedArray.prototype.constructor"><span class="secnum">23.2.7.2</span> <var>TypedArray</var>.prototype.constructor</a></li></ol></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-properties-of-typedarray-instances" title="Properties of TypedArray Instances"><span class="secnum">23.2.8</span> Properties of <var>TypedArray</var> Instances</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-keyed-collections" title="Keyed Collections"><span class="secnum">24</span> Keyed Collections</a><ol class="toc"><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-map-objects" title="Map Objects"><span class="secnum">24.1</span> Map Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-map-constructor" title="The Map Constructor"><span class="secnum">24.1.1</span> The Map Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map-iterable" title="Map ( [ iterable ] )"><span class="secnum">24.1.1.1</span> Map ( [ <var>iterable</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-add-entries-from-iterable" title="AddEntriesFromIterable ( target, iterable, adder )"><span class="secnum">24.1.1.2</span> AddEntriesFromIterable ( <var>target</var>, <var>iterable</var>, <var>adder</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-properties-of-the-map-constructor" title="Properties of the Map Constructor"><span class="secnum">24.1.2</span> Properties of the Map Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.groupby" title="Map.groupBy ( items, callback )"><span class="secnum">24.1.2.1</span> Map.groupBy ( <var>items</var>, <var>callback</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype" title="Map.prototype"><span class="secnum">24.1.2.2</span> Map.prototype</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-get-map-%symbol.species%" title="get Map [ %Symbol.species% ]"><span class="secnum">24.1.2.3</span> get Map [ %Symbol.species% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-properties-of-the-map-prototype-object" title="Properties of the Map Prototype Object"><span class="secnum">24.1.3</span> Properties of the Map Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.clear" title="Map.prototype.clear ( )"><span class="secnum">24.1.3.1</span> Map.prototype.clear ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.constructor" title="Map.prototype.constructor"><span class="secnum">24.1.3.2</span> Map.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.delete" title="Map.prototype.delete ( key )"><span class="secnum">24.1.3.3</span> Map.prototype.delete ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.entries" title="Map.prototype.entries ( )"><span class="secnum">24.1.3.4</span> Map.prototype.entries ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.foreach" title="Map.prototype.forEach ( callback [ , thisArg ] )"><span class="secnum">24.1.3.5</span> Map.prototype.forEach ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.get" title="Map.prototype.get ( key )"><span class="secnum">24.1.3.6</span> Map.prototype.get ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.has" title="Map.prototype.has ( key )"><span class="secnum">24.1.3.7</span> Map.prototype.has ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.keys" title="Map.prototype.keys ( )"><span class="secnum">24.1.3.8</span> Map.prototype.keys ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.set" title="Map.prototype.set ( key, value )"><span class="secnum">24.1.3.9</span> Map.prototype.set ( <var>key</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-get-map.prototype.size" title="get Map.prototype.size"><span class="secnum">24.1.3.10</span> get Map.prototype.size</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.values" title="Map.prototype.values ( )"><span class="secnum">24.1.3.11</span> Map.prototype.values ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype-%symbol.iterator%" title="Map.prototype [ %Symbol.iterator% ] ( )"><span class="secnum">24.1.3.12</span> Map.prototype [ %Symbol.iterator% ] ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype-%symbol.tostringtag%" title="Map.prototype [ %Symbol.toStringTag% ]"><span class="secnum">24.1.3.13</span> Map.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-properties-of-map-instances" title="Properties of Map Instances"><span class="secnum">24.1.4</span> Properties of Map Instances</a></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-map-iterator-objects" title="Map Iterator Objects"><span class="secnum">24.1.5</span> Map Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-createmapiterator" title="CreateMapIterator ( map, kind )"><span class="secnum">24.1.5.1</span> CreateMapIterator ( <var>map</var>, <var>kind</var> )</a></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-%mapiteratorprototype%-object" title="The %MapIteratorPrototype% Object"><span class="secnum">24.1.5.2</span> The %MapIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-%mapiteratorprototype%.next" title="%MapIteratorPrototype%.next ( )"><span class="secnum">24.1.5.2.1</span> %MapIteratorPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-%mapiteratorprototype%-%symbol.tostringtag%" title="%MapIteratorPrototype% [ %Symbol.toStringTag% ]"><span class="secnum">24.1.5.2.2</span> %MapIteratorPrototype% [ %Symbol.toStringTag% ]</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-set-objects" title="Set Objects"><span class="secnum">24.2</span> Set Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-abstract-operations-for-set-objects" title="Abstract Operations For Set Objects"><span class="secnum">24.2.1</span> Abstract Operations For Set Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set-records" title="Set Records"><span class="secnum">24.2.1.1</span> Set Records</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-getsetrecord" title="GetSetRecord ( obj )"><span class="secnum">24.2.1.2</span> GetSetRecord ( <var>obj</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-setdatahas" title="SetDataHas ( setData, value )"><span class="secnum">24.2.1.3</span> SetDataHas ( <var>setData</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-setdataindex" title="SetDataIndex ( setData, value )"><span class="secnum">24.2.1.4</span> SetDataIndex ( <var>setData</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-setdatasize" title="SetDataSize ( setData )"><span class="secnum">24.2.1.5</span> SetDataSize ( <var>setData</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-set-constructor" title="The Set Constructor"><span class="secnum">24.2.2</span> The Set Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set-iterable" title="Set ( [ iterable ] )"><span class="secnum">24.2.2.1</span> Set ( [ <var>iterable</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-properties-of-the-set-constructor" title="Properties of the Set Constructor"><span class="secnum">24.2.3</span> Properties of the Set Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype" title="Set.prototype"><span class="secnum">24.2.3.1</span> Set.prototype</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-get-set-%symbol.species%" title="get Set [ %Symbol.species% ]"><span class="secnum">24.2.3.2</span> get Set [ %Symbol.species% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-properties-of-the-set-prototype-object" title="Properties of the Set Prototype Object"><span class="secnum">24.2.4</span> Properties of the Set Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.add" title="Set.prototype.add ( value )"><span class="secnum">24.2.4.1</span> Set.prototype.add ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.clear" title="Set.prototype.clear ( )"><span class="secnum">24.2.4.2</span> Set.prototype.clear ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.constructor" title="Set.prototype.constructor"><span class="secnum">24.2.4.3</span> Set.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.delete" title="Set.prototype.delete ( value )"><span class="secnum">24.2.4.4</span> Set.prototype.delete ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.difference" title="Set.prototype.difference ( other )"><span class="secnum">24.2.4.5</span> Set.prototype.difference ( <var>other</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.entries" title="Set.prototype.entries ( )"><span class="secnum">24.2.4.6</span> Set.prototype.entries ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.foreach" title="Set.prototype.forEach ( callback [ , thisArg ] )"><span class="secnum">24.2.4.7</span> Set.prototype.forEach ( <var>callback</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.has" title="Set.prototype.has ( value )"><span class="secnum">24.2.4.8</span> Set.prototype.has ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.intersection" title="Set.prototype.intersection ( other )"><span class="secnum">24.2.4.9</span> Set.prototype.intersection ( <var>other</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.isdisjointfrom" title="Set.prototype.isDisjointFrom ( other )"><span class="secnum">24.2.4.10</span> Set.prototype.isDisjointFrom ( <var>other</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.issubsetof" title="Set.prototype.isSubsetOf ( other )"><span class="secnum">24.2.4.11</span> Set.prototype.isSubsetOf ( <var>other</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.issupersetof" title="Set.prototype.isSupersetOf ( other )"><span class="secnum">24.2.4.12</span> Set.prototype.isSupersetOf ( <var>other</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.keys" title="Set.prototype.keys ( )"><span class="secnum">24.2.4.13</span> Set.prototype.keys ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-get-set.prototype.size" title="get Set.prototype.size"><span class="secnum">24.2.4.14</span> get Set.prototype.size</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.symmetricdifference" title="Set.prototype.symmetricDifference ( other )"><span class="secnum">24.2.4.15</span> Set.prototype.symmetricDifference ( <var>other</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.union" title="Set.prototype.union ( other )"><span class="secnum">24.2.4.16</span> Set.prototype.union ( <var>other</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype.values" title="Set.prototype.values ( )"><span class="secnum">24.2.4.17</span> Set.prototype.values ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype-%symbol.iterator%" title="Set.prototype [ %Symbol.iterator% ] ( )"><span class="secnum">24.2.4.18</span> Set.prototype [ %Symbol.iterator% ] ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-set.prototype-%symbol.tostringtag%" title="Set.prototype [ %Symbol.toStringTag% ]"><span class="secnum">24.2.4.19</span> Set.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-properties-of-set-instances" title="Properties of Set Instances"><span class="secnum">24.2.5</span> Properties of Set Instances</a></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-set-iterator-objects" title="Set Iterator Objects"><span class="secnum">24.2.6</span> Set Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-createsetiterator" title="CreateSetIterator ( set, kind )"><span class="secnum">24.2.6.1</span> CreateSetIterator ( <var>set</var>, <var>kind</var> )</a></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-%setiteratorprototype%-object" title="The %SetIteratorPrototype% Object"><span class="secnum">24.2.6.2</span> The %SetIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-%setiteratorprototype%.next" title="%SetIteratorPrototype%.next ( )"><span class="secnum">24.2.6.2.1</span> %SetIteratorPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-%setiteratorprototype%-%symbol.tostringtag%" title="%SetIteratorPrototype% [ %Symbol.toStringTag% ]"><span class="secnum">24.2.6.2.2</span> %SetIteratorPrototype% [ %Symbol.toStringTag% ]</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-weakmap-objects" title="WeakMap Objects"><span class="secnum">24.3</span> WeakMap Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-weakmap-constructor" title="The WeakMap Constructor"><span class="secnum">24.3.1</span> The WeakMap Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakmap-iterable" title="WeakMap ( [ iterable ] )"><span class="secnum">24.3.1.1</span> WeakMap ( [ <var>iterable</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-properties-of-the-weakmap-constructor" title="Properties of the WeakMap Constructor"><span class="secnum">24.3.2</span> Properties of the WeakMap Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakmap.prototype" title="WeakMap.prototype"><span class="secnum">24.3.2.1</span> WeakMap.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-properties-of-the-weakmap-prototype-object" title="Properties of the WeakMap Prototype Object"><span class="secnum">24.3.3</span> Properties of the WeakMap Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakmap.prototype.constructor" title="WeakMap.prototype.constructor"><span class="secnum">24.3.3.1</span> WeakMap.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakmap.prototype.delete" title="WeakMap.prototype.delete ( key )"><span class="secnum">24.3.3.2</span> WeakMap.prototype.delete ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakmap.prototype.get" title="WeakMap.prototype.get ( key )"><span class="secnum">24.3.3.3</span> WeakMap.prototype.get ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakmap.prototype.has" title="WeakMap.prototype.has ( key )"><span class="secnum">24.3.3.4</span> WeakMap.prototype.has ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakmap.prototype.set" title="WeakMap.prototype.set ( key, value )"><span class="secnum">24.3.3.5</span> WeakMap.prototype.set ( <var>key</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakmap.prototype-%symbol.tostringtag%" title="WeakMap.prototype [ %Symbol.toStringTag% ]"><span class="secnum">24.3.3.6</span> WeakMap.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-properties-of-weakmap-instances" title="Properties of WeakMap Instances"><span class="secnum">24.3.4</span> Properties of WeakMap Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-weakset-objects" title="WeakSet Objects"><span class="secnum">24.4</span> WeakSet Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-weakset-constructor" title="The WeakSet Constructor"><span class="secnum">24.4.1</span> The WeakSet Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakset-iterable" title="WeakSet ( [ iterable ] )"><span class="secnum">24.4.1.1</span> WeakSet ( [ <var>iterable</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-properties-of-the-weakset-constructor" title="Properties of the WeakSet Constructor"><span class="secnum">24.4.2</span> Properties of the WeakSet Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakset.prototype" title="WeakSet.prototype"><span class="secnum">24.4.2.1</span> WeakSet.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-properties-of-the-weakset-prototype-object" title="Properties of the WeakSet Prototype Object"><span class="secnum">24.4.3</span> Properties of the WeakSet Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakset.prototype.add" title="WeakSet.prototype.add ( value )"><span class="secnum">24.4.3.1</span> WeakSet.prototype.add ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakset.prototype.constructor" title="WeakSet.prototype.constructor"><span class="secnum">24.4.3.2</span> WeakSet.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakset.prototype.delete" title="WeakSet.prototype.delete ( value )"><span class="secnum">24.4.3.3</span> WeakSet.prototype.delete ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakset.prototype.has" title="WeakSet.prototype.has ( value )"><span class="secnum">24.4.3.4</span> WeakSet.prototype.has ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakset.prototype-%symbol.tostringtag%" title="WeakSet.prototype [ %Symbol.toStringTag% ]"><span class="secnum">24.4.3.5</span> WeakSet.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-properties-of-weakset-instances" title="Properties of WeakSet Instances"><span class="secnum">24.4.4</span> Properties of WeakSet Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="keyed-collections.html#sec-abstract-operations-for-keyed-collections" title="Abstract Operations for Keyed Collections"><span class="secnum">24.5</span> Abstract Operations for Keyed Collections</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-canonicalizekeyedcollectionkey" title="CanonicalizeKeyedCollectionKey ( key )"><span class="secnum">24.5.1</span> CanonicalizeKeyedCollectionKey ( <var>key</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-structured-data" title="Structured Data"><span class="secnum">25</span> Structured Data</a><ol class="toc"><li><span class="item-toggle">+</span><a href="structured-data.html#sec-arraybuffer-objects" title="ArrayBuffer Objects"><span class="secnum">25.1</span> ArrayBuffer Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffer-notation" title="Notation"><span class="secnum">25.1.1</span> Notation</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-fixed-length-and-resizable-arraybuffer-objects" title="Fixed-length and Resizable ArrayBuffer Objects"><span class="secnum">25.1.2</span> Fixed-length and Resizable ArrayBuffer Objects</a></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-abstract-operations-for-arraybuffer-objects" title="Abstract Operations For ArrayBuffer Objects"><span class="secnum">25.1.3</span> Abstract Operations For ArrayBuffer Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-allocatearraybuffer" title="AllocateArrayBuffer ( constructor, byteLength [ , maxByteLength ] )"><span class="secnum">25.1.3.1</span> AllocateArrayBuffer ( <var>constructor</var>, <var>byteLength</var> [ , <var>maxByteLength</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybufferbytelength" title="ArrayBufferByteLength ( arrayBuffer, order )"><span class="secnum">25.1.3.2</span> ArrayBufferByteLength ( <var>arrayBuffer</var>, <var>order</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffercopyanddetach" title="ArrayBufferCopyAndDetach ( arrayBuffer, newLength, preserveResizability )"><span class="secnum">25.1.3.3</span> ArrayBufferCopyAndDetach ( <var>arrayBuffer</var>, <var>newLength</var>, <var>preserveResizability</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-isdetachedbuffer" title="IsDetachedBuffer ( arrayBuffer )"><span class="secnum">25.1.3.4</span> IsDetachedBuffer ( <var>arrayBuffer</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-detacharraybuffer" title="DetachArrayBuffer ( arrayBuffer [ , key ] )"><span class="secnum">25.1.3.5</span> DetachArrayBuffer ( <var>arrayBuffer</var> [ , <var>key</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-clonearraybuffer" title="CloneArrayBuffer ( srcBuffer, srcByteOffset, srcLength )"><span class="secnum">25.1.3.6</span> CloneArrayBuffer ( <var>srcBuffer</var>, <var>srcByteOffset</var>, <var>srcLength</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-getarraybuffermaxbytelengthoption" title="GetArrayBufferMaxByteLengthOption ( options )"><span class="secnum">25.1.3.7</span> GetArrayBufferMaxByteLengthOption ( <var>options</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-hostresizearraybuffer" title="HostResizeArrayBuffer ( buffer, newByteLength )"><span class="secnum">25.1.3.8</span> HostResizeArrayBuffer ( <var>buffer</var>, <var>newByteLength</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-isfixedlengtharraybuffer" title="IsFixedLengthArrayBuffer ( arrayBuffer )"><span class="secnum">25.1.3.9</span> IsFixedLengthArrayBuffer ( <var>arrayBuffer</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-isunsignedelementtype" title="IsUnsignedElementType ( type )"><span class="secnum">25.1.3.10</span> IsUnsignedElementType ( <var>type</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-isunclampedintegerelementtype" title="IsUnclampedIntegerElementType ( type )"><span class="secnum">25.1.3.11</span> IsUnclampedIntegerElementType ( <var>type</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-isbigintelementtype" title="IsBigIntElementType ( type )"><span class="secnum">25.1.3.12</span> IsBigIntElementType ( <var>type</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-isnotearconfiguration" title="IsNoTearConfiguration ( type, order )"><span class="secnum">25.1.3.13</span> IsNoTearConfiguration ( <var>type</var>, <var>order</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-rawbytestonumeric" title="RawBytesToNumeric ( type, rawBytes, isLittleEndian )"><span class="secnum">25.1.3.14</span> RawBytesToNumeric ( <var>type</var>, <var>rawBytes</var>, <var>isLittleEndian</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-getrawbytesfromsharedblock" title="GetRawBytesFromSharedBlock ( block, byteIndex, type, isTypedArray, order )"><span class="secnum">25.1.3.15</span> GetRawBytesFromSharedBlock ( <var>block</var>, <var>byteIndex</var>, <var>type</var>, <var>isTypedArray</var>, <var>order</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-getvaluefrombuffer" title="GetValueFromBuffer ( arrayBuffer, byteIndex, type, isTypedArray, order [ , isLittleEndian ] )"><span class="secnum">25.1.3.16</span> GetValueFromBuffer ( <var>arrayBuffer</var>, <var>byteIndex</var>, <var>type</var>, <var>isTypedArray</var>, <var>order</var> [ , <var>isLittleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-numerictorawbytes" title="NumericToRawBytes ( type, value, isLittleEndian )"><span class="secnum">25.1.3.17</span> NumericToRawBytes ( <var>type</var>, <var>value</var>, <var>isLittleEndian</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-setvalueinbuffer" title="SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isTypedArray, order [ , isLittleEndian ] )"><span class="secnum">25.1.3.18</span> SetValueInBuffer ( <var>arrayBuffer</var>, <var>byteIndex</var>, <var>type</var>, <var>value</var>, <var>isTypedArray</var>, <var>order</var> [ , <var>isLittleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-getmodifysetvalueinbuffer" title="GetModifySetValueInBuffer ( arrayBuffer, byteIndex, type, value, op )"><span class="secnum">25.1.3.19</span> GetModifySetValueInBuffer ( <var>arrayBuffer</var>, <var>byteIndex</var>, <var>type</var>, <var>value</var>, <var>op</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-arraybuffer-constructor" title="The ArrayBuffer Constructor"><span class="secnum">25.1.4</span> The ArrayBuffer Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffer-length" title="ArrayBuffer ( length [ , options ] )"><span class="secnum">25.1.4.1</span> ArrayBuffer ( <var>length</var> [ , <var>options</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-properties-of-the-arraybuffer-constructor" title="Properties of the ArrayBuffer Constructor"><span class="secnum">25.1.5</span> Properties of the ArrayBuffer Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffer.isview" title="ArrayBuffer.isView ( arg )"><span class="secnum">25.1.5.1</span> ArrayBuffer.isView ( <var>arg</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffer.prototype" title="ArrayBuffer.prototype"><span class="secnum">25.1.5.2</span> ArrayBuffer.prototype</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-arraybuffer-%symbol.species%" title="get ArrayBuffer [ %Symbol.species% ]"><span class="secnum">25.1.5.3</span> get ArrayBuffer [ %Symbol.species% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-properties-of-the-arraybuffer-prototype-object" title="Properties of the ArrayBuffer Prototype Object"><span class="secnum">25.1.6</span> Properties of the ArrayBuffer Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-arraybuffer.prototype.bytelength" title="get ArrayBuffer.prototype.byteLength"><span class="secnum">25.1.6.1</span> get ArrayBuffer.prototype.byteLength</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffer.prototype.constructor" title="ArrayBuffer.prototype.constructor"><span class="secnum">25.1.6.2</span> ArrayBuffer.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-arraybuffer.prototype.detached" title="get ArrayBuffer.prototype.detached"><span class="secnum">25.1.6.3</span> get ArrayBuffer.prototype.detached</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-arraybuffer.prototype.maxbytelength" title="get ArrayBuffer.prototype.maxByteLength"><span class="secnum">25.1.6.4</span> get ArrayBuffer.prototype.maxByteLength</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-arraybuffer.prototype.resizable" title="get ArrayBuffer.prototype.resizable"><span class="secnum">25.1.6.5</span> get ArrayBuffer.prototype.resizable</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffer.prototype.resize" title="ArrayBuffer.prototype.resize ( newLength )"><span class="secnum">25.1.6.6</span> ArrayBuffer.prototype.resize ( <var>newLength</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffer.prototype.slice" title="ArrayBuffer.prototype.slice ( start, end )"><span class="secnum">25.1.6.7</span> ArrayBuffer.prototype.slice ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffer.prototype.transfer" title="ArrayBuffer.prototype.transfer ( [ newLength ] )"><span class="secnum">25.1.6.8</span> ArrayBuffer.prototype.transfer ( [ <var>newLength</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffer.prototype.transfertofixedlength" title="ArrayBuffer.prototype.transferToFixedLength ( [ newLength ] )"><span class="secnum">25.1.6.9</span> ArrayBuffer.prototype.transferToFixedLength ( [ <var>newLength</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-arraybuffer.prototype-%symbol.tostringtag%" title="ArrayBuffer.prototype [ %Symbol.toStringTag% ]"><span class="secnum">25.1.6.10</span> ArrayBuffer.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-properties-of-the-arraybuffer-instances" title="Properties of ArrayBuffer Instances"><span class="secnum">25.1.7</span> Properties of ArrayBuffer Instances</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-resizable-arraybuffer-guidelines" title="Resizable ArrayBuffer Guidelines"><span class="secnum">25.1.8</span> Resizable ArrayBuffer Guidelines</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-sharedarraybuffer-objects" title="SharedArrayBuffer Objects"><span class="secnum">25.2</span> SharedArrayBuffer Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-fixed-length-and-growable-sharedarraybuffer-objects" title="Fixed-length and Growable SharedArrayBuffer Objects"><span class="secnum">25.2.1</span> Fixed-length and Growable SharedArrayBuffer Objects</a></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-abstract-operations-for-sharedarraybuffer-objects" title="Abstract Operations for SharedArrayBuffer Objects"><span class="secnum">25.2.2</span> Abstract Operations for SharedArrayBuffer Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-allocatesharedarraybuffer" title="AllocateSharedArrayBuffer ( constructor, byteLength [ , maxByteLength ] )"><span class="secnum">25.2.2.1</span> AllocateSharedArrayBuffer ( <var>constructor</var>, <var>byteLength</var> [ , <var>maxByteLength</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-issharedarraybuffer" title="IsSharedArrayBuffer ( obj )"><span class="secnum">25.2.2.2</span> IsSharedArrayBuffer ( <var>obj</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-hostgrowsharedarraybuffer" title="HostGrowSharedArrayBuffer ( buffer, newByteLength )"><span class="secnum">25.2.2.3</span> HostGrowSharedArrayBuffer ( <var>buffer</var>, <var>newByteLength</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-sharedarraybuffer-constructor" title="The SharedArrayBuffer Constructor"><span class="secnum">25.2.3</span> The SharedArrayBuffer Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-sharedarraybuffer-length" title="SharedArrayBuffer ( length [ , options ] )"><span class="secnum">25.2.3.1</span> SharedArrayBuffer ( <var>length</var> [ , <var>options</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-properties-of-the-sharedarraybuffer-constructor" title="Properties of the SharedArrayBuffer Constructor"><span class="secnum">25.2.4</span> Properties of the SharedArrayBuffer Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-sharedarraybuffer.prototype" title="SharedArrayBuffer.prototype"><span class="secnum">25.2.4.1</span> SharedArrayBuffer.prototype</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-sharedarraybuffer-%symbol.species%" title="get SharedArrayBuffer [ %Symbol.species% ]"><span class="secnum">25.2.4.2</span> get SharedArrayBuffer [ %Symbol.species% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-properties-of-the-sharedarraybuffer-prototype-object" title="Properties of the SharedArrayBuffer Prototype Object"><span class="secnum">25.2.5</span> Properties of the SharedArrayBuffer Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-sharedarraybuffer.prototype.bytelength" title="get SharedArrayBuffer.prototype.byteLength"><span class="secnum">25.2.5.1</span> get SharedArrayBuffer.prototype.byteLength</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-sharedarraybuffer.prototype.constructor" title="SharedArrayBuffer.prototype.constructor"><span class="secnum">25.2.5.2</span> SharedArrayBuffer.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-sharedarraybuffer.prototype.grow" title="SharedArrayBuffer.prototype.grow ( newLength )"><span class="secnum">25.2.5.3</span> SharedArrayBuffer.prototype.grow ( <var>newLength</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-sharedarraybuffer.prototype.growable" title="get SharedArrayBuffer.prototype.growable"><span class="secnum">25.2.5.4</span> get SharedArrayBuffer.prototype.growable</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-sharedarraybuffer.prototype.maxbytelength" title="get SharedArrayBuffer.prototype.maxByteLength"><span class="secnum">25.2.5.5</span> get SharedArrayBuffer.prototype.maxByteLength</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-sharedarraybuffer.prototype.slice" title="SharedArrayBuffer.prototype.slice ( start, end )"><span class="secnum">25.2.5.6</span> SharedArrayBuffer.prototype.slice ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-sharedarraybuffer.prototype-%symbol.tostringtag%" title="SharedArrayBuffer.prototype [ %Symbol.toStringTag% ]"><span class="secnum">25.2.5.7</span> SharedArrayBuffer.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-properties-of-the-sharedarraybuffer-instances" title="Properties of SharedArrayBuffer Instances"><span class="secnum">25.2.6</span> Properties of SharedArrayBuffer Instances</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-growable-sharedarraybuffer-guidelines" title="Growable SharedArrayBuffer Guidelines"><span class="secnum">25.2.7</span> Growable SharedArrayBuffer Guidelines</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-dataview-objects" title="DataView Objects"><span class="secnum">25.3</span> DataView Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="structured-data.html#sec-abstract-operations-for-dataview-objects" title="Abstract Operations For DataView Objects"><span class="secnum">25.3.1</span> Abstract Operations For DataView Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview-with-buffer-witness-records" title="DataView With Buffer Witness Records"><span class="secnum">25.3.1.1</span> DataView With Buffer Witness Records</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-makedataviewwithbufferwitnessrecord" title="MakeDataViewWithBufferWitnessRecord ( obj, order )"><span class="secnum">25.3.1.2</span> MakeDataViewWithBufferWitnessRecord ( <var>obj</var>, <var>order</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-getviewbytelength" title="GetViewByteLength ( viewRecord )"><span class="secnum">25.3.1.3</span> GetViewByteLength ( <var>viewRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-isviewoutofbounds" title="IsViewOutOfBounds ( viewRecord )"><span class="secnum">25.3.1.4</span> IsViewOutOfBounds ( <var>viewRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-getviewvalue" title="GetViewValue ( view, requestIndex, isLittleEndian, type )"><span class="secnum">25.3.1.5</span> GetViewValue ( <var>view</var>, <var>requestIndex</var>, <var>isLittleEndian</var>, <var>type</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-setviewvalue" title="SetViewValue ( view, requestIndex, isLittleEndian, type, value )"><span class="secnum">25.3.1.6</span> SetViewValue ( <var>view</var>, <var>requestIndex</var>, <var>isLittleEndian</var>, <var>type</var>, <var>value</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-dataview-constructor" title="The DataView Constructor"><span class="secnum">25.3.2</span> The DataView Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview-buffer-byteoffset-bytelength" title="DataView ( buffer [ , byteOffset [ , byteLength ] ] )"><span class="secnum">25.3.2.1</span> DataView ( <var>buffer</var> [ , <var>byteOffset</var> [ , <var>byteLength</var> ] ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-properties-of-the-dataview-constructor" title="Properties of the DataView Constructor"><span class="secnum">25.3.3</span> Properties of the DataView Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype" title="DataView.prototype"><span class="secnum">25.3.3.1</span> DataView.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-properties-of-the-dataview-prototype-object" title="Properties of the DataView Prototype Object"><span class="secnum">25.3.4</span> Properties of the DataView Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-dataview.prototype.buffer" title="get DataView.prototype.buffer"><span class="secnum">25.3.4.1</span> get DataView.prototype.buffer</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-dataview.prototype.bytelength" title="get DataView.prototype.byteLength"><span class="secnum">25.3.4.2</span> get DataView.prototype.byteLength</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-get-dataview.prototype.byteoffset" title="get DataView.prototype.byteOffset"><span class="secnum">25.3.4.3</span> get DataView.prototype.byteOffset</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.constructor" title="DataView.prototype.constructor"><span class="secnum">25.3.4.4</span> DataView.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.getbigint64" title="DataView.prototype.getBigInt64 ( byteOffset [ , littleEndian ] )"><span class="secnum">25.3.4.5</span> DataView.prototype.getBigInt64 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.getbiguint64" title="DataView.prototype.getBigUint64 ( byteOffset [ , littleEndian ] )"><span class="secnum">25.3.4.6</span> DataView.prototype.getBigUint64 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.getfloat32" title="DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )"><span class="secnum">25.3.4.7</span> DataView.prototype.getFloat32 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.getfloat64" title="DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )"><span class="secnum">25.3.4.8</span> DataView.prototype.getFloat64 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.getint8" title="DataView.prototype.getInt8 ( byteOffset )"><span class="secnum">25.3.4.9</span> DataView.prototype.getInt8 ( <var>byteOffset</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.getint16" title="DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )"><span class="secnum">25.3.4.10</span> DataView.prototype.getInt16 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.getint32" title="DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )"><span class="secnum">25.3.4.11</span> DataView.prototype.getInt32 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.getuint8" title="DataView.prototype.getUint8 ( byteOffset )"><span class="secnum">25.3.4.12</span> DataView.prototype.getUint8 ( <var>byteOffset</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.getuint16" title="DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )"><span class="secnum">25.3.4.13</span> DataView.prototype.getUint16 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.getuint32" title="DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )"><span class="secnum">25.3.4.14</span> DataView.prototype.getUint32 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.setbigint64" title="DataView.prototype.setBigInt64 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">25.3.4.15</span> DataView.prototype.setBigInt64 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.setbiguint64" title="DataView.prototype.setBigUint64 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">25.3.4.16</span> DataView.prototype.setBigUint64 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.setfloat32" title="DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">25.3.4.17</span> DataView.prototype.setFloat32 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.setfloat64" title="DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">25.3.4.18</span> DataView.prototype.setFloat64 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.setint8" title="DataView.prototype.setInt8 ( byteOffset, value )"><span class="secnum">25.3.4.19</span> DataView.prototype.setInt8 ( <var>byteOffset</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.setint16" title="DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">25.3.4.20</span> DataView.prototype.setInt16 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.setint32" title="DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">25.3.4.21</span> DataView.prototype.setInt32 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.setuint8" title="DataView.prototype.setUint8 ( byteOffset, value )"><span class="secnum">25.3.4.22</span> DataView.prototype.setUint8 ( <var>byteOffset</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.setuint16" title="DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">25.3.4.23</span> DataView.prototype.setUint16 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype.setuint32" title="DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">25.3.4.24</span> DataView.prototype.setUint32 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dataview.prototype-%symbol.tostringtag%" title="DataView.prototype [ %Symbol.toStringTag% ]"><span class="secnum">25.3.4.25</span> DataView.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-properties-of-dataview-instances" title="Properties of DataView Instances"><span class="secnum">25.3.5</span> Properties of DataView Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-atomics-object" title="The Atomics Object"><span class="secnum">25.4</span> The Atomics Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-waiter-record" title="Waiter Record"><span class="secnum">25.4.1</span> Waiter Record</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-waiterlist-records" title="WaiterList Records"><span class="secnum">25.4.2</span> WaiterList Records</a></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-abstract-operations-for-atomics" title="Abstract Operations for Atomics"><span class="secnum">25.4.3</span> Abstract Operations for Atomics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-validateintegertypedarray" title="ValidateIntegerTypedArray ( typedArray, waitable )"><span class="secnum">25.4.3.1</span> ValidateIntegerTypedArray ( <var>typedArray</var>, <var>waitable</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-validateatomicaccess" title="ValidateAtomicAccess ( taRecord, requestIndex )"><span class="secnum">25.4.3.2</span> ValidateAtomicAccess ( <var>taRecord</var>, <var>requestIndex</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-validateatomicaccessonintegertypedarray" title="ValidateAtomicAccessOnIntegerTypedArray ( typedArray, requestIndex [ , waitable ] )"><span class="secnum">25.4.3.3</span> ValidateAtomicAccessOnIntegerTypedArray ( <var>typedArray</var>, <var>requestIndex</var> [ , <var>waitable</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-revalidateatomicaccess" title="RevalidateAtomicAccess ( typedArray, byteIndexInBuffer )"><span class="secnum">25.4.3.4</span> RevalidateAtomicAccess ( <var>typedArray</var>, <var>byteIndexInBuffer</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-getwaiterlist" title="GetWaiterList ( block, i )"><span class="secnum">25.4.3.5</span> GetWaiterList ( <var>block</var>, <var>i</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-entercriticalsection" title="EnterCriticalSection ( WL )"><span class="secnum">25.4.3.6</span> EnterCriticalSection ( <var>WL</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-leavecriticalsection" title="LeaveCriticalSection ( WL )"><span class="secnum">25.4.3.7</span> LeaveCriticalSection ( <var>WL</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-addwaiter" title="AddWaiter ( WL, waiterRecord )"><span class="secnum">25.4.3.8</span> AddWaiter ( <var>WL</var>, <var>waiterRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-removewaiter" title="RemoveWaiter ( WL, waiterRecord )"><span class="secnum">25.4.3.9</span> RemoveWaiter ( <var>WL</var>, <var>waiterRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-removewaiters" title="RemoveWaiters ( WL, c )"><span class="secnum">25.4.3.10</span> RemoveWaiters ( <var>WL</var>, <var>c</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-suspendthisagent" title="SuspendThisAgent ( WL, waiterRecord )"><span class="secnum">25.4.3.11</span> SuspendThisAgent ( <var>WL</var>, <var>waiterRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-notifywaiter" title="NotifyWaiter ( WL, waiterRecord )"><span class="secnum">25.4.3.12</span> NotifyWaiter ( <var>WL</var>, <var>waiterRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-enqueueresolveinagentjob" title="EnqueueResolveInAgentJob ( agentSignifier, promiseCapability, resolution )"><span class="secnum">25.4.3.13</span> EnqueueResolveInAgentJob ( <var>agentSignifier</var>, <var>promiseCapability</var>, <var>resolution</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-dowait" title="DoWait ( mode, typedArray, index, value, timeout )"><span class="secnum">25.4.3.14</span> DoWait ( <var>mode</var>, <var>typedArray</var>, <var>index</var>, <var>value</var>, <var>timeout</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-enqueueatomicswaitasynctimeoutjob" title="EnqueueAtomicsWaitAsyncTimeoutJob ( WL, waiterRecord )"><span class="secnum">25.4.3.15</span> EnqueueAtomicsWaitAsyncTimeoutJob ( <var>WL</var>, <var>waiterRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomiccompareexchangeinsharedblock" title="AtomicCompareExchangeInSharedBlock ( block, byteIndexInBuffer, elementSize, expectedBytes, replacementBytes )"><span class="secnum">25.4.3.16</span> AtomicCompareExchangeInSharedBlock ( <var>block</var>, <var>byteIndexInBuffer</var>, <var>elementSize</var>, <var>expectedBytes</var>, <var>replacementBytes</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomicreadmodifywrite" title="AtomicReadModifyWrite ( typedArray, index, value, op )"><span class="secnum">25.4.3.17</span> AtomicReadModifyWrite ( <var>typedArray</var>, <var>index</var>, <var>value</var>, <var>op</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-bytelistbitwiseop" title="ByteListBitwiseOp ( op, xBytes, yBytes )"><span class="secnum">25.4.3.18</span> ByteListBitwiseOp ( <var>op</var>, <var>xBytes</var>, <var>yBytes</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-bytelistequal" title="ByteListEqual ( xBytes, yBytes )"><span class="secnum">25.4.3.19</span> ByteListEqual ( <var>xBytes</var>, <var>yBytes</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.add" title="Atomics.add ( typedArray, index, value )"><span class="secnum">25.4.4</span> Atomics.add ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.and" title="Atomics.and ( typedArray, index, value )"><span class="secnum">25.4.5</span> Atomics.and ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.compareexchange" title="Atomics.compareExchange ( typedArray, index, expectedValue, replacementValue )"><span class="secnum">25.4.6</span> Atomics.compareExchange ( <var>typedArray</var>, <var>index</var>, <var>expectedValue</var>, <var>replacementValue</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.exchange" title="Atomics.exchange ( typedArray, index, value )"><span class="secnum">25.4.7</span> Atomics.exchange ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.islockfree" title="Atomics.isLockFree ( size )"><span class="secnum">25.4.8</span> Atomics.isLockFree ( <var>size</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.load" title="Atomics.load ( typedArray, index )"><span class="secnum">25.4.9</span> Atomics.load ( <var>typedArray</var>, <var>index</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.or" title="Atomics.or ( typedArray, index, value )"><span class="secnum">25.4.10</span> Atomics.or ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.store" title="Atomics.store ( typedArray, index, value )"><span class="secnum">25.4.11</span> Atomics.store ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.sub" title="Atomics.sub ( typedArray, index, value )"><span class="secnum">25.4.12</span> Atomics.sub ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.wait" title="Atomics.wait ( typedArray, index, value, timeout )"><span class="secnum">25.4.13</span> Atomics.wait ( <var>typedArray</var>, <var>index</var>, <var>value</var>, <var>timeout</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.waitasync" title="Atomics.waitAsync ( typedArray, index, value, timeout )"><span class="secnum">25.4.14</span> Atomics.waitAsync ( <var>typedArray</var>, <var>index</var>, <var>value</var>, <var>timeout</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.notify" title="Atomics.notify ( typedArray, index, count )"><span class="secnum">25.4.15</span> Atomics.notify ( <var>typedArray</var>, <var>index</var>, <var>count</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics.xor" title="Atomics.xor ( typedArray, index, value )"><span class="secnum">25.4.16</span> Atomics.xor ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-atomics-%symbol.tostringtag%" title="Atomics [ %Symbol.toStringTag% ]"><span class="secnum">25.4.17</span> Atomics [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-json-object" title="The JSON Object"><span class="secnum">25.5</span> The JSON Object</a><ol class="toc"><li><span class="item-toggle">+</span><a href="structured-data.html#sec-json.parse" title="JSON.parse ( text [ , reviver ] )"><span class="secnum">25.5.1</span> JSON.parse ( <var>text</var> [ , <var>reviver</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-internalizejsonproperty" title="InternalizeJSONProperty ( holder, name, reviver )"><span class="secnum">25.5.1.1</span> InternalizeJSONProperty ( <var>holder</var>, <var>name</var>, <var>reviver</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="structured-data.html#sec-json.stringify" title="JSON.stringify ( value [ , replacer [ , space ] ] )"><span class="secnum">25.5.2</span> JSON.stringify ( <var>value</var> [ , <var>replacer</var> [ , <var>space</var> ] ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-json-serialization-record" title="JSON Serialization Record"><span class="secnum">25.5.2.1</span> JSON Serialization Record</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-serializejsonproperty" title="SerializeJSONProperty ( state, key, holder )"><span class="secnum">25.5.2.2</span> SerializeJSONProperty ( <var>state</var>, <var>key</var>, <var>holder</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-quotejsonstring" title="QuoteJSONString ( value )"><span class="secnum">25.5.2.3</span> QuoteJSONString ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-unicodeescape" title="UnicodeEscape ( C )"><span class="secnum">25.5.2.4</span> UnicodeEscape ( <var>C</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-serializejsonobject" title="SerializeJSONObject ( state, value )"><span class="secnum">25.5.2.5</span> SerializeJSONObject ( <var>state</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-serializejsonarray" title="SerializeJSONArray ( state, value )"><span class="secnum">25.5.2.6</span> SerializeJSONArray ( <var>state</var>, <var>value</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="structured-data.html#sec-json-%symbol.tostringtag%" title="JSON [ %Symbol.toStringTag% ]"><span class="secnum">25.5.3</span> JSON [ %Symbol.toStringTag% ]</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="managing-memory.html#sec-managing-memory" title="Managing Memory"><span class="secnum">26</span> Managing Memory</a><ol class="toc"><li><span class="item-toggle">+</span><a href="managing-memory.html#sec-weak-ref-objects" title="WeakRef Objects"><span class="secnum">26.1</span> WeakRef Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="managing-memory.html#sec-weak-ref-constructor" title="The WeakRef Constructor"><span class="secnum">26.1.1</span> The WeakRef Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-weak-ref-target" title="WeakRef ( target )"><span class="secnum">26.1.1.1</span> WeakRef ( <var>target</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="managing-memory.html#sec-properties-of-the-weak-ref-constructor" title="Properties of the WeakRef Constructor"><span class="secnum">26.1.2</span> Properties of the WeakRef Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-weak-ref.prototype" title="WeakRef.prototype"><span class="secnum">26.1.2.1</span> WeakRef.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="managing-memory.html#sec-properties-of-the-weak-ref-prototype-object" title="Properties of the WeakRef Prototype Object"><span class="secnum">26.1.3</span> Properties of the WeakRef Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-weak-ref.prototype.constructor" title="WeakRef.prototype.constructor"><span class="secnum">26.1.3.1</span> WeakRef.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-weak-ref.prototype.deref" title="WeakRef.prototype.deref ( )"><span class="secnum">26.1.3.2</span> WeakRef.prototype.deref ( )</a></li><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-weak-ref.prototype-%symbol.tostringtag%" title="WeakRef.prototype [ %Symbol.toStringTag% ]"><span class="secnum">26.1.3.3</span> WeakRef.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="managing-memory.html#sec-weakref-abstract-operations" title="WeakRef Abstract Operations"><span class="secnum">26.1.4</span> WeakRef Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-weakrefderef" title="WeakRefDeref ( weakRef )"><span class="secnum">26.1.4.1</span> WeakRefDeref ( <var>weakRef</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-properties-of-weak-ref-instances" title="Properties of WeakRef Instances"><span class="secnum">26.1.5</span> Properties of WeakRef Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="managing-memory.html#sec-finalization-registry-objects" title="FinalizationRegistry Objects"><span class="secnum">26.2</span> FinalizationRegistry Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="managing-memory.html#sec-finalization-registry-constructor" title="The FinalizationRegistry Constructor"><span class="secnum">26.2.1</span> The FinalizationRegistry Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-finalization-registry-cleanup-callback" title="FinalizationRegistry ( cleanupCallback )"><span class="secnum">26.2.1.1</span> FinalizationRegistry ( <var>cleanupCallback</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="managing-memory.html#sec-properties-of-the-finalization-registry-constructor" title="Properties of the FinalizationRegistry Constructor"><span class="secnum">26.2.2</span> Properties of the FinalizationRegistry Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-finalization-registry.prototype" title="FinalizationRegistry.prototype"><span class="secnum">26.2.2.1</span> FinalizationRegistry.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="managing-memory.html#sec-properties-of-the-finalization-registry-prototype-object" title="Properties of the FinalizationRegistry Prototype Object"><span class="secnum">26.2.3</span> Properties of the FinalizationRegistry Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-finalization-registry.prototype.constructor" title="FinalizationRegistry.prototype.constructor"><span class="secnum">26.2.3.1</span> FinalizationRegistry.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-finalization-registry.prototype.register" title="FinalizationRegistry.prototype.register ( target, heldValue [ , unregisterToken ] )"><span class="secnum">26.2.3.2</span> FinalizationRegistry.prototype.register ( <var>target</var>, <var>heldValue</var> [ , <var>unregisterToken</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-finalization-registry.prototype.unregister" title="FinalizationRegistry.prototype.unregister ( unregisterToken )"><span class="secnum">26.2.3.3</span> FinalizationRegistry.prototype.unregister ( <var>unregisterToken</var> )</a></li><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-finalization-registry.prototype-%symbol.tostringtag%" title="FinalizationRegistry.prototype [ %Symbol.toStringTag% ]"><span class="secnum">26.2.3.4</span> FinalizationRegistry.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="managing-memory.html#sec-properties-of-finalization-registry-instances" title="Properties of FinalizationRegistry Instances"><span class="secnum">26.2.4</span> Properties of FinalizationRegistry Instances</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-control-abstraction-objects" title="Control Abstraction Objects"><span class="secnum">27</span> Control Abstraction Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-iteration" title="Iteration"><span class="secnum">27.1</span> Iteration</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-common-iteration-interfaces" title="Common Iteration Interfaces"><span class="secnum">27.1.1</span> Common Iteration Interfaces</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterable-interface" title="The Iterable Interface"><span class="secnum">27.1.1.1</span> The Iterable Interface</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator-interface" title="The Iterator Interface"><span class="secnum">27.1.1.2</span> The Iterator Interface</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asynciterable-interface" title="The Async Iterable Interface"><span class="secnum">27.1.1.3</span> The Async Iterable Interface</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asynciterator-interface" title="The Async Iterator Interface"><span class="secnum">27.1.1.4</span> The Async Iterator Interface</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iteratorresult-interface" title="The IteratorResult Interface"><span class="secnum">27.1.1.5</span> The IteratorResult Interface</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-iterator-helper-objects" title="Iterator Helper Objects"><span class="secnum">27.1.2</span> Iterator Helper Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-%iteratorhelperprototype%-object" title="The %IteratorHelperPrototype% Object"><span class="secnum">27.1.2.1</span> The %IteratorHelperPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-%iteratorhelperprototype%.next" title="%IteratorHelperPrototype%.next ( )"><span class="secnum">27.1.2.1.1</span> %IteratorHelperPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-%iteratorhelperprototype%.return" title="%IteratorHelperPrototype%.return ( )"><span class="secnum">27.1.2.1.2</span> %IteratorHelperPrototype%.return ( )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-%iteratorhelperprototype%-%symbol.tostringtag%" title="%IteratorHelperPrototype% [ %Symbol.toStringTag% ]"><span class="secnum">27.1.2.1.3</span> %IteratorHelperPrototype% [ %Symbol.toStringTag% ]</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-iterator-objects" title="Iterator Objects"><span class="secnum">27.1.3</span> Iterator Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-iterator-constructor" title="The Iterator Constructor"><span class="secnum">27.1.3.1</span> The Iterator Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator" title="Iterator ( )"><span class="secnum">27.1.3.1.1</span> Iterator ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-properties-of-the-iterator-constructor" title="Properties of the Iterator Constructor"><span class="secnum">27.1.3.2</span> Properties of the Iterator Constructor</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-iterator.from" title="Iterator.from ( O )"><span class="secnum">27.1.3.2.1</span> Iterator.from ( <var>O</var> )</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-%wrapforvaliditeratorprototype%-object" title="The %WrapForValidIteratorPrototype% Object"><span class="secnum">27.1.3.2.1.1</span> The %WrapForValidIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-%wrapforvaliditeratorprototype%.next" title="%WrapForValidIteratorPrototype%.next ( )"><span class="secnum">27.1.3.2.1.1.1</span> %WrapForValidIteratorPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-%wrapforvaliditeratorprototype%.return" title="%WrapForValidIteratorPrototype%.return ( )"><span class="secnum">27.1.3.2.1.1.2</span> %WrapForValidIteratorPrototype%.return ( )</a></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype" title="Iterator.prototype"><span class="secnum">27.1.3.2.2</span> Iterator.prototype</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-%iterator.prototype%-object" title="The %Iterator.prototype% Object"><span class="secnum">27.1.4</span> The %Iterator.prototype% Object</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-iterator.prototype.constructor" title="Iterator.prototype.constructor"><span class="secnum">27.1.4.1</span> Iterator.prototype.constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-get-iterator.prototype.constructor" title="get Iterator.prototype.constructor"><span class="secnum">27.1.4.1.1</span> get Iterator.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-set-iterator.prototype.constructor" title="set Iterator.prototype.constructor"><span class="secnum">27.1.4.1.2</span> set Iterator.prototype.constructor</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.drop" title="Iterator.prototype.drop ( limit )"><span class="secnum">27.1.4.2</span> Iterator.prototype.drop ( <var>limit</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.every" title="Iterator.prototype.every ( predicate )"><span class="secnum">27.1.4.3</span> Iterator.prototype.every ( <var>predicate</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.filter" title="Iterator.prototype.filter ( predicate )"><span class="secnum">27.1.4.4</span> Iterator.prototype.filter ( <var>predicate</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.find" title="Iterator.prototype.find ( predicate )"><span class="secnum">27.1.4.5</span> Iterator.prototype.find ( <var>predicate</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.flatmap" title="Iterator.prototype.flatMap ( mapper )"><span class="secnum">27.1.4.6</span> Iterator.prototype.flatMap ( <var>mapper</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.foreach" title="Iterator.prototype.forEach ( procedure )"><span class="secnum">27.1.4.7</span> Iterator.prototype.forEach ( <var>procedure</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.map" title="Iterator.prototype.map ( mapper )"><span class="secnum">27.1.4.8</span> Iterator.prototype.map ( <var>mapper</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.reduce" title="Iterator.prototype.reduce ( reducer [ , initialValue ] )"><span class="secnum">27.1.4.9</span> Iterator.prototype.reduce ( <var>reducer</var> [ , <var>initialValue</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.some" title="Iterator.prototype.some ( predicate )"><span class="secnum">27.1.4.10</span> Iterator.prototype.some ( <var>predicate</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.take" title="Iterator.prototype.take ( limit )"><span class="secnum">27.1.4.11</span> Iterator.prototype.take ( <var>limit</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype.toarray" title="Iterator.prototype.toArray ( )"><span class="secnum">27.1.4.12</span> Iterator.prototype.toArray ( )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-iterator.prototype-%symbol.iterator%" title="Iterator.prototype [ %Symbol.iterator% ] ( )"><span class="secnum">27.1.4.13</span> Iterator.prototype [ %Symbol.iterator% ] ( )</a></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-iterator.prototype-%symbol.tostringtag%" title="Iterator.prototype [ %Symbol.toStringTag% ]"><span class="secnum">27.1.4.14</span> Iterator.prototype [ %Symbol.toStringTag% ]</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-get-iterator.prototype-%symbol.tostringtag%" title="get Iterator.prototype [ %Symbol.toStringTag% ]"><span class="secnum">27.1.4.14.1</span> get Iterator.prototype [ %Symbol.toStringTag% ]</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-set-iterator.prototype-%symbol.tostringtag%" title="set Iterator.prototype [ %Symbol.toStringTag% ]"><span class="secnum">27.1.4.14.2</span> set Iterator.prototype [ %Symbol.toStringTag% ]</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-asynciteratorprototype" title="The %AsyncIteratorPrototype% Object"><span class="secnum">27.1.5</span> The %AsyncIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-%asynciteratorprototype%-%symbol.asynciterator%" title="%AsyncIteratorPrototype% [ %Symbol.asyncIterator% ] ( )"><span class="secnum">27.1.5.1</span> %AsyncIteratorPrototype% [ %Symbol.asyncIterator% ] ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-async-from-sync-iterator-objects" title="Async-from-Sync Iterator Objects"><span class="secnum">27.1.6</span> Async-from-Sync Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-createasyncfromsynciterator" title="CreateAsyncFromSyncIterator ( syncIteratorRecord )"><span class="secnum">27.1.6.1</span> CreateAsyncFromSyncIterator ( <var>syncIteratorRecord</var> )</a></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-%asyncfromsynciteratorprototype%-object" title="The %AsyncFromSyncIteratorPrototype% Object"><span class="secnum">27.1.6.2</span> The %AsyncFromSyncIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-%asyncfromsynciteratorprototype%.next" title="%AsyncFromSyncIteratorPrototype%.next ( [ value ] )"><span class="secnum">27.1.6.2.1</span> %AsyncFromSyncIteratorPrototype%.next ( [ <var>value</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-%asyncfromsynciteratorprototype%.return" title="%AsyncFromSyncIteratorPrototype%.return ( [ value ] )"><span class="secnum">27.1.6.2.2</span> %AsyncFromSyncIteratorPrototype%.return ( [ <var>value</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-%asyncfromsynciteratorprototype%.throw" title="%AsyncFromSyncIteratorPrototype%.throw ( [ value ] )"><span class="secnum">27.1.6.2.3</span> %AsyncFromSyncIteratorPrototype%.throw ( [ <var>value</var> ] )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-properties-of-async-from-sync-iterator-instances" title="Properties of Async-from-Sync Iterator Instances"><span class="secnum">27.1.6.3</span> Properties of Async-from-Sync Iterator Instances</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncfromsynciteratorcontinuation" title="AsyncFromSyncIteratorContinuation ( result, promiseCapability )"><span class="secnum">27.1.6.4</span> AsyncFromSyncIteratorContinuation ( <var>result</var>, <var>promiseCapability</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promise-objects" title="Promise Objects"><span class="secnum">27.2</span> Promise Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promise-abstract-operations" title="Promise Abstract Operations"><span class="secnum">27.2.1</span> Promise Abstract Operations</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promisecapability-records" title="PromiseCapability Records"><span class="secnum">27.2.1.1</span> PromiseCapability Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-ifabruptrejectpromise" title="IfAbruptRejectPromise ( value, capability )"><span class="secnum">27.2.1.1.1</span> IfAbruptRejectPromise ( <var>value</var>, <var>capability</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promisereaction-records" title="PromiseReaction Records"><span class="secnum">27.2.1.2</span> PromiseReaction Records</a></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-createresolvingfunctions" title="CreateResolvingFunctions ( promise )"><span class="secnum">27.2.1.3</span> CreateResolvingFunctions ( <var>promise</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise-reject-functions" title="Promise Reject Functions"><span class="secnum">27.2.1.3.1</span> Promise Reject Functions</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise-resolve-functions" title="Promise Resolve Functions"><span class="secnum">27.2.1.3.2</span> Promise Resolve Functions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-fulfillpromise" title="FulfillPromise ( promise, value )"><span class="secnum">27.2.1.4</span> FulfillPromise ( <var>promise</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-newpromisecapability" title="NewPromiseCapability ( C )"><span class="secnum">27.2.1.5</span> NewPromiseCapability ( <var>C</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-ispromise" title="IsPromise ( x )"><span class="secnum">27.2.1.6</span> IsPromise ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-rejectpromise" title="RejectPromise ( promise, reason )"><span class="secnum">27.2.1.7</span> RejectPromise ( <var>promise</var>, <var>reason</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-triggerpromisereactions" title="TriggerPromiseReactions ( reactions, argument )"><span class="secnum">27.2.1.8</span> TriggerPromiseReactions ( <var>reactions</var>, <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-host-promise-rejection-tracker" title="HostPromiseRejectionTracker ( promise, operation )"><span class="secnum">27.2.1.9</span> HostPromiseRejectionTracker ( <var>promise</var>, <var>operation</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promise-jobs" title="Promise Jobs"><span class="secnum">27.2.2</span> Promise Jobs</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-newpromisereactionjob" title="NewPromiseReactionJob ( reaction, argument )"><span class="secnum">27.2.2.1</span> NewPromiseReactionJob ( <var>reaction</var>, <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-newpromiseresolvethenablejob" title="NewPromiseResolveThenableJob ( promiseToResolve, thenable, then )"><span class="secnum">27.2.2.2</span> NewPromiseResolveThenableJob ( <var>promiseToResolve</var>, <var>thenable</var>, <var>then</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promise-constructor" title="The Promise Constructor"><span class="secnum">27.2.3</span> The Promise Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise-executor" title="Promise ( executor )"><span class="secnum">27.2.3.1</span> Promise ( <var>executor</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-properties-of-the-promise-constructor" title="Properties of the Promise Constructor"><span class="secnum">27.2.4</span> Properties of the Promise Constructor</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promise.all" title="Promise.all ( iterable )"><span class="secnum">27.2.4.1</span> Promise.all ( <var>iterable</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-getpromiseresolve" title="GetPromiseResolve ( promiseConstructor )"><span class="secnum">27.2.4.1.1</span> GetPromiseResolve ( <var>promiseConstructor</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-performpromiseall" title="PerformPromiseAll ( iteratorRecord, constructor, resultCapability, promiseResolve )"><span class="secnum">27.2.4.1.2</span> PerformPromiseAll ( <var>iteratorRecord</var>, <var>constructor</var>, <var>resultCapability</var>, <var>promiseResolve</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.all-resolve-element-functions" title="Promise.all Resolve Element Functions"><span class="secnum">27.2.4.1.3</span> <code>Promise.all</code> Resolve Element Functions</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promise.allsettled" title="Promise.allSettled ( iterable )"><span class="secnum">27.2.4.2</span> Promise.allSettled ( <var>iterable</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-performpromiseallsettled" title="PerformPromiseAllSettled ( iteratorRecord, constructor, resultCapability, promiseResolve )"><span class="secnum">27.2.4.2.1</span> PerformPromiseAllSettled ( <var>iteratorRecord</var>, <var>constructor</var>, <var>resultCapability</var>, <var>promiseResolve</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.allsettled-resolve-element-functions" title="Promise.allSettled Resolve Element Functions"><span class="secnum">27.2.4.2.2</span> <code>Promise.allSettled</code> Resolve Element Functions</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.allsettled-reject-element-functions" title="Promise.allSettled Reject Element Functions"><span class="secnum">27.2.4.2.3</span> <code>Promise.allSettled</code> Reject Element Functions</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promise.any" title="Promise.any ( iterable )"><span class="secnum">27.2.4.3</span> Promise.any ( <var>iterable</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-performpromiseany" title="PerformPromiseAny ( iteratorRecord, constructor, resultCapability, promiseResolve )"><span class="secnum">27.2.4.3.1</span> PerformPromiseAny ( <var>iteratorRecord</var>, <var>constructor</var>, <var>resultCapability</var>, <var>promiseResolve</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.any-reject-element-functions" title="Promise.any Reject Element Functions"><span class="secnum">27.2.4.3.2</span> <code>Promise.any</code> Reject Element Functions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.prototype" title="Promise.prototype"><span class="secnum">27.2.4.4</span> Promise.prototype</a></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promise.race" title="Promise.race ( iterable )"><span class="secnum">27.2.4.5</span> Promise.race ( <var>iterable</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-performpromiserace" title="PerformPromiseRace ( iteratorRecord, constructor, resultCapability, promiseResolve )"><span class="secnum">27.2.4.5.1</span> PerformPromiseRace ( <var>iteratorRecord</var>, <var>constructor</var>, <var>resultCapability</var>, <var>promiseResolve</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.reject" title="Promise.reject ( r )"><span class="secnum">27.2.4.6</span> Promise.reject ( <var>r</var> )</a></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promise.resolve" title="Promise.resolve ( x )"><span class="secnum">27.2.4.7</span> Promise.resolve ( <var>x</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise-resolve" title="PromiseResolve ( C, x )"><span class="secnum">27.2.4.7.1</span> PromiseResolve ( <var>C</var>, <var>x</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.try" title="Promise.try ( callback, ...args )"><span class="secnum">27.2.4.8</span> Promise.try ( <var>callback</var>, ...<var>args</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.withResolvers" title="Promise.withResolvers ( )"><span class="secnum">27.2.4.9</span> Promise.withResolvers ( )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-get-promise-%symbol.species%" title="get Promise [ %Symbol.species% ]"><span class="secnum">27.2.4.10</span> get Promise [ %Symbol.species% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-properties-of-the-promise-prototype-object" title="Properties of the Promise Prototype Object"><span class="secnum">27.2.5</span> Properties of the Promise Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.prototype.catch" title="Promise.prototype.catch ( onRejected )"><span class="secnum">27.2.5.1</span> Promise.prototype.catch ( <var>onRejected</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.prototype.constructor" title="Promise.prototype.constructor"><span class="secnum">27.2.5.2</span> Promise.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.prototype.finally" title="Promise.prototype.finally ( onFinally )"><span class="secnum">27.2.5.3</span> Promise.prototype.finally ( <var>onFinally</var> )</a></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-promise.prototype.then" title="Promise.prototype.then ( onFulfilled, onRejected )"><span class="secnum">27.2.5.4</span> Promise.prototype.then ( <var>onFulfilled</var>, <var>onRejected</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-performpromisethen" title="PerformPromiseThen ( promise, onFulfilled, onRejected [ , resultCapability ] )"><span class="secnum">27.2.5.4.1</span> PerformPromiseThen ( <var>promise</var>, <var>onFulfilled</var>, <var>onRejected</var> [ , <var>resultCapability</var> ] )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-promise.prototype-%symbol.tostringtag%" title="Promise.prototype [ %Symbol.toStringTag% ]"><span class="secnum">27.2.5.5</span> Promise.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-properties-of-promise-instances" title="Properties of Promise Instances"><span class="secnum">27.2.6</span> Properties of Promise Instances</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-generatorfunction-objects" title="GeneratorFunction Objects"><span class="secnum">27.3</span> GeneratorFunction Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-generatorfunction-constructor" title="The GeneratorFunction Constructor"><span class="secnum">27.3.1</span> The GeneratorFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorfunction" title="GeneratorFunction ( ...parameterArgs, bodyArg )"><span class="secnum">27.3.1.1</span> GeneratorFunction ( ...<var>parameterArgs</var>, <var>bodyArg</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-properties-of-the-generatorfunction-constructor" title="Properties of the GeneratorFunction Constructor"><span class="secnum">27.3.2</span> Properties of the GeneratorFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorfunction.prototype" title="GeneratorFunction.prototype"><span class="secnum">27.3.2.1</span> GeneratorFunction.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-properties-of-the-generatorfunction-prototype-object" title="Properties of the GeneratorFunction Prototype Object"><span class="secnum">27.3.3</span> Properties of the GeneratorFunction Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorfunction.prototype.constructor" title="GeneratorFunction.prototype.constructor"><span class="secnum">27.3.3.1</span> GeneratorFunction.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorfunction.prototype.prototype" title="GeneratorFunction.prototype.prototype"><span class="secnum">27.3.3.2</span> GeneratorFunction.prototype.prototype</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorfunction.prototype-%symbol.tostringtag%" title="GeneratorFunction.prototype [ %Symbol.toStringTag% ]"><span class="secnum">27.3.3.3</span> GeneratorFunction.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-generatorfunction-instances" title="GeneratorFunction Instances"><span class="secnum">27.3.4</span> GeneratorFunction Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorfunction-instances-length" title="length"><span class="secnum">27.3.4.1</span> length</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorfunction-instances-name" title="name"><span class="secnum">27.3.4.2</span> name</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorfunction-instances-prototype" title="prototype"><span class="secnum">27.3.4.3</span> prototype</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction-objects" title="AsyncGeneratorFunction Objects"><span class="secnum">27.4</span> AsyncGeneratorFunction Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction-constructor" title="The AsyncGeneratorFunction Constructor"><span class="secnum">27.4.1</span> The AsyncGeneratorFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction" title="AsyncGeneratorFunction ( ...parameterArgs, bodyArg )"><span class="secnum">27.4.1.1</span> AsyncGeneratorFunction ( ...<var>parameterArgs</var>, <var>bodyArg</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-properties-of-asyncgeneratorfunction" title="Properties of the AsyncGeneratorFunction Constructor"><span class="secnum">27.4.2</span> Properties of the AsyncGeneratorFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction-prototype" title="AsyncGeneratorFunction.prototype"><span class="secnum">27.4.2.1</span> AsyncGeneratorFunction.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-properties-of-asyncgeneratorfunction-prototype" title="Properties of the AsyncGeneratorFunction Prototype Object"><span class="secnum">27.4.3</span> Properties of the AsyncGeneratorFunction Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction-prototype-constructor" title="AsyncGeneratorFunction.prototype.constructor"><span class="secnum">27.4.3.1</span> AsyncGeneratorFunction.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction-prototype-prototype" title="AsyncGeneratorFunction.prototype.prototype"><span class="secnum">27.4.3.2</span> AsyncGeneratorFunction.prototype.prototype</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction-prototype-%symbol.tostringtag%" title="AsyncGeneratorFunction.prototype [ %Symbol.toStringTag% ]"><span class="secnum">27.4.3.3</span> AsyncGeneratorFunction.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction-instances" title="AsyncGeneratorFunction Instances"><span class="secnum">27.4.4</span> AsyncGeneratorFunction Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction-instance-length" title="length"><span class="secnum">27.4.4.1</span> length</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction-instance-name" title="name"><span class="secnum">27.4.4.2</span> name</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorfunction-instance-prototype" title="prototype"><span class="secnum">27.4.4.3</span> prototype</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-generator-objects" title="Generator Objects"><span class="secnum">27.5</span> Generator Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-properties-of-generator-prototype" title="The %GeneratorPrototype% Object"><span class="secnum">27.5.1</span> The %GeneratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generator.prototype.constructor" title="%GeneratorPrototype%.constructor"><span class="secnum">27.5.1.1</span> %GeneratorPrototype%.constructor</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generator.prototype.next" title="%GeneratorPrototype%.next ( value )"><span class="secnum">27.5.1.2</span> %GeneratorPrototype%.next ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generator.prototype.return" title="%GeneratorPrototype%.return ( value )"><span class="secnum">27.5.1.3</span> %GeneratorPrototype%.return ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generator.prototype.throw" title="%GeneratorPrototype%.throw ( exception )"><span class="secnum">27.5.1.4</span> %GeneratorPrototype%.throw ( <var>exception</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generator.prototype-%symbol.tostringtag%" title="%GeneratorPrototype% [ %Symbol.toStringTag% ]"><span class="secnum">27.5.1.5</span> %GeneratorPrototype% [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-properties-of-generator-instances" title="Properties of Generator Instances"><span class="secnum">27.5.2</span> Properties of Generator Instances</a></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-generator-abstract-operations" title="Generator Abstract Operations"><span class="secnum">27.5.3</span> Generator Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorstart" title="GeneratorStart ( generator, generatorBody )"><span class="secnum">27.5.3.1</span> GeneratorStart ( <var>generator</var>, <var>generatorBody</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorvalidate" title="GeneratorValidate ( generator, generatorBrand )"><span class="secnum">27.5.3.2</span> GeneratorValidate ( <var>generator</var>, <var>generatorBrand</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorresume" title="GeneratorResume ( generator, value, generatorBrand )"><span class="secnum">27.5.3.3</span> GeneratorResume ( <var>generator</var>, <var>value</var>, <var>generatorBrand</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatorresumeabrupt" title="GeneratorResumeAbrupt ( generator, abruptCompletion, generatorBrand )"><span class="secnum">27.5.3.4</span> GeneratorResumeAbrupt ( <var>generator</var>, <var>abruptCompletion</var>, <var>generatorBrand</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-getgeneratorkind" title="GetGeneratorKind ( )"><span class="secnum">27.5.3.5</span> GetGeneratorKind ( )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-generatoryield" title="GeneratorYield ( iteratorResult )"><span class="secnum">27.5.3.6</span> GeneratorYield ( <var>iteratorResult</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-yield" title="Yield ( value )"><span class="secnum">27.5.3.7</span> Yield ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-createiteratorfromclosure" title="CreateIteratorFromClosure ( closure, generatorBrand, generatorPrototype [ , extraSlots ] )"><span class="secnum">27.5.3.8</span> CreateIteratorFromClosure ( <var>closure</var>, <var>generatorBrand</var>, <var>generatorPrototype</var> [ , <var>extraSlots</var> ] )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-asyncgenerator-objects" title="AsyncGenerator Objects"><span class="secnum">27.6</span> AsyncGenerator Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-properties-of-asyncgenerator-prototype" title="The %AsyncGeneratorPrototype% Object"><span class="secnum">27.6.1</span> The %AsyncGeneratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgenerator-prototype-constructor" title="%AsyncGeneratorPrototype%.constructor"><span class="secnum">27.6.1.1</span> %AsyncGeneratorPrototype%.constructor</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgenerator-prototype-next" title="%AsyncGeneratorPrototype%.next ( value )"><span class="secnum">27.6.1.2</span> %AsyncGeneratorPrototype%.next ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgenerator-prototype-return" title="%AsyncGeneratorPrototype%.return ( value )"><span class="secnum">27.6.1.3</span> %AsyncGeneratorPrototype%.return ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgenerator-prototype-throw" title="%AsyncGeneratorPrototype%.throw ( exception )"><span class="secnum">27.6.1.4</span> %AsyncGeneratorPrototype%.throw ( <var>exception</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgenerator-prototype-%symbol.tostringtag%" title="%AsyncGeneratorPrototype% [ %Symbol.toStringTag% ]"><span class="secnum">27.6.1.5</span> %AsyncGeneratorPrototype% [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-properties-of-asyncgenerator-intances" title="Properties of AsyncGenerator Instances"><span class="secnum">27.6.2</span> Properties of AsyncGenerator Instances</a></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-asyncgenerator-abstract-operations" title="AsyncGenerator Abstract Operations"><span class="secnum">27.6.3</span> AsyncGenerator Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorrequest-records" title="AsyncGeneratorRequest Records"><span class="secnum">27.6.3.1</span> AsyncGeneratorRequest Records</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorstart" title="AsyncGeneratorStart ( generator, generatorBody )"><span class="secnum">27.6.3.2</span> AsyncGeneratorStart ( <var>generator</var>, <var>generatorBody</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorvalidate" title="AsyncGeneratorValidate ( generator, generatorBrand )"><span class="secnum">27.6.3.3</span> AsyncGeneratorValidate ( <var>generator</var>, <var>generatorBrand</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorenqueue" title="AsyncGeneratorEnqueue ( generator, completion, promiseCapability )"><span class="secnum">27.6.3.4</span> AsyncGeneratorEnqueue ( <var>generator</var>, <var>completion</var>, <var>promiseCapability</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorcompletestep" title="AsyncGeneratorCompleteStep ( generator, completion, done [ , realm ] )"><span class="secnum">27.6.3.5</span> AsyncGeneratorCompleteStep ( <var>generator</var>, <var>completion</var>, <var>done</var> [ , <var>realm</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorresume" title="AsyncGeneratorResume ( generator, completion )"><span class="secnum">27.6.3.6</span> AsyncGeneratorResume ( <var>generator</var>, <var>completion</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorunwrapyieldresumption" title="AsyncGeneratorUnwrapYieldResumption ( resumptionValue )"><span class="secnum">27.6.3.7</span> AsyncGeneratorUnwrapYieldResumption ( <var>resumptionValue</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratoryield" title="AsyncGeneratorYield ( value )"><span class="secnum">27.6.3.8</span> AsyncGeneratorYield ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratorawaitreturn" title="AsyncGeneratorAwaitReturn ( generator )"><span class="secnum">27.6.3.9</span> AsyncGeneratorAwaitReturn ( <var>generator</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncgeneratordrainqueue" title="AsyncGeneratorDrainQueue ( generator )"><span class="secnum">27.6.3.10</span> AsyncGeneratorDrainQueue ( <var>generator</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-createasynciteratorfromclosure" title="CreateAsyncIteratorFromClosure ( closure, generatorBrand, generatorPrototype )"><span class="secnum">27.6.3.11</span> CreateAsyncIteratorFromClosure ( <var>closure</var>, <var>generatorBrand</var>, <var>generatorPrototype</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-async-function-objects" title="AsyncFunction Objects"><span class="secnum">27.7</span> AsyncFunction Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-async-function-constructor" title="The AsyncFunction Constructor"><span class="secnum">27.7.1</span> The AsyncFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-async-function-constructor-arguments" title="AsyncFunction ( ...parameterArgs, bodyArg )"><span class="secnum">27.7.1.1</span> AsyncFunction ( ...<var>parameterArgs</var>, <var>bodyArg</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-async-function-constructor-properties" title="Properties of the AsyncFunction Constructor"><span class="secnum">27.7.2</span> Properties of the AsyncFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-async-function-constructor-prototype" title="AsyncFunction.prototype"><span class="secnum">27.7.2.1</span> AsyncFunction.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-async-function-prototype-properties" title="Properties of the AsyncFunction Prototype Object"><span class="secnum">27.7.3</span> Properties of the AsyncFunction Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-async-function-prototype-properties-constructor" title="AsyncFunction.prototype.constructor"><span class="secnum">27.7.3.1</span> AsyncFunction.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-async-function-prototype-%symbol.tostringtag%" title="AsyncFunction.prototype [ %Symbol.toStringTag% ]"><span class="secnum">27.7.3.2</span> AsyncFunction.prototype [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-async-function-instances" title="AsyncFunction Instances"><span class="secnum">27.7.4</span> AsyncFunction Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-async-function-instances-length" title="length"><span class="secnum">27.7.4.1</span> length</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-async-function-instances-name" title="name"><span class="secnum">27.7.4.2</span> name</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-async-functions-abstract-operations" title="Async Functions Abstract Operations"><span class="secnum">27.7.5</span> Async Functions Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-async-functions-abstract-operations-async-function-start" title="AsyncFunctionStart ( promiseCapability, asyncFunctionBody )"><span class="secnum">27.7.5.1</span> AsyncFunctionStart ( <var>promiseCapability</var>, <var>asyncFunctionBody</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#sec-asyncblockstart" title="AsyncBlockStart ( promiseCapability, asyncBody, asyncContext )"><span class="secnum">27.7.5.2</span> AsyncBlockStart ( <var>promiseCapability</var>, <var>asyncBody</var>, <var>asyncContext</var> )</a></li><li><span class="item-toggle-none"></span><a href="control-abstraction-objects.html#await" title="Await ( value )"><span class="secnum">27.7.5.3</span> Await ( <var>value</var> )</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="reflection.html#sec-reflection" title="Reflection"><span class="secnum">28</span> Reflection</a><ol class="toc"><li><span class="item-toggle">+</span><a href="reflection.html#sec-reflect-object" title="The Reflect Object"><span class="secnum">28.1</span> The Reflect Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.apply" title="Reflect.apply ( target, thisArgument, argumentsList )"><span class="secnum">28.1.1</span> Reflect.apply ( <var>target</var>, <var>thisArgument</var>, <var>argumentsList</var> )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.construct" title="Reflect.construct ( target, argumentsList [ , newTarget ] )"><span class="secnum">28.1.2</span> Reflect.construct ( <var>target</var>, <var>argumentsList</var> [ , <var>newTarget</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.defineproperty" title="Reflect.defineProperty ( target, propertyKey, attributes )"><span class="secnum">28.1.3</span> Reflect.defineProperty ( <var>target</var>, <var>propertyKey</var>, <var>attributes</var> )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.deleteproperty" title="Reflect.deleteProperty ( target, propertyKey )"><span class="secnum">28.1.4</span> Reflect.deleteProperty ( <var>target</var>, <var>propertyKey</var> )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.get" title="Reflect.get ( target, propertyKey [ , receiver ] )"><span class="secnum">28.1.5</span> Reflect.get ( <var>target</var>, <var>propertyKey</var> [ , <var>receiver</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.getownpropertydescriptor" title="Reflect.getOwnPropertyDescriptor ( target, propertyKey )"><span class="secnum">28.1.6</span> Reflect.getOwnPropertyDescriptor ( <var>target</var>, <var>propertyKey</var> )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.getprototypeof" title="Reflect.getPrototypeOf ( target )"><span class="secnum">28.1.7</span> Reflect.getPrototypeOf ( <var>target</var> )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.has" title="Reflect.has ( target, propertyKey )"><span class="secnum">28.1.8</span> Reflect.has ( <var>target</var>, <var>propertyKey</var> )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.isextensible" title="Reflect.isExtensible ( target )"><span class="secnum">28.1.9</span> Reflect.isExtensible ( <var>target</var> )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.ownkeys" title="Reflect.ownKeys ( target )"><span class="secnum">28.1.10</span> Reflect.ownKeys ( <var>target</var> )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.preventextensions" title="Reflect.preventExtensions ( target )"><span class="secnum">28.1.11</span> Reflect.preventExtensions ( <var>target</var> )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.set" title="Reflect.set ( target, propertyKey, V [ , receiver ] )"><span class="secnum">28.1.12</span> Reflect.set ( <var>target</var>, <var>propertyKey</var>, <var>V</var> [ , <var>receiver</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect.setprototypeof" title="Reflect.setPrototypeOf ( target, proto )"><span class="secnum">28.1.13</span> Reflect.setPrototypeOf ( <var>target</var>, <var>proto</var> )</a></li><li><span class="item-toggle-none"></span><a href="reflection.html#sec-reflect-%symbol.tostringtag%" title="Reflect [ %Symbol.toStringTag% ]"><span class="secnum">28.1.14</span> Reflect [ %Symbol.toStringTag% ]</a></li></ol></li><li><span class="item-toggle">+</span><a href="reflection.html#sec-proxy-objects" title="Proxy Objects"><span class="secnum">28.2</span> Proxy Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="reflection.html#sec-proxy-constructor" title="The Proxy Constructor"><span class="secnum">28.2.1</span> The Proxy Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="reflection.html#sec-proxy-target-handler" title="Proxy ( target, handler )"><span class="secnum">28.2.1.1</span> Proxy ( <var>target</var>, <var>handler</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="reflection.html#sec-properties-of-the-proxy-constructor" title="Properties of the Proxy Constructor"><span class="secnum">28.2.2</span> Properties of the Proxy Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="reflection.html#sec-proxy.revocable" title="Proxy.revocable ( target, handler )"><span class="secnum">28.2.2.1</span> Proxy.revocable ( <var>target</var>, <var>handler</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="reflection.html#sec-module-namespace-objects" title="Module Namespace Objects"><span class="secnum">28.3</span> Module Namespace Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="reflection.html#sec-%symbol.tostringtag%" title="%Symbol.toStringTag%"><span class="secnum">28.3.1</span> %Symbol.toStringTag%</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="memory-model.html#sec-memory-model" title="Memory Model"><span class="secnum">29</span> Memory Model</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-memory-model-fundamentals" title="Memory Model Fundamentals"><span class="secnum">29.1</span> Memory Model Fundamentals</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-agent-event-records" title="Agent Events Records"><span class="secnum">29.2</span> Agent Events Records</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-chosen-value-records" title="Chosen Value Records"><span class="secnum">29.3</span> Chosen Value Records</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-candidate-executions" title="Candidate Executions"><span class="secnum">29.4</span> Candidate Executions</a></li><li><span class="item-toggle">+</span><a href="memory-model.html#sec-abstract-operations-for-the-memory-model" title="Abstract Operations for the Memory Model"><span class="secnum">29.5</span> Abstract Operations for the Memory Model</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-event-set" title="EventSet ( execution )"><span class="secnum">29.5.1</span> EventSet ( <var>execution</var> )</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-sharedatablockeventset" title="SharedDataBlockEventSet ( execution )"><span class="secnum">29.5.2</span> SharedDataBlockEventSet ( <var>execution</var> )</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-hosteventset" title="HostEventSet ( execution )"><span class="secnum">29.5.3</span> HostEventSet ( <var>execution</var> )</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-composewriteeventbytes" title="ComposeWriteEventBytes ( execution, byteIndex, Ws )"><span class="secnum">29.5.4</span> ComposeWriteEventBytes ( <var>execution</var>, <var>byteIndex</var>, <var>Ws</var> )</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-valueofreadevent" title="ValueOfReadEvent ( execution, R )"><span class="secnum">29.5.5</span> ValueOfReadEvent ( <var>execution</var>, <var>R</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="memory-model.html#sec-relations-of-candidate-executions" title="Relations of Candidate Executions"><span class="secnum">29.6</span> Relations of Candidate Executions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-agent-order" title="is-agent-order-before"><span class="secnum">29.6.1</span> is-agent-order-before</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-reads-bytes-from" title="reads-bytes-from"><span class="secnum">29.6.2</span> reads-bytes-from</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-reads-from" title="reads-from"><span class="secnum">29.6.3</span> reads-from</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-host-synchronizes-with" title="host-synchronizes-with"><span class="secnum">29.6.4</span> host-synchronizes-with</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-synchronizes-with" title="synchronizes-with"><span class="secnum">29.6.5</span> synchronizes-with</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-happens-before" title="happens-before"><span class="secnum">29.6.6</span> happens-before</a></li></ol></li><li><span class="item-toggle">+</span><a href="memory-model.html#sec-properties-of-valid-executions" title="Properties of Valid Executions"><span class="secnum">29.7</span> Properties of Valid Executions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-valid-chosen-reads" title="Valid Chosen Reads"><span class="secnum">29.7.1</span> Valid Chosen Reads</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-coherent-reads" title="Coherent Reads"><span class="secnum">29.7.2</span> Coherent Reads</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-tear-free-aligned-reads" title="Tear Free Reads"><span class="secnum">29.7.3</span> Tear Free Reads</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-memory-order" title="Sequentially Consistent Atomics"><span class="secnum">29.7.4</span> Sequentially Consistent Atomics</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-valid-executions" title="Valid Executions"><span class="secnum">29.7.5</span> Valid Executions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-races" title="Races"><span class="secnum">29.8</span> Races</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-data-races" title="Data Races"><span class="secnum">29.9</span> Data Races</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-data-race-freedom" title="Data Race Freedom"><span class="secnum">29.10</span> Data Race Freedom</a></li><li><span class="item-toggle-none"></span><a href="memory-model.html#sec-shared-memory-guidelines" title="Shared Memory Guidelines"><span class="secnum">29.11</span> Shared Memory Guidelines</a></li></ol></li><li><span class="item-toggle">+</span><a href="grammar-summary.html#sec-grammar-summary" title="Grammar Summary"><span class="secnum">A</span> Grammar Summary</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="grammar-summary.html#sec-lexical-grammar" title="Lexical Grammar"><span class="secnum">A.1</span> Lexical Grammar</a></li><li><span class="item-toggle-none"></span><a href="grammar-summary.html#sec-expressions" title="Expressions"><span class="secnum">A.2</span> Expressions</a></li><li><span class="item-toggle-none"></span><a href="grammar-summary.html#sec-statements" title="Statements"><span class="secnum">A.3</span> Statements</a></li><li><span class="item-toggle-none"></span><a href="grammar-summary.html#sec-functions-and-classes" title="Functions and Classes"><span class="secnum">A.4</span> Functions and Classes</a></li><li><span class="item-toggle-none"></span><a href="grammar-summary.html#sec-scripts-and-modules" title="Scripts and Modules"><span class="secnum">A.5</span> Scripts and Modules</a></li><li><span class="item-toggle-none"></span><a href="grammar-summary.html#sec-number-conversions" title="Number Conversions"><span class="secnum">A.6</span> Number Conversions</a></li><li><span class="item-toggle-none"></span><a href="grammar-summary.html#sec-time-zone-offset-string-format" title="Time Zone Offset String Format"><span class="secnum">A.7</span> Time Zone Offset String Format</a></li><li><span class="item-toggle-none"></span><a href="grammar-summary.html#sec-regular-expressions" title="Regular Expressions"><span class="secnum">A.8</span> Regular Expressions</a></li></ol></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-additional-ecmascript-features-for-web-browsers" title="Additional ECMAScript Features for Web Browsers"><span class="secnum">B</span> Additional ECMAScript Features for Web Browsers</a><ol class="toc"><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-additional-syntax" title="Additional Syntax"><span class="secnum">B.1</span> Additional Syntax</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-html-like-comments" title="HTML-like Comments"><span class="secnum">B.1.1</span> HTML-like Comments</a></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-regular-expressions-patterns" title="Regular Expressions Patterns"><span class="secnum">B.1.2</span> Regular Expressions Patterns</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-patterns-static-semantics-early-errors-annexb" title="Static Semantics: Early Errors"><span class="secnum">B.1.2.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-countleftcapturingparens-annexb" title="Static Semantics: CountLeftCapturingParensWithin and CountLeftCapturingParensBefore"><span class="secnum">B.1.2.2</span> SS: CountLeftCapturingParensWithin and CountLeftCapturingParensBefore</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-patterns-static-semantics-is-character-class-annexb" title="Static Semantics: IsCharacterClass"><span class="secnum">B.1.2.3</span> SS: IsCharacterClass</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-patterns-static-semantics-character-value-annexb" title="Static Semantics: CharacterValue"><span class="secnum">B.1.2.4</span> SS: CharacterValue</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-compilesubpattern-annexb" title="Runtime Semantics: CompileSubpattern"><span class="secnum">B.1.2.5</span> RS: CompileSubpattern</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-compileassertion-annexb" title="Runtime Semantics: CompileAssertion"><span class="secnum">B.1.2.6</span> RS: CompileAssertion</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-compileatom-annexb" title="Runtime Semantics: CompileAtom"><span class="secnum">B.1.2.7</span> RS: CompileAtom</a></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-compiletocharset-annexb" title="Runtime Semantics: CompileToCharSet"><span class="secnum">B.1.2.8</span> RS: CompileToCharSet</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-runtime-semantics-characterrangeorunion-abstract-operation" title="CharacterRangeOrUnion ( rer, A, B )"><span class="secnum">B.1.2.8.1</span> CharacterRangeOrUnion ( <var>rer</var>, <var>A</var>, <var>B</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-parsepattern-annexb" title="Static Semantics: ParsePattern ( patternText, u, v )"><span class="secnum">B.1.2.9</span> SS: ParsePattern ( <var>patternText</var>, <var>u</var>, <var>v</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-additional-built-in-properties" title="Additional Built-in Properties"><span class="secnum">B.2</span> Additional Built-in Properties</a><ol class="toc"><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-additional-properties-of-the-global-object" title="Additional Properties of the Global Object"><span class="secnum">B.2.1</span> Additional Properties of the Global Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-escape-string" title="escape ( string )"><span class="secnum">B.2.1.1</span> escape ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-unescape-string" title="unescape ( string )"><span class="secnum">B.2.1.2</span> unescape ( <var>string</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-additional-properties-of-the-string.prototype-object" title="Additional Properties of the String.prototype Object"><span class="secnum">B.2.2</span> Additional Properties of the String.prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.substr" title="String.prototype.substr ( start, length )"><span class="secnum">B.2.2.1</span> String.prototype.substr ( <var>start</var>, <var>length</var> )</a></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.anchor" title="String.prototype.anchor ( name )"><span class="secnum">B.2.2.2</span> String.prototype.anchor ( <var>name</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-createhtml" title="CreateHTML ( string, tag, attribute, value )"><span class="secnum">B.2.2.2.1</span> CreateHTML ( <var>string</var>, <var>tag</var>, <var>attribute</var>, <var>value</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.big" title="String.prototype.big ( )"><span class="secnum">B.2.2.3</span> String.prototype.big ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.blink" title="String.prototype.blink ( )"><span class="secnum">B.2.2.4</span> String.prototype.blink ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.bold" title="String.prototype.bold ( )"><span class="secnum">B.2.2.5</span> String.prototype.bold ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.fixed" title="String.prototype.fixed ( )"><span class="secnum">B.2.2.6</span> String.prototype.fixed ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.fontcolor" title="String.prototype.fontcolor ( colour )"><span class="secnum">B.2.2.7</span> String.prototype.fontcolor ( <var>colour</var> )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.fontsize" title="String.prototype.fontsize ( size )"><span class="secnum">B.2.2.8</span> String.prototype.fontsize ( <var>size</var> )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.italics" title="String.prototype.italics ( )"><span class="secnum">B.2.2.9</span> String.prototype.italics ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.link" title="String.prototype.link ( url )"><span class="secnum">B.2.2.10</span> String.prototype.link ( <var>url</var> )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.small" title="String.prototype.small ( )"><span class="secnum">B.2.2.11</span> String.prototype.small ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.strike" title="String.prototype.strike ( )"><span class="secnum">B.2.2.12</span> String.prototype.strike ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.sub" title="String.prototype.sub ( )"><span class="secnum">B.2.2.13</span> String.prototype.sub ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-string.prototype.sup" title="String.prototype.sup ( )"><span class="secnum">B.2.2.14</span> String.prototype.sup ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#String.prototype.trimleft" title="String.prototype.trimLeft ( )"><span class="secnum">B.2.2.15</span> String.prototype.trimLeft ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#String.prototype.trimright" title="String.prototype.trimRight ( )"><span class="secnum">B.2.2.16</span> String.prototype.trimRight ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-additional-properties-of-the-date.prototype-object" title="Additional Properties of the Date.prototype Object"><span class="secnum">B.2.3</span> Additional Properties of the Date.prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-date.prototype.getyear" title="Date.prototype.getYear ( )"><span class="secnum">B.2.3.1</span> Date.prototype.getYear ( )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-date.prototype.setyear" title="Date.prototype.setYear ( year )"><span class="secnum">B.2.3.2</span> Date.prototype.setYear ( <var>year</var> )</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-date.prototype.togmtstring" title="Date.prototype.toGMTString ( )"><span class="secnum">B.2.3.3</span> Date.prototype.toGMTString ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-additional-properties-of-the-regexp.prototype-object" title="Additional Properties of the RegExp.prototype Object"><span class="secnum">B.2.4</span> Additional Properties of the RegExp.prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-regexp.prototype.compile" title="RegExp.prototype.compile ( pattern, flags )"><span class="secnum">B.2.4.1</span> RegExp.prototype.compile ( <var>pattern</var>, <var>flags</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-other-additional-features" title="Other Additional Features"><span class="secnum">B.3</span> Other Additional Features</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-labelled-function-declarations" title="Labelled Function Declarations"><span class="secnum">B.3.1</span> Labelled Function Declarations</a></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-block-level-function-declarations-web-legacy-compatibility-semantics" title="Block-Level Function Declarations Web Legacy Compatibility Semantics"><span class="secnum">B.3.2</span> Block-Level Function Declarations Web Legacy Compatibility Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-web-compat-functiondeclarationinstantiation" title="Changes to FunctionDeclarationInstantiation"><span class="secnum">B.3.2.1</span> Changes to FunctionDeclarationInstantiation</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-web-compat-globaldeclarationinstantiation" title="Changes to GlobalDeclarationInstantiation"><span class="secnum">B.3.2.2</span> Changes to GlobalDeclarationInstantiation</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-web-compat-evaldeclarationinstantiation" title="Changes to EvalDeclarationInstantiation"><span class="secnum">B.3.2.3</span> Changes to EvalDeclarationInstantiation</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-block-duplicates-allowed-static-semantics" title="Changes to Block Static Semantics: Early Errors"><span class="secnum">B.3.2.4</span> Changes to Block SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-switch-duplicates-allowed-static-semantics" title="Changes to switch Statement Static Semantics: Early Errors"><span class="secnum">B.3.2.5</span> Changes to <code>switch</code> Statement SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-web-compat-blockdeclarationinstantiation" title="Changes to BlockDeclarationInstantiation"><span class="secnum">B.3.2.6</span> Changes to BlockDeclarationInstantiation</a></li></ol></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-functiondeclarations-in-ifstatement-statement-clauses" title="FunctionDeclarations in IfStatement Statement Clauses"><span class="secnum">B.3.3</span> FunctionDeclarations in IfStatement Statement Clauses</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-variablestatements-in-catch-blocks" title="VariableStatements in Catch Blocks"><span class="secnum">B.3.4</span> VariableStatements in Catch Blocks</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-initializers-in-forin-statement-heads" title="Initializers in ForIn Statement Heads"><span class="secnum">B.3.5</span> Initializers in ForIn Statement Heads</a></li><li><span class="item-toggle">+</span><a href="additional-ecmascript-features-for-web-browsers.html#sec-IsHTMLDDA-internal-slot" title="The [[IsHTMLDDA]] Internal Slot"><span class="secnum">B.3.6</span> The <var class="field">[[IsHTMLDDA]]</var> Internal Slot</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-IsHTMLDDA-internal-slot-to-boolean" title="Changes to ToBoolean"><span class="secnum">B.3.6.1</span> Changes to ToBoolean</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-IsHTMLDDA-internal-slot-aec" title="Changes to IsLooselyEqual"><span class="secnum">B.3.6.2</span> Changes to IsLooselyEqual</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-IsHTMLDDA-internal-slot-typeof" title="Changes to the typeof Operator"><span class="secnum">B.3.6.3</span> Changes to the <code>typeof</code> Operator</a></li></ol></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-web-compat-host-make-job-callback" title="Non-default behaviour in HostMakeJobCallback"><span class="secnum">B.3.7</span> Non-default behaviour in HostMakeJobCallback</a></li><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-web-compat-host-ensure-can-add-private-field" title="Non-default behaviour in HostEnsureCanAddPrivateElement"><span class="secnum">B.3.8</span> Non-default behaviour in HostEnsureCanAddPrivateElement</a></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="strict-mode-of-ecmascript.html#sec-strict-mode-of-ecmascript" title="The Strict Mode of ECMAScript"><span class="secnum">C</span> The Strict Mode of ECMAScript</a></li><li><span class="item-toggle">+</span><a href="host-layering-points.html#sec-host-layering-points" title="Host Layering Points"><span class="secnum">D</span> Host Layering Points</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="host-layering-points.html#sec-host-hooks-summary" title="Host Hooks"><span class="secnum">D.1</span> Host Hooks</a></li><li><span class="item-toggle-none"></span><a href="host-layering-points.html#sec-host-defined-fields-summary" title="Host-defined Fields"><span class="secnum">D.2</span> Host-defined Fields</a></li><li><span class="item-toggle-none"></span><a href="host-layering-points.html#sec-host-defined-objects-summary" title="Host-defined Objects"><span class="secnum">D.3</span> Host-defined Objects</a></li><li><span class="item-toggle-none"></span><a href="host-layering-points.html#sec-host-running-jobs" title="Running Jobs"><span class="secnum">D.4</span> Running Jobs</a></li><li><span class="item-toggle-none"></span><a href="host-layering-points.html#sec-host-internal-methods-of-exotic-objects" title="Internal Methods of Exotic Objects"><span class="secnum">D.5</span> Internal Methods of Exotic Objects</a></li><li><span class="item-toggle-none"></span><a href="host-layering-points.html#sec-host-built-in-objects-and-methods" title="Built-in Objects and Methods"><span class="secnum">D.6</span> Built-in Objects and Methods</a></li></ol></li><li><span class="item-toggle-none"></span><a href="corrections-and-clarifications-in-ecmascript-2015-with-possible-compatibility-impact.html#sec-corrections-and-clarifications-in-ecmascript-2015-with-possible-compatibility-impact" title="Corrections and Clarifications in ECMAScript 2015 with Possible Compatibility Impact"><span class="secnum">E</span> Corrections and Clarifications in ECMAScript 2015 with Possible Compatibility Impact</a></li><li><span class="item-toggle-none"></span><a href="additions-and-changes-that-introduce-incompatibilities-with-prior-editions.html#sec-additions-and-changes-that-introduce-incompatibilities-with-prior-editions" title="Additions and Changes That Introduce Incompatibilities with Prior Editions"><span class="secnum">F</span> Additions and Changes That Introduce Incompatibilities with Prior Editions</a></li><li><span class="item-toggle-none"></span><a href="colophon.html#sec-colophon" title="Colophon"><span class="secnum">G</span> Colophon</a></li><li><span class="item-toggle-none"></span><a href="bibliography.html#sec-bibliography" title="Bibliography"><span class="secnum">H</span> Bibliography</a></li><li><span class="item-toggle-none"></span><a href="copyright-and-software-license.html#sec-copyright-and-software-license" title="Copyright & Software License"><span class="secnum">I</span> Copyright & Software License</a></li></ol></div></div> <div id="menu-spacer" class="menu-spacer"></div> <div id="menu-toggle"><svg xmlns="http://www.w3.org/2000/svg" style="width:100%; height:100%; stroke:currentColor" viewBox="0 0 120 120" width="54" height="54"> <title>Menu</title> <path stroke-width="10" stroke-linecap="round" d="M30,60 h60 M30,30 m0,5 h60 M30,90 m0,-5 h60"></path> </svg></div> <div id="shortcuts-help"> <ul> <li><span>Toggle shortcuts help</span><code>?</code></li> <li><span>Toggle "can call user code" annotations</span><code>u</code></li> <li><span>Navigate to/from multipage</span><code>m</code></li> <li><span>Jump to search box</span><code>/</code></li> <li><span>Toggle pinning of the current clause</span><code>p</code></li> <li><span>Jump to <i>n</i>th pin</span><code>1-9</code></li> </ul></div><div id='spec-container'><emu-clause id="sec-ecmascript-language-statements-and-declarations"> <h1><span class="secnum">14</span> ECMAScript Language: Statements and Declarations</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="Statement" params="Yield, Await, Return" id="prod-Statement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ktzsppzs" id="prod-c1cDILr5"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20252"><a href="ecmascript-language-statements-and-declarations.html#prod-BlockStatement">BlockStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="xumq1cs6" id="prod-PfH00D1w"> <emu-nt params="?Yield, ?Await" id="_ref_20253"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="cziqu-45" id="prod-YqiTL09y"> <emu-nt id="_ref_20254"><a href="ecmascript-language-statements-and-declarations.html#prod-EmptyStatement">EmptyStatement</a></emu-nt> </emu-rhs> <emu-rhs a="vt4s4xgg" id="prod-WCz7iwtm"> <emu-nt params="?Yield, ?Await" id="_ref_20255"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="vpvr9yr3" id="prod-jug3e433"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20256"><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="3kwmhgcn"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20257"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakableStatement">BreakableStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="klxmhdlm" id="prod-Ro8XgDsH"> <emu-nt params="?Yield, ?Await" id="_ref_20258"><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="vtt-myod" id="prod-Rrel7YUC"> <emu-nt params="?Yield, ?Await" id="_ref_20259"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="1sriw0nt" constraints="+Return" id="prod-twdIgE_o"><emu-constraints>[+Return]</emu-constraints> <emu-nt params="?Yield, ?Await" id="_ref_20260"><a href="ecmascript-language-statements-and-declarations.html#prod-ReturnStatement">ReturnStatement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="_gejjak9" id="prod-xepAqppR"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20261"><a href="ecmascript-language-statements-and-declarations.html#prod-WithStatement">WithStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="90_gq6ig"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20262"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="ukgcnqlt" id="prod-GHPcIp4f"> <emu-nt params="?Yield, ?Await" id="_ref_20263"><a href="ecmascript-language-statements-and-declarations.html#prod-ThrowStatement">ThrowStatement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="z7s8kfe1" id="prod-HB_2xdti"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20264"><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="iseu28qi" id="prod-bDeNjo3k"> <emu-nt id="_ref_20265"><a href="ecmascript-language-statements-and-declarations.html#prod-DebuggerStatement">DebuggerStatement</a></emu-nt> </emu-rhs> </emu-production> <emu-production name="Declaration" params="Yield, Await" id="prod-Declaration"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="i6hr6ytb"> <emu-nt params="?Yield, ?Await, ~Default" id="_ref_20266"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a><emu-mods><emu-params>[?Yield, ?Await, ~Default]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="jfshu5d-" id="prod-o4HYrPz3"> <emu-nt params="?Yield, ?Await, ~Default" id="_ref_20267"><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a><emu-mods><emu-params>[?Yield, ?Await, ~Default]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="dl5lsw3w" id="prod-9H9FGeT7"> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20268"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="HoistableDeclaration" params="Yield, Await, Default" id="prod-HoistableDeclaration"> <emu-nt params="Yield, Await, Default"><a href="ecmascript-language-statements-and-declarations.html#prod-HoistableDeclaration">HoistableDeclaration</a><emu-mods><emu-params>[Yield, Await, Default]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="pm1iqgpt" id="prod-xo77HsL9"> <emu-nt params="?Yield, ?Await, ?Default" id="_ref_20269"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a><emu-mods><emu-params>[?Yield, ?Await, ?Default]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="rhqaxmir" id="prod-dpslEYBS"> <emu-nt params="?Yield, ?Await, ?Default" id="_ref_20270"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a><emu-mods><emu-params>[?Yield, ?Await, ?Default]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="3nfjki-g" id="prod-InkDjQLb"> <emu-nt params="?Yield, ?Await, ?Default" id="_ref_20271"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a><emu-mods><emu-params>[?Yield, ?Await, ?Default]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="e-_qp6dd" id="prod-OBGQy9cZ"> <emu-nt params="?Yield, ?Await, ?Default" id="_ref_20272"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a><emu-mods><emu-params>[?Yield, ?Await, ?Default]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="BreakableStatement" params="Yield, Await, Return" id="prod-BreakableStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakableStatement">BreakableStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="olmcy7ih" id="prod-IZrgrSFg"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20273"><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="uzjzv-di" id="prod-r35GfF0W"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20274"><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-statement-semantics"> <h1><span class="secnum">14.1</span> Statement Semantics</h1> <emu-clause id="sec-statement-semantics-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.1.1</span> Runtime Semantics: Evaluation</h1> <emu-grammar><emu-production name="HoistableDeclaration"> <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-F2xRdnbO"> <emu-nt id="_ref_20275"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt> </emu-rhs> <emu-rhs a="xi-jap6o" id="prod-19_kIcSj"> <emu-nt id="_ref_20276"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt> </emu-rhs> <emu-rhs a="n353p_mm" id="prod-AdaKcE7P"> <emu-nt id="_ref_20277"><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-const>empty</emu-const>.</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="-nqupnlb" id="prod-80Y3L4PZ"><emu-nt id="_ref_20278"><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-xref aoid="Evaluation" id="_ref_6679"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20279"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>.</li></ol></emu-alg> <emu-grammar><emu-production name="BreakableStatement"> <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-FFjrmEWz"> <emu-nt id="_ref_20280"><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt> </emu-rhs> <emu-rhs a="nuio-xfp" id="prod-cXJGjZtb"> <emu-nt id="_ref_20281"><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>newLabelSet</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6680"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return ? <emu-xref aoid="LabelledEvaluation" id="_ref_6681"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-labelledevaluation" class="e-user-code">LabelledEvaluation</a></emu-xref> of this <emu-nt id="_ref_20282"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakableStatement">BreakableStatement</a></emu-nt> with argument <var>newLabelSet</var>.</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-block"> <h1><span class="secnum">14.2</span> Block</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="BlockStatement" params="Yield, Await, Return" id="prod-BlockStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-BlockStatement">BlockStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="zwpfwt4j"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20283"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="Block" params="Yield, Await, Return" id="prod-Block"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uij9rcu7" id="prod-30nvN6ck"> <emu-t>{</emu-t> <emu-nt params="?Yield, ?Await, ?Return" optional="" id="_ref_20284"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>}</emu-t> </emu-rhs> </emu-production> <emu-production name="StatementList" params="Yield, Await, Return" id="prod-StatementList"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="owubwn_s"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20285"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="21clqs0p" id="prod--OFVjnjw"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20286"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20287"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="StatementListItem" params="Yield, Await, Return" id="prod-StatementListItem"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="septp5sa" id="prod-GHY4Vd3_"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20288"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="mtktetk8" id="prod-yYByJL6Z"> <emu-nt params="?Yield, ?Await" id="_ref_20289"><a href="ecmascript-language-statements-and-declarations.html#prod-Declaration">Declaration</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-block-static-semantics-early-errors"> <h1><span class="secnum">14.2.1</span> Static Semantics: Early Errors</h1> <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="z4ljp0ar"> <emu-t>{</emu-t> <emu-nt id="_ref_20290"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-t>}</emu-t> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_6682"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_20291"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> contains any duplicate entries. </li> <li> It is a Syntax Error if any element of the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_6683"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_20292"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> also occurs in the <emu-xref aoid="VarDeclaredNames" id="_ref_6684"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_20293"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>. </li> </ul> </emu-clause> <emu-clause id="sec-block-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.2.2</span> Runtime Semantics: Evaluation</h1> <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-GN03td2O"> <emu-t>{</emu-t> <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="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="z4ljp0ar" id="prod-CUMWT9xI"> <emu-t>{</emu-t> <emu-nt id="_ref_20294"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-t>}</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>oldEnv</var> be the <emu-xref href="#running-execution-context" id="_ref_6685"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li><li>Let <var>blockEnv</var> be <emu-xref aoid="NewDeclarativeEnvironment" id="_ref_6686"><a href="executable-code-and-execution-contexts.html#sec-newdeclarativeenvironment">NewDeclarativeEnvironment</a></emu-xref>(<var>oldEnv</var>).</li><li>Perform <emu-xref aoid="BlockDeclarationInstantiation" id="_ref_6687"><a href="ecmascript-language-statements-and-declarations.html#sec-blockdeclarationinstantiation">BlockDeclarationInstantiation</a></emu-xref>(<emu-nt id="_ref_20295"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>, <var>blockEnv</var>).</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_6688"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>blockEnv</var>.</li><li>Let <var>blockValue</var> be <emu-xref aoid="Completion" id="_ref_6689"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6690"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20296"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>).</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_6691"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>oldEnv</var>.</li><li>Return ? <var>blockValue</var>.</li></ol></emu-alg> <emu-note><span class="note">Note 1</span><div class="note-contents"> <p>No matter how control leaves the <emu-nt id="_ref_20297"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> the LexicalEnvironment is always restored to its former state.</p> </div></emu-note> <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-qY9k7-Mq"> <emu-nt id="_ref_20298"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> <emu-nt id="_ref_20299"><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>sl</var> be ? <emu-xref aoid="Evaluation" id="_ref_6692"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20300"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li><li>Let <var>s</var> be <emu-xref aoid="Completion" id="_ref_6693"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6694"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20301"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementListItem">StatementListItem</a></emu-nt>).</li><li>Return ? <emu-xref aoid="UpdateEmpty" id="_ref_6695"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>s</var>, <var>sl</var>).</li></ol></emu-alg> <emu-note><span class="note">Note 2</span><div class="note-contents"> <p>The value of a <emu-nt id="_ref_20302"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> is the value of the last value-producing item in the <emu-nt id="_ref_20303"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>. For example, the following calls to the <code>eval</code> function all return the value 1:</p> <pre><code class="javascript hljs"><span class="hljs-built_in">eval</span>(<span class="hljs-string">"1;;;;;"</span>) <span class="hljs-built_in">eval</span>(<span class="hljs-string">"1;{}"</span>) <span class="hljs-built_in">eval</span>(<span class="hljs-string">"1;var a;"</span>)</code></pre> </div></emu-note> </emu-clause> <emu-clause id="sec-blockdeclarationinstantiation" type="abstract operation" aoid="BlockDeclarationInstantiation"> <h1><span class="secnum">14.2.3</span> BlockDeclarationInstantiation ( <var>code</var>, <var>env</var> )</h1> <p>The abstract operation BlockDeclarationInstantiation takes arguments <var>code</var> (a <emu-xref href="#sec-syntactic-grammar" id="_ref_6696"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>) and <var>env</var> (a <emu-xref href="#sec-declarative-environment-records" id="_ref_6697"><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records">Declarative Environment Record</a></emu-xref>) and returns <emu-const>unused</emu-const>. <var>code</var> is the <emu-xref href="#sec-syntactic-grammar" id="_ref_6698"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref> corresponding to the body of the block. <var>env</var> is the <emu-xref href="#sec-environment-records" id="_ref_6699"><a href="executable-code-and-execution-contexts.html#sec-environment-records">Environment Record</a></emu-xref> in which bindings are to be created.</p> <emu-note><span class="note">Note</span><div class="note-contents"> <p>When a <emu-nt id="_ref_20304"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> or <emu-nt id="_ref_20305"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> is evaluated a new <emu-xref href="#sec-declarative-environment-records" id="_ref_6700"><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records">Declarative Environment Record</a></emu-xref> is created and bindings for each block scoped variable, constant, function, or class declared in the block are instantiated in the <emu-xref href="#sec-environment-records" id="_ref_6701"><a href="executable-code-and-execution-contexts.html#sec-environment-records">Environment Record</a></emu-xref>.</p> </div></emu-note> <p>It performs the following steps when called:</p> <!-- WARNING: If you add, remove, rename, or repurpose any variable names within this algorithm, you may need to update #sec-web-compat-blockdeclarationinstantiation accordingly. --> <emu-alg><ol><li>Let <var>declarations</var> be the <emu-xref aoid="LexicallyScopedDeclarations" id="_ref_6702"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallyscopeddeclarations">LexicallyScopedDeclarations</a></emu-xref> of <var>code</var>.</li><li>Let <var>privateEnv</var> be the <emu-xref href="#running-execution-context" id="_ref_6703"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s PrivateEnvironment.</li><li>For each element <var>d</var> of <var>declarations</var>, do<ol><li>For each element <var>dn</var> of the <emu-xref aoid="BoundNames" id="_ref_6704"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <var>d</var>, do<ol><li>If <emu-xref aoid="IsConstantDeclaration" id="_ref_6705"><a href="syntax-directed-operations.html#sec-static-semantics-isconstantdeclaration">IsConstantDeclaration</a></emu-xref> of <var>d</var> is <emu-val>true</emu-val>, then<ol><li>Perform ! <var>env</var>.CreateImmutableBinding(<var>dn</var>, <emu-val>true</emu-val>).</li></ol></li><li>Else,<ol><li id="step-blockdeclarationinstantiation-createmutablebinding">Perform ! <var>env</var>.CreateMutableBinding(<var>dn</var>, <emu-val>false</emu-val>). NOTE: This step is replaced in section <emu-xref href="#sec-web-compat-blockdeclarationinstantiation" id="_ref_439"><a href="additional-ecmascript-features-for-web-browsers.html#sec-web-compat-blockdeclarationinstantiation">B.3.2.6</a></emu-xref>.</li></ol></li></ol></li><li>If <var>d</var> is either a <emu-nt id="_ref_20306"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>, a <emu-nt id="_ref_20307"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt>, an <emu-nt id="_ref_20308"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt>, or an <emu-nt id="_ref_20309"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt>, then<ol><li>Let <var>fn</var> be the sole element of the <emu-xref aoid="BoundNames" id="_ref_6706"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <var>d</var>.</li><li>Let <var>fo</var> be <emu-xref aoid="InstantiateFunctionObject" id="_ref_6707"><a href="syntax-directed-operations.html#sec-runtime-semantics-instantiatefunctionobject">InstantiateFunctionObject</a></emu-xref> of <var>d</var> with arguments <var>env</var> and <var>privateEnv</var>.</li><li id="step-blockdeclarationinstantiation-initializebinding">Perform ! <var>env</var>.InitializeBinding(<var>fn</var>, <var>fo</var>). NOTE: This step is replaced in section <emu-xref href="#sec-web-compat-blockdeclarationinstantiation" id="_ref_440"><a href="additional-ecmascript-features-for-web-browsers.html#sec-web-compat-blockdeclarationinstantiation">B.3.2.6</a></emu-xref>.</li></ol></li></ol></li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-declarations-and-the-variable-statement"> <h1><span class="secnum">14.3</span> Declarations and the Variable Statement</h1> <emu-clause id="sec-let-and-const-declarations"> <h1><span class="secnum">14.3.1</span> Let and Const Declarations</h1> <emu-note><span class="note">Note</span><div class="note-contents"> <p><code>let</code> and <code>const</code> declarations define variables that are scoped to the <emu-xref href="#running-execution-context" id="_ref_6708"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment. The variables are created when their containing <emu-xref href="#sec-environment-records" id="_ref_6709"><a href="executable-code-and-execution-contexts.html#sec-environment-records">Environment Record</a></emu-xref> is instantiated but may not be accessed in any way until the variable's <emu-nt id="_ref_20310"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> is evaluated. A variable defined by a <emu-nt id="_ref_20311"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> with an <emu-nt id="_ref_20312"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> is assigned the value of its <emu-nt id="_ref_20313"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>'s <emu-nt id="_ref_20314"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> when the <emu-nt id="_ref_20315"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> is evaluated, not when the variable is created. If a <emu-nt id="_ref_20316"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> in a <code>let</code> declaration does not have an <emu-nt id="_ref_20317"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> the variable is assigned the value <emu-val>undefined</emu-val> when the <emu-nt id="_ref_20318"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> is evaluated.</p> </div></emu-note> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="LexicalDeclaration" params="In, Yield, Await" id="prod-LexicalDeclaration"> <emu-nt params="In, Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a><emu-mods><emu-params>[In, Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jsmbgalx" id="prod-10DUWE8d"> <emu-nt id="_ref_20319"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt> <emu-nt params="?In, ?Yield, ?Await" id="_ref_20320"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>;</emu-t> </emu-rhs> </emu-production> <emu-production name="LetOrConst" id="prod-LetOrConst"> <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-7oqY0VPN"> <emu-t>let</emu-t> </emu-rhs> <emu-rhs a="nim_d4hb" id="prod-rTRI6GVQ"> <emu-t>const</emu-t> </emu-rhs> </emu-production> <emu-production name="BindingList" params="In, Yield, Await" id="prod-BindingList"> <emu-nt params="In, Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a><emu-mods><emu-params>[In, Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ned6hkwu"> <emu-nt params="?In, ?Yield, ?Await" id="_ref_20321"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="fdx7nvya" id="prod-FYQ2Ly4e"> <emu-nt params="?In, ?Yield, ?Await" id="_ref_20322"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>,</emu-t> <emu-nt params="?In, ?Yield, ?Await" id="_ref_20323"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="LexicalBinding" params="In, Yield, Await" id="prod-LexicalBinding"> <emu-nt params="In, Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a><emu-mods><emu-params>[In, Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jut8etgz" id="prod-l3Hg2UJ0"> <emu-nt params="?Yield, ?Await" id="_ref_20324"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-nt params="?In, ?Yield, ?Await" optional="" id="_ref_20325"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="sdckvxer" id="prod-FppJpMK8"> <emu-nt params="?Yield, ?Await" id="_ref_20326"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-nt params="?In, ?Yield, ?Await" id="_ref_20327"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-let-and-const-declarations-static-semantics-early-errors"> <h1><span class="secnum">14.3.1.1</span> Static Semantics: Early Errors</h1> <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"> <emu-nt id="_ref_20328"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt> <emu-nt id="_ref_20329"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if the <emu-xref aoid="BoundNames" id="_ref_6710"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20330"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt> contains <emu-val>"let"</emu-val>. </li> <li> It is a Syntax Error if the <emu-xref aoid="BoundNames" id="_ref_6711"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20331"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt> contains any duplicate entries. </li> </ul> <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"> <emu-nt id="_ref_20332"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-nt optional="" id="_ref_20333"><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> <ul> <li> It is a Syntax Error if <emu-nt id="_ref_20334"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> is not present and <emu-xref aoid="IsConstantDeclaration" id="_ref_6712"><a href="syntax-directed-operations.html#sec-static-semantics-isconstantdeclaration">IsConstantDeclaration</a></emu-xref> of the <emu-nt id="_ref_20335"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt> containing this <emu-nt id="_ref_20336"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> is <emu-val>true</emu-val>. </li> </ul> </emu-clause> <emu-clause id="sec-let-and-const-declarations-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.3.1.2</span> Runtime Semantics: Evaluation</h1> <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-dx4AGe8K"> <emu-nt id="_ref_20337"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt> <emu-nt id="_ref_20338"><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>Perform ? <emu-xref aoid="Evaluation" id="_ref_6713"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20339"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt>.</li><li>Return <emu-const>empty</emu-const>.</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-EyFo2V-D"> <emu-nt id="_ref_20340"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt> <emu-t>,</emu-t> <emu-nt id="_ref_20341"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Perform ? <emu-xref aoid="Evaluation" id="_ref_6714"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20342"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingList">BindingList</a></emu-nt>.</li><li>Return ? <emu-xref aoid="Evaluation" id="_ref_6715"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20343"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</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="uolyom43" id="prod-mW_TWZBz"><emu-nt id="_ref_20344"><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_6716"><a href="executable-code-and-execution-contexts.html#sec-resolvebinding">ResolveBinding</a></emu-xref>(<emu-xref aoid="StringValue" id="_ref_6717"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_20345"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>).</li><li>Perform ! <emu-xref aoid="InitializeReferencedBinding" id="_ref_6718"><a href="ecmascript-data-types-and-values.html#sec-initializereferencedbinding">InitializeReferencedBinding</a></emu-xref>(<var>lhs</var>, <emu-val>undefined</emu-val>).</li><li>Return <emu-const>empty</emu-const>.</li></ol></emu-alg> <emu-note><span class="note">Note</span><div class="note-contents"> <p>A <emu-xref href="#sec-static-semantic-rules" id="_ref_6719"><a href="notational-conventions.html#sec-static-semantic-rules">static semantics</a></emu-xref> rule ensures that this form of <emu-nt id="_ref_20346"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> never occurs in a <code>const</code> declaration.</p> </div></emu-note> <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="ib7lg1vi" id="prod-gOqjOKq_"> <emu-nt id="_ref_20347"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-nt id="_ref_20348"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>bindingId</var> be the <emu-xref aoid="StringValue" id="_ref_6720"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_20349"><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_6721"><a href="executable-code-and-execution-contexts.html#sec-resolvebinding">ResolveBinding</a></emu-xref>(<var>bindingId</var>).</li><li>If <emu-xref aoid="IsAnonymousFunctionDefinition" id="_ref_6722"><a href="syntax-directed-operations.html#sec-isanonymousfunctiondefinition">IsAnonymousFunctionDefinition</a></emu-xref>(<emu-nt id="_ref_20350"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>) is <emu-val>true</emu-val>, then<ol><li>Let <var>value</var> be ? <emu-xref aoid="NamedEvaluation" id="_ref_6723"><a href="syntax-directed-operations.html#sec-runtime-semantics-namedevaluation" class="e-user-code">NamedEvaluation</a></emu-xref> of <emu-nt id="_ref_20351"><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>rhs</var> be ? <emu-xref aoid="Evaluation" id="_ref_6724"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20352"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>.</li><li>Let <var>value</var> be ? <emu-xref aoid="GetValue" id="_ref_6725"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>rhs</var>).</li></ol></li><li>Perform ! <emu-xref aoid="InitializeReferencedBinding" id="_ref_6726"><a href="ecmascript-data-types-and-values.html#sec-initializereferencedbinding">InitializeReferencedBinding</a></emu-xref>(<var>lhs</var>, <var>value</var>).</li><li>Return <emu-const>empty</emu-const>.</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-HJPtX-Q7"> <emu-nt id="_ref_20353"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt> <emu-nt id="_ref_20354"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>rhs</var> be ? <emu-xref aoid="Evaluation" id="_ref_6727"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20355"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>.</li><li>Let <var>value</var> be ? <emu-xref aoid="GetValue" id="_ref_6728"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>rhs</var>).</li><li>Let <var>env</var> be the <emu-xref href="#running-execution-context" id="_ref_6729"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li><li>Return ? <emu-xref aoid="BindingInitialization" id="_ref_6730"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <emu-nt id="_ref_20356"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt> with arguments <var>value</var> and <var>env</var>.</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-variable-statement"> <h1><span class="secnum">14.3.2</span> Variable Statement</h1> <emu-note><span class="note">Note</span><div class="note-contents"> <p>A <code>var</code> statement declares variables that are scoped to the <emu-xref href="#running-execution-context" id="_ref_6731"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s VariableEnvironment. Var variables are created when their containing <emu-xref href="#sec-environment-records" id="_ref_6732"><a href="executable-code-and-execution-contexts.html#sec-environment-records">Environment Record</a></emu-xref> is instantiated and are initialized to <emu-val>undefined</emu-val> when created. Within the scope of any VariableEnvironment a common <emu-nt id="_ref_20357"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> may appear in more than one <emu-nt id="_ref_20358"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> but those declarations collectively define only one variable. A variable defined by a <emu-nt id="_ref_20359"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> with an <emu-nt id="_ref_20360"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> is assigned the value of its <emu-nt id="_ref_20361"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>'s <emu-nt id="_ref_20362"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> when the <emu-nt id="_ref_20363"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> is executed, not when the variable is created.</p> </div></emu-note> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="VariableStatement" params="Yield, Await" id="prod-VariableStatement"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tbwjaldb" id="prod-03w8p9mr"> <emu-t>var</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20364"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>;</emu-t> </emu-rhs> </emu-production> <emu-production name="VariableDeclarationList" params="In, Yield, Await" id="prod-VariableDeclarationList"> <emu-nt params="In, Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a><emu-mods><emu-params>[In, Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ps4sw3ys" id="prod-bXRN6REu"> <emu-nt params="?In, ?Yield, ?Await" id="_ref_20365"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="xsh3skws" id="prod-kqbqpKlK"> <emu-nt params="?In, ?Yield, ?Await" id="_ref_20366"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>,</emu-t> <emu-nt params="?In, ?Yield, ?Await" id="_ref_20367"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="VariableDeclaration" params="In, Yield, Await" id="prod-VariableDeclaration"> <emu-nt params="In, Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a><emu-mods><emu-params>[In, Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jut8etgz" id="prod-IeHby7A3"> <emu-nt params="?Yield, ?Await" id="_ref_20368"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-nt params="?In, ?Yield, ?Await" optional="" id="_ref_20369"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="sdckvxer" id="prod-MhsdViui"> <emu-nt params="?Yield, ?Await" id="_ref_20370"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-nt params="?In, ?Yield, ?Await" id="_ref_20371"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-params>[?In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-variable-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.3.2.1</span> Runtime Semantics: Evaluation</h1> <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-3b9-3HdT"> <emu-t>var</emu-t> <emu-nt id="_ref_20372"><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>Perform ? <emu-xref aoid="Evaluation" id="_ref_6733"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20373"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>.</li><li>Return <emu-const>empty</emu-const>.</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-mRNvbUb_"> <emu-nt id="_ref_20374"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt> <emu-t>,</emu-t> <emu-nt id="_ref_20375"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Perform ? <emu-xref aoid="Evaluation" id="_ref_6734"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20376"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>.</li><li>Return ? <emu-xref aoid="Evaluation" id="_ref_6735"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20377"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</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="uolyom43" id="prod-DloKhDSp"><emu-nt id="_ref_20378"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</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="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="ib7lg1vi" id="prod-luUzRvcA"> <emu-nt id="_ref_20379"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-nt id="_ref_20380"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>bindingId</var> be the <emu-xref aoid="StringValue" id="_ref_6736"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_20381"><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_6737"><a href="executable-code-and-execution-contexts.html#sec-resolvebinding" class="e-user-code">ResolveBinding</a></emu-xref>(<var>bindingId</var>).</li><li>If <emu-xref aoid="IsAnonymousFunctionDefinition" id="_ref_6738"><a href="syntax-directed-operations.html#sec-isanonymousfunctiondefinition">IsAnonymousFunctionDefinition</a></emu-xref>(<emu-nt id="_ref_20382"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>) is <emu-val>true</emu-val>, then<ol><li>Let <var>value</var> be ? <emu-xref aoid="NamedEvaluation" id="_ref_6739"><a href="syntax-directed-operations.html#sec-runtime-semantics-namedevaluation" class="e-user-code">NamedEvaluation</a></emu-xref> of <emu-nt id="_ref_20383"><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>rhs</var> be ? <emu-xref aoid="Evaluation" id="_ref_6740"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20384"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>.</li><li>Let <var>value</var> be ? <emu-xref aoid="GetValue" id="_ref_6741"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>rhs</var>).</li></ol></li><li id="step-vardecllist-evaluation-putvalue">Perform ? <emu-xref aoid="PutValue" id="_ref_6742"><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><li>Return <emu-const>empty</emu-const>.</li></ol></emu-alg> <emu-note><span class="note">Note</span><div class="note-contents"> <p>If a <emu-nt id="_ref_20385"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> is nested within a with statement and the <emu-nt id="_ref_20386"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> in the <emu-nt id="_ref_20387"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> is the same as a <emu-xref href="#property-name" id="_ref_6743"><a href="ecmascript-data-types-and-values.html#property-name">property name</a></emu-xref> of the binding object of the with statement's <emu-xref href="#sec-object-environment-records" id="_ref_6744"><a href="executable-code-and-execution-contexts.html#sec-object-environment-records">Object Environment Record</a></emu-xref>, then step <emu-xref href="#step-vardecllist-evaluation-putvalue" id="_ref_441"><a href="ecmascript-language-statements-and-declarations.html#step-vardecllist-evaluation-putvalue">5</a></emu-xref> will assign <var>value</var> to the property instead of assigning to the VariableEnvironment binding of the <emu-nt id="_ref_20388"><a href="ecmascript-language-expressions.html#prod-Identifier">Identifier</a></emu-nt>.</p> </div></emu-note> <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-615TDHeB"> <emu-nt id="_ref_20389"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt> <emu-nt id="_ref_20390"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>rhs</var> be ? <emu-xref aoid="Evaluation" id="_ref_6745"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20391"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a></emu-nt>.</li><li>Let <var>rVal</var> be ? <emu-xref aoid="GetValue" id="_ref_6746"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>rhs</var>).</li><li>Return ? <emu-xref aoid="BindingInitialization" id="_ref_6747"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <emu-nt id="_ref_20392"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt> with arguments <var>rVal</var> and <emu-val>undefined</emu-val>.</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-destructuring-binding-patterns"> <h1><span class="secnum">14.3.3</span> Destructuring Binding Patterns</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="BindingPattern" params="Yield, Await" id="prod-BindingPattern"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="fwd2jmee" id="prod-5GwwFymY"> <emu-nt params="?Yield, ?Await" id="_ref_20393"><a href="ecmascript-language-statements-and-declarations.html#prod-ObjectBindingPattern">ObjectBindingPattern</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="hpyn1kot" id="prod-nQ2ZFnUa"> <emu-nt params="?Yield, ?Await" id="_ref_20394"><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="ObjectBindingPattern" params="Yield, Await" id="prod-ObjectBindingPattern"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-ObjectBindingPattern">ObjectBindingPattern</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gbpaspne" id="prod-Zq1KBCx2"> <emu-t>{</emu-t> <emu-t>}</emu-t> </emu-rhs> <emu-rhs a="u51ece_j" id="prod-5lmgiaFr"> <emu-t>{</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20395"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestProperty">BindingRestProperty</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>}</emu-t> </emu-rhs> <emu-rhs a="sd_sxlxl" id="prod-xrMoI6uo"> <emu-t>{</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20396"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>}</emu-t> </emu-rhs> <emu-rhs a="98sthfnw" id="prod-ZImPf3XQ"> <emu-t>{</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20397"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>,</emu-t> <emu-nt params="?Yield, ?Await" optional="" id="_ref_20398"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestProperty">BindingRestProperty</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>}</emu-t> </emu-rhs> </emu-production> <emu-production name="ArrayBindingPattern" params="Yield, Await" id="prod-ArrayBindingPattern"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="82yazf9m" id="prod-GTLtfjt0"> <emu-t>[</emu-t> <emu-nt optional="" id="_ref_20399"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await" optional="" id="_ref_20400"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>]</emu-t> </emu-rhs> <emu-rhs a="tz2jlcig"> <emu-t>[</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20401"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>]</emu-t> </emu-rhs> <emu-rhs a="ezfh7oge" id="prod-ZEEMEcAo"> <emu-t>[</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20402"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>,</emu-t> <emu-nt optional="" id="_ref_20403"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await" optional="" id="_ref_20404"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>]</emu-t> </emu-rhs> </emu-production> <emu-production name="BindingRestProperty" params="Yield, Await" id="prod-BindingRestProperty"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestProperty">BindingRestProperty</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="nldxez3v" id="prod-ltwW708a"> <emu-t>...</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20405"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="BindingPropertyList" params="Yield, Await" id="prod-BindingPropertyList"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="8baidhkc"> <emu-nt params="?Yield, ?Await" id="_ref_20406"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingProperty">BindingProperty</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="ewlfehxq" id="prod-TkJ_upuv"> <emu-nt params="?Yield, ?Await" id="_ref_20407"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>,</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20408"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingProperty">BindingProperty</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="BindingElementList" params="Yield, Await" id="prod-BindingElementList"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="lpaw4nny"> <emu-nt params="?Yield, ?Await" id="_ref_20409"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElisionElement">BindingElisionElement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="5z8zw101" id="prod-QAGJVJ9v"> <emu-nt params="?Yield, ?Await" id="_ref_20410"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElementList">BindingElementList</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>,</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20411"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElisionElement">BindingElisionElement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="BindingElisionElement" params="Yield, Await" id="prod-BindingElisionElement"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElisionElement">BindingElisionElement</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="5jbcqvdg" id="prod-eAKFkNTn"> <emu-nt optional="" id="_ref_20412"><a href="ecmascript-language-expressions.html#prod-Elision">Elision</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await" id="_ref_20413"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="BindingProperty" params="Yield, Await" id="prod-BindingProperty"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingProperty">BindingProperty</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="01jnavb_" id="prod-P9s8hLuP"> <emu-nt params="?Yield, ?Await" id="_ref_20414"><a href="ecmascript-language-statements-and-declarations.html#prod-SingleNameBinding">SingleNameBinding</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="xcksc8qh" id="prod-VmvTFDAY"> <emu-nt params="?Yield, ?Await" id="_ref_20415"><a href="ecmascript-language-expressions.html#prod-PropertyName">PropertyName</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>:</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20416"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="BindingElement" params="Yield, Await" id="prod-BindingElement"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="01jnavb_"> <emu-nt params="?Yield, ?Await" id="_ref_20417"><a href="ecmascript-language-statements-and-declarations.html#prod-SingleNameBinding">SingleNameBinding</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="eyv5t9mz" id="prod-qY39_uPQ"> <emu-nt params="?Yield, ?Await" id="_ref_20418"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-nt params="+In, ?Yield, ?Await" optional="" id="_ref_20419"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="SingleNameBinding" params="Yield, Await" id="prod-SingleNameBinding"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-SingleNameBinding">SingleNameBinding</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="mg7mmvow" id="prod-8lbkfoVZ"> <emu-nt params="?Yield, ?Await" id="_ref_20420"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-nt params="+In, ?Yield, ?Await" optional="" id="_ref_20421"><a href="ecmascript-language-expressions.html#prod-Initializer">Initializer</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="BindingRestElement" params="Yield, Await" id="prod-BindingRestElement"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestElement">BindingRestElement</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="nldxez3v" id="prod-0fOwNHr-"> <emu-t>...</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20422"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="lb7grnzq" id="prod-iBHkClE5"> <emu-t>...</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20423"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization" type="sdo" aoid="PropertyBindingInitialization"> <h1><span class="secnum">14.3.3.1</span> Runtime Semantics: PropertyBindingInitialization</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6748"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> PropertyBindingInitialization takes arguments <var>value</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6749"><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_6750"><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_6751"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6752"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-object-type" id="_ref_6753"><a href="ecmascript-data-types-and-values.html#sec-object-type">property keys</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_6754"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>. It collects a list of all bound property names. It is defined piecewise over the following productions:</p> <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-jhtKd-Y5"> <emu-nt id="_ref_20424"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPropertyList">BindingPropertyList</a></emu-nt> <emu-t>,</emu-t> <emu-nt id="_ref_20425"><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>boundNames</var> be ? <emu-xref aoid="PropertyBindingInitialization" id="_ref_6755"><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_20426"><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>Let <var>nextNames</var> be ? <emu-xref aoid="PropertyBindingInitialization" id="_ref_6756"><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_20427"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingProperty">BindingProperty</a></emu-nt> with arguments <var>value</var> and <var>environment</var>.</li><li>Return the <emu-xref href="#list-concatenation" id="_ref_6757"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>boundNames</var> and <var>nextNames</var>.</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="lof8ala-" id="prod--5EhKk0m"><emu-nt id="_ref_20428"><a href="ecmascript-language-statements-and-declarations.html#prod-SingleNameBinding">SingleNameBinding</a></emu-nt></emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>name</var> be the sole element of the <emu-xref aoid="BoundNames" id="_ref_6758"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20429"><a href="ecmascript-language-statements-and-declarations.html#prod-SingleNameBinding">SingleNameBinding</a></emu-nt>.</li><li>Perform ? <emu-xref aoid="KeyedBindingInitialization" id="_ref_6759"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-keyedbindinginitialization" class="e-user-code">KeyedBindingInitialization</a></emu-xref> of <emu-nt id="_ref_20430"><a href="ecmascript-language-statements-and-declarations.html#prod-SingleNameBinding">SingleNameBinding</a></emu-nt> with arguments <var>value</var>, <var>environment</var>, and <var>name</var>.</li><li>Return « <var>name</var> ».</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-1euONYQ-"> <emu-nt id="_ref_20431"><a href="ecmascript-language-expressions.html#prod-PropertyName">PropertyName</a></emu-nt> <emu-t>:</emu-t> <emu-nt id="_ref_20432"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>P</var> be ? <emu-xref aoid="Evaluation" id="_ref_6760"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20433"><a href="ecmascript-language-expressions.html#prod-PropertyName">PropertyName</a></emu-nt>.</li><li>Perform ? <emu-xref aoid="KeyedBindingInitialization" id="_ref_6761"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-keyedbindinginitialization" class="e-user-code">KeyedBindingInitialization</a></emu-xref> of <emu-nt id="_ref_20434"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingElement">BindingElement</a></emu-nt> with arguments <var>value</var>, <var>environment</var>, and <var>P</var>.</li><li>Return « <var>P</var> ».</li></ol></emu-alg> </emu-clause> <emu-clause id="sec-destructuring-binding-patterns-runtime-semantics-restbindinginitialization" type="sdo" aoid="RestBindingInitialization"> <h1><span class="secnum">14.3.3.2</span> Runtime Semantics: RestBindingInitialization</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6762"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> RestBindingInitialization takes arguments <var>value</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6763"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>), <var>environment</var> (an <emu-xref href="#sec-environment-records" id="_ref_6764"><a href="executable-code-and-execution-contexts.html#sec-environment-records">Environment Record</a></emu-xref> or <emu-val>undefined</emu-val>), and <var>excludedNames</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6765"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-object-type" id="_ref_6766"><a href="ecmascript-data-types-and-values.html#sec-object-type">property keys</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6767"><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_6768"><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="BindingRestProperty" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-BindingRestProperty">BindingRestProperty</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ffhe3nqa" id="prod-jjw6mbi6"> <emu-t>...</emu-t> <emu-nt id="_ref_20435"><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_6769"><a href="executable-code-and-execution-contexts.html#sec-resolvebinding" class="e-user-code">ResolveBinding</a></emu-xref>(<emu-xref aoid="StringValue" id="_ref_6770"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_20436"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>, <var>environment</var>).</li><li>Let <var>restObj</var> be <emu-xref aoid="OrdinaryObjectCreate" id="_ref_6771"><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate">OrdinaryObjectCreate</a></emu-xref>(<emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_6772"><a href="fundamental-objects.html#sec-properties-of-the-object-prototype-object">%Object.prototype%</a></emu-xref>).</li><li>Perform ? <emu-xref aoid="CopyDataProperties" id="_ref_6773"><a href="abstract-operations.html#sec-copydataproperties" class="e-user-code">CopyDataProperties</a></emu-xref>(<var>restObj</var>, <var>value</var>, <var>excludedNames</var>).</li><li>If <var>environment</var> is <emu-val>undefined</emu-val>, return ? <emu-xref aoid="PutValue" id="_ref_6774"><a href="ecmascript-data-types-and-values.html#sec-putvalue" class="e-user-code">PutValue</a></emu-xref>(<var>lhs</var>, <var>restObj</var>).</li><li>Return ? <emu-xref aoid="InitializeReferencedBinding" id="_ref_6775"><a href="ecmascript-data-types-and-values.html#sec-initializereferencedbinding">InitializeReferencedBinding</a></emu-xref>(<var>lhs</var>, <var>restObj</var>).</li></ol></emu-alg> </emu-clause> <emu-clause id="sec-runtime-semantics-keyedbindinginitialization" type="sdo" aoid="KeyedBindingInitialization"> <h1><span class="secnum">14.3.3.3</span> Runtime Semantics: KeyedBindingInitialization</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6776"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> KeyedBindingInitialization takes arguments <var>value</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6777"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>), <var>environment</var> (an <emu-xref href="#sec-environment-records" id="_ref_6778"><a href="executable-code-and-execution-contexts.html#sec-environment-records">Environment Record</a></emu-xref> or <emu-val>undefined</emu-val>), and <var>propertyName</var> (a <emu-xref href="#sec-object-type" id="_ref_6779"><a href="ecmascript-data-types-and-values.html#sec-object-type">property key</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6780"><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_6781"><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_6782"><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_6783"><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="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-kKvAd4Kx"> <emu-nt id="_ref_20437"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt> <emu-nt optional="" id="_ref_20438"><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-xref aoid="GetV" id="_ref_6784"><a href="abstract-operations.html#sec-getv" class="e-user-code">GetV</a></emu-xref>(<var>value</var>, <var>propertyName</var>).</li><li>If <emu-nt id="_ref_20439"><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_6785"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20440"><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_6786"><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_6787"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <emu-nt id="_ref_20441"><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="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-v4J727kL"> <emu-nt id="_ref_20442"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-nt optional="" id="_ref_20443"><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_6788"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_20444"><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_6789"><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-xref aoid="GetV" id="_ref_6790"><a href="abstract-operations.html#sec-getv" class="e-user-code">GetV</a></emu-xref>(<var>value</var>, <var>propertyName</var>).</li><li>If <emu-nt id="_ref_20445"><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_6791"><a href="syntax-directed-operations.html#sec-isanonymousfunctiondefinition">IsAnonymousFunctionDefinition</a></emu-xref>(<emu-nt id="_ref_20446"><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_6792"><a href="syntax-directed-operations.html#sec-runtime-semantics-namedevaluation" class="e-user-code">NamedEvaluation</a></emu-xref> of <emu-nt id="_ref_20447"><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_6793"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20448"><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_6794"><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_6795"><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_6796"><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-clause> </emu-clause> </emu-clause> <emu-clause id="sec-empty-statement"> <h1><span class="secnum">14.4</span> Empty Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="EmptyStatement" id="prod-EmptyStatement"> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-EmptyStatement">EmptyStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="sg2sawim" id="prod-hl28S5p6"> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-empty-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.4.1</span> Runtime Semantics: Evaluation</h1> <emu-grammar><emu-production name="EmptyStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-EmptyStatement">EmptyStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="sg2sawim" id="prod-il1Ue5QP"><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-clause> </emu-clause> <emu-clause id="sec-expression-statement"> <h1><span class="secnum">14.5</span> Expression Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="ExpressionStatement" params="Yield, Await" id="prod-ExpressionStatement"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="nmo0iroq" id="prod-XGPiPhtM"> <emu-gann>[lookahead ∉ { <emu-t>{</emu-t>, <emu-t>function</emu-t>, <emu-t>async</emu-t> <emu-gann>[no <emu-nt id="_ref_20449"><a href="ecmascript-language-lexical-grammar.html#prod-LineTerminator">LineTerminator</a></emu-nt> here]</emu-gann> <emu-t>function</emu-t>, <emu-t>class</emu-t>, <emu-t>let</emu-t> <emu-t>[</emu-t> }]</emu-gann> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20450"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-note><span class="note">Note</span><div class="note-contents"> <p>An <emu-nt id="_ref_20451"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt> cannot start with a U+007B (LEFT CURLY BRACKET) because that might make it ambiguous with a <emu-nt id="_ref_20452"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>. An <emu-nt id="_ref_20453"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt> cannot start with the <code>function</code> or <code>class</code> <emu-xref href="#sec-keywords-and-reserved-words" id="_ref_6797"><a href="ecmascript-language-lexical-grammar.html#sec-keywords-and-reserved-words">keywords</a></emu-xref> because that would make it ambiguous with a <emu-nt id="_ref_20454"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>, a <emu-nt id="_ref_20455"><a href="ecmascript-language-functions-and-classes.html#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt>, or a <emu-nt id="_ref_20456"><a href="ecmascript-language-functions-and-classes.html#prod-ClassDeclaration">ClassDeclaration</a></emu-nt>. An <emu-nt id="_ref_20457"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt> cannot start with <code>async function</code> because that would make it ambiguous with an <emu-nt id="_ref_20458"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt> or a <emu-nt id="_ref_20459"><a href="ecmascript-language-functions-and-classes.html#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt>. An <emu-nt id="_ref_20460"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt> cannot start with the two token sequence <code>let [</code> because that would make it ambiguous with a <code>let</code> <emu-nt id="_ref_20461"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt> whose first <emu-nt id="_ref_20462"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalBinding">LexicalBinding</a></emu-nt> was an <emu-nt id="_ref_20463"><a href="ecmascript-language-statements-and-declarations.html#prod-ArrayBindingPattern">ArrayBindingPattern</a></emu-nt>.</p> </div></emu-note> <emu-clause id="sec-expression-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.5.1</span> Runtime Semantics: Evaluation</h1> <emu-grammar><emu-production name="ExpressionStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="4ttdnuln" id="prod-zmcsioZW"> <emu-nt id="_ref_20464"><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>Let <var>exprRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_6798"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20465"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>.</li><li>Return ? <emu-xref aoid="GetValue" id="_ref_6799"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>exprRef</var>).</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-if-statement"> <h1><span class="secnum">14.6</span> The <code>if</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="IfStatement" params="Yield, Await, Return" id="prod-IfStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gvkksvw-" id="prod-_lf1EvXT"> <emu-t>if</emu-t> <emu-t>(</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20466"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20467"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> <emu-t>else</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20468"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="x9p_cd-n" id="prod--e2u-nCd"> <emu-t>if</emu-t> <emu-t>(</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20469"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20470"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> <emu-gann>[lookahead ≠ <emu-t>else</emu-t>]</emu-gann> </emu-rhs> </emu-production> </emu-grammar> <emu-note><span class="note">Note</span><div class="note-contents">The lookahead-restriction [lookahead ≠ <code>else</code>] resolves the classic "dangling else" problem in the usual way. That is, when the choice of associated <code>if</code> is otherwise ambiguous, the <code>else</code> is associated with the nearest (innermost) of the candidate <code>if</code>s</div></emu-note> <emu-clause id="sec-if-statement-static-semantics-early-errors"> <h1><span class="secnum">14.6.1</span> Static Semantics: Early Errors</h1> <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"> <emu-t>if</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20471"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20472"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-t>else</emu-t> <emu-nt id="_ref_20473"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if <emu-xref aoid="IsLabelledFunction" id="_ref_6800"><a href="ecmascript-language-statements-and-declarations.html#sec-islabelledfunction">IsLabelledFunction</a></emu-xref>(the first <emu-nt id="_ref_20474"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>) is <emu-val>true</emu-val>. </li> <li> It is a Syntax Error if <emu-xref aoid="IsLabelledFunction" id="_ref_6801"><a href="ecmascript-language-statements-and-declarations.html#sec-islabelledfunction">IsLabelledFunction</a></emu-xref>(the second <emu-nt id="_ref_20475"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>) is <emu-val>true</emu-val>. </li> </ul> <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"> <emu-t>if</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20476"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20477"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if <emu-xref aoid="IsLabelledFunction" id="_ref_6802"><a href="ecmascript-language-statements-and-declarations.html#sec-islabelledfunction">IsLabelledFunction</a></emu-xref>(<emu-nt id="_ref_20478"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>) is <emu-val>true</emu-val>. </li> </ul> <emu-note><span class="note">Note</span><div class="note-contents"> <p>It is only necessary to apply this rule if the extension specified in <emu-xref href="#sec-labelled-function-declarations" id="_ref_442"><a href="additional-ecmascript-features-for-web-browsers.html#sec-labelled-function-declarations">B.3.1</a></emu-xref> is implemented.</p> </div></emu-note> </emu-clause> <emu-clause id="sec-if-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.6.2</span> Runtime Semantics: Evaluation</h1> <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-V-mFBCSX"> <emu-t>if</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20479"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20480"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-t>else</emu-t> <emu-nt id="_ref_20481"><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>exprRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_6803"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20482"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>.</li><li>Let <var>exprValue</var> be <emu-xref aoid="ToBoolean" id="_ref_6804"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="GetValue" id="_ref_6805"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>exprRef</var>)).</li><li>If <var>exprValue</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>stmtCompletion</var> be <emu-xref aoid="Completion" id="_ref_6806"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6807"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of the first <emu-nt id="_ref_20483"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>).</li></ol></li><li>Else,<ol><li>Let <var>stmtCompletion</var> be <emu-xref aoid="Completion" id="_ref_6808"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6809"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of the second <emu-nt id="_ref_20484"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>).</li></ol></li><li>Return ? <emu-xref aoid="UpdateEmpty" id="_ref_6810"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>stmtCompletion</var>, <emu-val>undefined</emu-val>).</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-31mgDA5h"> <emu-t>if</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20485"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20486"><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>exprRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_6811"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20487"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>.</li><li>Let <var>exprValue</var> be <emu-xref aoid="ToBoolean" id="_ref_6812"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="GetValue" id="_ref_6813"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>exprRef</var>)).</li><li>If <var>exprValue</var> is <emu-val>false</emu-val>, then<ol><li>Return <emu-val>undefined</emu-val>.</li></ol></li><li>Else,<ol><li>Let <var>stmtCompletion</var> be <emu-xref aoid="Completion" id="_ref_6814"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6815"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20488"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>).</li><li>Return ? <emu-xref aoid="UpdateEmpty" id="_ref_6816"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>stmtCompletion</var>, <emu-val>undefined</emu-val>).</li></ol></li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-iteration-statements"> <h1><span class="secnum">14.7</span> Iteration Statements</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="IterationStatement" params="Yield, Await, Return" id="prod-IterationStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cfhtf2jt" id="prod-nthWw5bM"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20489"><a href="ecmascript-language-statements-and-declarations.html#prod-DoWhileStatement">DoWhileStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="v6obhs7z" id="prod-J0YbLQ2x"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20490"><a href="ecmascript-language-statements-and-declarations.html#prod-WhileStatement">WhileStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="cito49hq" id="prod-r-Sjm4F3"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20491"><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="ysjy7ne3" id="prod-Q0CapowH"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20492"><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-iteration-statements-semantics"> <h1><span class="secnum">14.7.1</span> Semantics</h1> <emu-clause id="sec-loopcontinues" type="abstract operation" aoid="LoopContinues"> <h1><span class="secnum">14.7.1.1</span> LoopContinues ( <var>completion</var>, <var>labelSet</var> )</h1> <p>The abstract operation LoopContinues takes arguments <var>completion</var> (a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6817"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref>) and <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6818"><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 performs the following steps when called:</p> <emu-alg><ol><li>If <var>completion</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6819"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion</a></emu-xref>, return <emu-val>true</emu-val>.</li><li>If <var>completion</var> is not a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6820"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">continue completion</a></emu-xref>, return <emu-val>false</emu-val>.</li><li>If <var>completion</var>.<var class="field">[[Target]]</var> is <emu-const>empty</emu-const>, return <emu-val>true</emu-val>.</li><li>If <var>labelSet</var> contains <var>completion</var>.<var class="field">[[Target]]</var>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg> <emu-note><span class="note">Note</span><div class="note-contents"> <p>Within the <emu-nt id="_ref_20493"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> part of an <emu-nt id="_ref_20494"><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt> a <emu-nt id="_ref_20495"><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a></emu-nt> may be used to begin a new iteration.</p> </div></emu-note> </emu-clause> <emu-clause id="sec-runtime-semantics-loopevaluation" type="sdo" aoid="LoopEvaluation"> <h1><span class="secnum">14.7.1.2</span> Runtime Semantics: LoopEvaluation</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6821"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> LoopEvaluation takes argument <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6822"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6823"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6824"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_6825"><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="IterationStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="wbcc1u-6" id="prod-bY0mbJsd"><emu-nt id="_ref_20496"><a href="ecmascript-language-statements-and-declarations.html#prod-DoWhileStatement">DoWhileStatement</a></emu-nt></emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Return ? <emu-xref aoid="DoWhileLoopEvaluation" id="_ref_6826"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-dowhileloopevaluation" class="e-user-code">DoWhileLoopEvaluation</a></emu-xref> of <emu-nt id="_ref_20497"><a href="ecmascript-language-statements-and-declarations.html#prod-DoWhileStatement">DoWhileStatement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg> <emu-grammar><emu-production name="IterationStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="_jk9wnip" id="prod-pBcbxGRB"><emu-nt id="_ref_20498"><a href="ecmascript-language-statements-and-declarations.html#prod-WhileStatement">WhileStatement</a></emu-nt></emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Return ? <emu-xref aoid="WhileLoopEvaluation" id="_ref_6827"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-whileloopevaluation" class="e-user-code">WhileLoopEvaluation</a></emu-xref> of <emu-nt id="_ref_20499"><a href="ecmascript-language-statements-and-declarations.html#prod-WhileStatement">WhileStatement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg> <emu-grammar><emu-production name="IterationStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="brkouqxh" id="prod-FuTGGBHg"><emu-nt id="_ref_20500"><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt></emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Return ? <emu-xref aoid="ForLoopEvaluation" id="_ref_6828"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forloopevaluation" class="e-user-code">ForLoopEvaluation</a></emu-xref> of <emu-nt id="_ref_20501"><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg> <emu-grammar><emu-production name="IterationStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="wium6lig" id="prod-RfvZcfJK"><emu-nt id="_ref_20502"><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt></emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Return ? <emu-xref aoid="ForInOfLoopEvaluation" id="_ref_6829"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofloopevaluation" class="e-user-code">ForInOfLoopEvaluation</a></emu-xref> of <emu-nt id="_ref_20503"><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> with argument <var>labelSet</var>.</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-do-while-statement"> <h1><span class="secnum">14.7.2</span> The <code>do</code>-<code>while</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="DoWhileStatement" params="Yield, Await, Return" id="prod-DoWhileStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-DoWhileStatement">DoWhileStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="eiknjnpu" id="prod-9vnoeXX4"> <emu-t>do</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20504"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> <emu-t>while</emu-t> <emu-t>(</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20505"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-do-while-statement-static-semantics-early-errors"> <h1><span class="secnum">14.7.2.1</span> Static Semantics: Early Errors</h1> <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"> <emu-t>do</emu-t> <emu-nt id="_ref_20506"><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_20507"><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> <ul> <li> It is a Syntax Error if <emu-xref aoid="IsLabelledFunction" id="_ref_6830"><a href="ecmascript-language-statements-and-declarations.html#sec-islabelledfunction">IsLabelledFunction</a></emu-xref>(<emu-nt id="_ref_20508"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>) is <emu-val>true</emu-val>. </li> </ul> <emu-note><span class="note">Note</span><div class="note-contents"> <p>It is only necessary to apply this rule if the extension specified in <emu-xref href="#sec-labelled-function-declarations" id="_ref_443"><a href="additional-ecmascript-features-for-web-browsers.html#sec-labelled-function-declarations">B.3.1</a></emu-xref> is implemented.</p> </div></emu-note> </emu-clause> <emu-clause id="sec-runtime-semantics-dowhileloopevaluation" oldids="sec-do-while-statement-runtime-semantics-labelledevaluation" type="sdo" aoid="DoWhileLoopEvaluation"><span id="sec-do-while-statement-runtime-semantics-labelledevaluation"></span> <h1><span class="secnum">14.7.2.2</span> Runtime Semantics: DoWhileLoopEvaluation</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6831"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> DoWhileLoopEvaluation takes argument <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6832"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6833"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6834"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_6835"><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="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-3uzJdijq"> <emu-t>do</emu-t> <emu-nt id="_ref_20509"><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_20510"><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>Let <var>V</var> be <emu-val>undefined</emu-val>.</li><li>Repeat,<ol><li>Let <var>stmtResult</var> be <emu-xref aoid="Completion" id="_ref_6836"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6837"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20511"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>).</li><li>If <emu-xref aoid="LoopContinues" id="_ref_6838"><a href="ecmascript-language-statements-and-declarations.html#sec-loopcontinues">LoopContinues</a></emu-xref>(<var>stmtResult</var>, <var>labelSet</var>) is <emu-val>false</emu-val>, return ? <emu-xref aoid="UpdateEmpty" id="_ref_6839"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>stmtResult</var>, <var>V</var>).</li><li>If <var>stmtResult</var>.<var class="field">[[Value]]</var> is not <emu-const>empty</emu-const>, set <var>V</var> to <var>stmtResult</var>.<var class="field">[[Value]]</var>.</li><li>Let <var>exprRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_6840"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20512"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>.</li><li>Let <var>exprValue</var> be ? <emu-xref aoid="GetValue" id="_ref_6841"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>exprRef</var>).</li><li>If <emu-xref aoid="ToBoolean" id="_ref_6842"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(<var>exprValue</var>) is <emu-val>false</emu-val>, return <var>V</var>.</li></ol></li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-while-statement"> <h1><span class="secnum">14.7.3</span> The <code>while</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="WhileStatement" params="Yield, Await, Return" id="prod-WhileStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-WhileStatement">WhileStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="awcw0xuh" id="prod-Tx40AFG0"> <emu-t>while</emu-t> <emu-t>(</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20513"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20514"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-while-statement-static-semantics-early-errors"> <h1><span class="secnum">14.7.3.1</span> Static Semantics: Early Errors</h1> <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"> <emu-t>while</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20515"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20516"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if <emu-xref aoid="IsLabelledFunction" id="_ref_6843"><a href="ecmascript-language-statements-and-declarations.html#sec-islabelledfunction">IsLabelledFunction</a></emu-xref>(<emu-nt id="_ref_20517"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>) is <emu-val>true</emu-val>. </li> </ul> <emu-note><span class="note">Note</span><div class="note-contents"> <p>It is only necessary to apply this rule if the extension specified in <emu-xref href="#sec-labelled-function-declarations" id="_ref_444"><a href="additional-ecmascript-features-for-web-browsers.html#sec-labelled-function-declarations">B.3.1</a></emu-xref> is implemented.</p> </div></emu-note> </emu-clause> <emu-clause id="sec-runtime-semantics-whileloopevaluation" oldids="sec-while-statement-runtime-semantics-labelledevaluation" type="sdo" aoid="WhileLoopEvaluation"><span id="sec-while-statement-runtime-semantics-labelledevaluation"></span> <h1><span class="secnum">14.7.3.2</span> Runtime Semantics: WhileLoopEvaluation</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6844"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> WhileLoopEvaluation takes argument <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6845"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6846"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6847"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_6848"><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="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-0mdwhc7l"> <emu-t>while</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20518"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20519"><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>V</var> be <emu-val>undefined</emu-val>.</li><li>Repeat,<ol><li>Let <var>exprRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_6849"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20520"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>.</li><li>Let <var>exprValue</var> be ? <emu-xref aoid="GetValue" id="_ref_6850"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>exprRef</var>).</li><li>If <emu-xref aoid="ToBoolean" id="_ref_6851"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(<var>exprValue</var>) is <emu-val>false</emu-val>, return <var>V</var>.</li><li>Let <var>stmtResult</var> be <emu-xref aoid="Completion" id="_ref_6852"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6853"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20521"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>).</li><li>If <emu-xref aoid="LoopContinues" id="_ref_6854"><a href="ecmascript-language-statements-and-declarations.html#sec-loopcontinues">LoopContinues</a></emu-xref>(<var>stmtResult</var>, <var>labelSet</var>) is <emu-val>false</emu-val>, return ? <emu-xref aoid="UpdateEmpty" id="_ref_6855"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>stmtResult</var>, <var>V</var>).</li><li>If <var>stmtResult</var>.<var class="field">[[Value]]</var> is not <emu-const>empty</emu-const>, set <var>V</var> to <var>stmtResult</var>.<var class="field">[[Value]]</var>.</li></ol></li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-for-statement"> <h1><span class="secnum">14.7.4</span> The <code>for</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="ForStatement" params="Yield, Await, Return" id="prod-ForStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-ForStatement">ForStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="honbm3zg" id="prod-NvPgd2yM"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-gann>[lookahead ≠ <emu-t>let</emu-t> <emu-t>[</emu-t>]</emu-gann> <emu-nt params="~In, ?Yield, ?Await" optional="" id="_ref_20522"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[~In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>;</emu-t> <emu-nt params="+In, ?Yield, ?Await" optional="" id="_ref_20523"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>;</emu-t> <emu-nt params="+In, ?Yield, ?Await" optional="" id="_ref_20524"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20525"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="frhzdc45" id="prod-pYXfSJG_"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt params="~In, ?Yield, ?Await" id="_ref_20526"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a><emu-mods><emu-params>[~In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>;</emu-t> <emu-nt params="+In, ?Yield, ?Await" optional="" id="_ref_20527"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>;</emu-t> <emu-nt params="+In, ?Yield, ?Await" optional="" id="_ref_20528"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20529"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="ibe-o3pw" id="prod-0Y0bZAvD"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt params="~In, ?Yield, ?Await" id="_ref_20530"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a><emu-mods><emu-params>[~In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-nt params="+In, ?Yield, ?Await" optional="" id="_ref_20531"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>;</emu-t> <emu-nt params="+In, ?Yield, ?Await" optional="" id="_ref_20532"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20533"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-for-statement-static-semantics-early-errors"> <h1><span class="secnum">14.7.4.1</span> Static Semantics: Early Errors</h1> <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"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt optional="" id="_ref_20534"><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_20535"><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_20536"><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_20537"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="sodmtko8"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt id="_ref_20538"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt> <emu-t>;</emu-t> <emu-nt optional="" id="_ref_20539"><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_20540"><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_20541"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="k8b-ryxj"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20542"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt> <emu-nt optional="" id="_ref_20543"><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_20544"><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_20545"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if <emu-xref aoid="IsLabelledFunction" id="_ref_6856"><a href="ecmascript-language-statements-and-declarations.html#sec-islabelledfunction">IsLabelledFunction</a></emu-xref>(<emu-nt id="_ref_20546"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>) is <emu-val>true</emu-val>. </li> </ul> <emu-note><span class="note">Note</span><div class="note-contents"> <p>It is only necessary to apply this rule if the extension specified in <emu-xref href="#sec-labelled-function-declarations" id="_ref_445"><a href="additional-ecmascript-features-for-web-browsers.html#sec-labelled-function-declarations">B.3.1</a></emu-xref> is implemented.</p> </div></emu-note> <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"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20547"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt> <emu-nt optional="" id="_ref_20548"><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_20549"><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_20550"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if any element of the <emu-xref aoid="BoundNames" id="_ref_6857"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20551"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt> also occurs in the <emu-xref aoid="VarDeclaredNames" id="_ref_6858"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_20552"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>. </li> </ul> </emu-clause> <emu-clause id="sec-runtime-semantics-forloopevaluation" oldids="sec-for-statement-runtime-semantics-labelledevaluation" type="sdo" aoid="ForLoopEvaluation"><span id="sec-for-statement-runtime-semantics-labelledevaluation"></span> <h1><span class="secnum">14.7.4.2</span> Runtime Semantics: ForLoopEvaluation</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6859"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> ForLoopEvaluation takes argument <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6860"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6861"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6862"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_6863"><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="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-qUCVnDNm"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt optional="" id="_ref_20553"><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_20554"><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_20555"><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_20556"><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 the first <emu-nt id="_ref_20557"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> is present, then<ol><li>Let <var>exprRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_6864"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of the first <emu-nt id="_ref_20558"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>.</li><li>Perform ? <emu-xref aoid="GetValue" id="_ref_6865"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>exprRef</var>).</li></ol></li><li>If the second <emu-nt id="_ref_20559"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> is present, let <var>test</var> be the second <emu-nt id="_ref_20560"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>; otherwise, let <var>test</var> be <emu-const>empty</emu-const>.</li><li>If the third <emu-nt id="_ref_20561"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> is present, let <var>increment</var> be the third <emu-nt id="_ref_20562"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>; otherwise, let <var>increment</var> be <emu-const>empty</emu-const>.</li><li>Return ? <emu-xref aoid="ForBodyEvaluation" id="_ref_6866"><a href="ecmascript-language-statements-and-declarations.html#sec-forbodyevaluation" class="e-user-code">ForBodyEvaluation</a></emu-xref>(<var>test</var>, <var>increment</var>, <emu-nt id="_ref_20563"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, « », <var>labelSet</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="sodmtko8" id="prod-HwfL-Win"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt id="_ref_20564"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt> <emu-t>;</emu-t> <emu-nt optional="" id="_ref_20565"><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_20566"><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_20567"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Perform ? <emu-xref aoid="Evaluation" id="_ref_6867"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20568"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableDeclarationList">VariableDeclarationList</a></emu-nt>.</li><li>If the first <emu-nt id="_ref_20569"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> is present, let <var>test</var> be the first <emu-nt id="_ref_20570"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>; otherwise, let <var>test</var> be <emu-const>empty</emu-const>.</li><li>If the second <emu-nt id="_ref_20571"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> is present, let <var>increment</var> be the second <emu-nt id="_ref_20572"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>; otherwise, let <var>increment</var> be <emu-const>empty</emu-const>.</li><li>Return ? <emu-xref aoid="ForBodyEvaluation" id="_ref_6868"><a href="ecmascript-language-statements-and-declarations.html#sec-forbodyevaluation" class="e-user-code">ForBodyEvaluation</a></emu-xref>(<var>test</var>, <var>increment</var>, <emu-nt id="_ref_20573"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, « », <var>labelSet</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-PMtIFugG"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20574"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt> <emu-nt optional="" id="_ref_20575"><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_20576"><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_20577"><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>oldEnv</var> be the <emu-xref href="#running-execution-context" id="_ref_6869"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li><li>Let <var>loopEnv</var> be <emu-xref aoid="NewDeclarativeEnvironment" id="_ref_6870"><a href="executable-code-and-execution-contexts.html#sec-newdeclarativeenvironment">NewDeclarativeEnvironment</a></emu-xref>(<var>oldEnv</var>).</li><li>Let <var>isConst</var> be <emu-xref aoid="IsConstantDeclaration" id="_ref_6871"><a href="syntax-directed-operations.html#sec-static-semantics-isconstantdeclaration">IsConstantDeclaration</a></emu-xref> of <emu-nt id="_ref_20578"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt>.</li><li>Let <var>boundNames</var> be the <emu-xref aoid="BoundNames" id="_ref_6872"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20579"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt>.</li><li>For each element <var>dn</var> of <var>boundNames</var>, do<ol><li>If <var>isConst</var> is <emu-val>true</emu-val>, then<ol><li>Perform ! <var>loopEnv</var>.CreateImmutableBinding(<var>dn</var>, <emu-val>true</emu-val>).</li></ol></li><li>Else,<ol><li>Perform ! <var>loopEnv</var>.CreateMutableBinding(<var>dn</var>, <emu-val>false</emu-val>).</li></ol></li></ol></li><li>Set the <emu-xref href="#running-execution-context" id="_ref_6873"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>loopEnv</var>.</li><li>Let <var>forDcl</var> be <emu-xref aoid="Completion" id="_ref_6874"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6875"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20580"><a href="ecmascript-language-statements-and-declarations.html#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt>).</li><li>If <var>forDcl</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_6876"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, then<ol><li>Set the <emu-xref href="#running-execution-context" id="_ref_6877"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>oldEnv</var>.</li><li>Return ? <var>forDcl</var>.</li></ol></li><li>If <var>isConst</var> is <emu-val>false</emu-val>, let <var>perIterationLets</var> be <var>boundNames</var>; otherwise let <var>perIterationLets</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6878"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>If the first <emu-nt id="_ref_20581"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> is present, let <var>test</var> be the first <emu-nt id="_ref_20582"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>; otherwise, let <var>test</var> be <emu-const>empty</emu-const>.</li><li>If the second <emu-nt id="_ref_20583"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> is present, let <var>increment</var> be the second <emu-nt id="_ref_20584"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>; otherwise, let <var>increment</var> be <emu-const>empty</emu-const>.</li><li>Let <var>bodyResult</var> be <emu-xref aoid="Completion" id="_ref_6879"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="ForBodyEvaluation" id="_ref_6880"><a href="ecmascript-language-statements-and-declarations.html#sec-forbodyevaluation" class="e-user-code">ForBodyEvaluation</a></emu-xref>(<var>test</var>, <var>increment</var>, <emu-nt id="_ref_20585"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, <var>perIterationLets</var>, <var>labelSet</var>)).</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_6881"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>oldEnv</var>.</li><li>Return ? <var>bodyResult</var>.</li></ol></emu-alg> </emu-clause> <emu-clause id="sec-forbodyevaluation" type="abstract operation" aoid="ForBodyEvaluation"> <h1><span class="secnum">14.7.4.3</span> ForBodyEvaluation ( <var>test</var>, <var>increment</var>, <var>stmt</var>, <var>perIterationBindings</var>, <var>labelSet</var> )</h1> <p>The abstract operation ForBodyEvaluation takes arguments <var>test</var> (an <emu-nt id="_ref_20586"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_6882"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref> or <emu-const>empty</emu-const>), <var>increment</var> (an <emu-nt id="_ref_20587"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_6883"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref> or <emu-const>empty</emu-const>), <var>stmt</var> (a <emu-nt id="_ref_20588"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_6884"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>), <var>perIterationBindings</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6885"><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_6886"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6887"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6888"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_6889"><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>Let <var>V</var> be <emu-val>undefined</emu-val>.</li><li>Perform ? <emu-xref aoid="CreatePerIterationEnvironment" id="_ref_6890"><a href="ecmascript-language-statements-and-declarations.html#sec-createperiterationenvironment">CreatePerIterationEnvironment</a></emu-xref>(<var>perIterationBindings</var>).</li><li>Repeat,<ol><li>If <var>test</var> is not <emu-const>empty</emu-const>, then<ol><li>Let <var>testRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_6891"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <var>test</var>.</li><li>Let <var>testValue</var> be ? <emu-xref aoid="GetValue" id="_ref_6892"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>testRef</var>).</li><li>If <emu-xref aoid="ToBoolean" id="_ref_6893"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(<var>testValue</var>) is <emu-val>false</emu-val>, return <var>V</var>.</li></ol></li><li>Let <var>result</var> be <emu-xref aoid="Completion" id="_ref_6894"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6895"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <var>stmt</var>).</li><li>If <emu-xref aoid="LoopContinues" id="_ref_6896"><a href="ecmascript-language-statements-and-declarations.html#sec-loopcontinues">LoopContinues</a></emu-xref>(<var>result</var>, <var>labelSet</var>) is <emu-val>false</emu-val>, return ? <emu-xref aoid="UpdateEmpty" id="_ref_6897"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>result</var>, <var>V</var>).</li><li>If <var>result</var>.<var class="field">[[Value]]</var> is not <emu-const>empty</emu-const>, set <var>V</var> to <var>result</var>.<var class="field">[[Value]]</var>.</li><li>Perform ? <emu-xref aoid="CreatePerIterationEnvironment" id="_ref_6898"><a href="ecmascript-language-statements-and-declarations.html#sec-createperiterationenvironment">CreatePerIterationEnvironment</a></emu-xref>(<var>perIterationBindings</var>).</li><li>If <var>increment</var> is not <emu-const>empty</emu-const>, then<ol><li>Let <var>incRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_6899"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <var>increment</var>.</li><li>Perform ? <emu-xref aoid="GetValue" id="_ref_6900"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>incRef</var>).</li></ol></li></ol></li></ol></emu-alg> </emu-clause> <emu-clause id="sec-createperiterationenvironment" type="abstract operation" aoid="CreatePerIterationEnvironment"> <h1><span class="secnum">14.7.4.4</span> CreatePerIterationEnvironment ( <var>perIterationBindings</var> )</h1> <p>The abstract operation CreatePerIterationEnvironment takes argument <var>perIterationBindings</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6901"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6902"><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 a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6903"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>. It performs the following steps when called:</p> <emu-alg><ol><li>If <var>perIterationBindings</var> has any elements, then<ol><li>Let <var>lastIterationEnv</var> be the <emu-xref href="#running-execution-context" id="_ref_6904"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li><li>Let <var>outer</var> be <var>lastIterationEnv</var>.<var class="field">[[OuterEnv]]</var>.</li><li><emu-xref href="#assert" id="_ref_6905"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>outer</var> is not <emu-val>null</emu-val>.</li><li>Let <var>thisIterationEnv</var> be <emu-xref aoid="NewDeclarativeEnvironment" id="_ref_6906"><a href="executable-code-and-execution-contexts.html#sec-newdeclarativeenvironment">NewDeclarativeEnvironment</a></emu-xref>(<var>outer</var>).</li><li>For each element <var>bn</var> of <var>perIterationBindings</var>, do<ol><li>Perform ! <var>thisIterationEnv</var>.CreateMutableBinding(<var>bn</var>, <emu-val>false</emu-val>).</li><li>Let <var>lastValue</var> be ? <var>lastIterationEnv</var>.GetBindingValue(<var>bn</var>, <emu-val>true</emu-val>).</li><li>Perform ! <var>thisIterationEnv</var>.InitializeBinding(<var>bn</var>, <var>lastValue</var>).</li></ol></li><li>Set the <emu-xref href="#running-execution-context" id="_ref_6907"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>thisIterationEnv</var>.</li></ol></li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-for-in-and-for-of-statements"> <h1><span class="secnum">14.7.5</span> The <code>for</code>-<code>in</code>, <code>for</code>-<code>of</code>, and <code>for</code>-<code>await</code>-<code>of</code> Statements</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="ForInOfStatement" params="Yield, Await, Return" id="prod-ForInOfStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="w0xbna_a" id="prod-Za8VIr4f"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-gann>[lookahead ≠ <emu-t>let</emu-t> <emu-t>[</emu-t>]</emu-gann> <emu-nt params="?Yield, ?Await" id="_ref_20589"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>in</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20590"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20591"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="7ml0tbdi" id="prod-_N8Q-kim"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20592"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>in</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20593"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20594"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="zchtsyje" id="prod-xutvwaXc"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20595"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>in</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20596"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20597"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="e8xfsfow" id="prod-nLtPS4oB"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-gann>[lookahead ∉ { <emu-t>let</emu-t>, <emu-t>async</emu-t> <emu-t>of</emu-t> }]</emu-gann> <emu-nt params="?Yield, ?Await" id="_ref_20598"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>of</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20599"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20600"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="58n_2ihn" id="prod-M1zjKbr6"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20601"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>of</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20602"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20603"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="pfvjbka1" id="prod-EoyoF5LI"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20604"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>of</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20605"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20606"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="oprokwwm" constraints="+Await" id="prod-ReDwT2-b"><emu-constraints>[+Await]</emu-constraints> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-gann>[lookahead ≠ <emu-t>let</emu-t>]</emu-gann> <emu-nt params="?Yield, ?Await" id="_ref_20607"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>of</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20608"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20609"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="9bsmrb_a" constraints="+Await" id="prod-ut_uoPzp"><emu-constraints>[+Await]</emu-constraints> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20610"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>of</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20611"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20612"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="fxca1-1x" constraints="+Await" id="prod-jY1gwM9V"><emu-constraints>[+Await]</emu-constraints> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20613"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>of</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20614"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20615"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="ForDeclaration" params="Yield, Await" id="prod-ForDeclaration"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="k6i8qvu4" id="prod-ygJ0cdk1"> <emu-nt id="_ref_20616"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt> <emu-nt params="?Yield, ?Await" id="_ref_20617"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="ForBinding" params="Yield, Await" id="prod-ForBinding"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ir-rfjfi" id="prod-gwk9Iaq2"> <emu-nt params="?Yield, ?Await" id="_ref_20618"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="nridwfya" id="prod-rDLkyb_q"> <emu-nt params="?Yield, ?Await" id="_ref_20619"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <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_446"><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-clause id="sec-for-in-and-for-of-statements-static-semantics-early-errors"> <h1><span class="secnum">14.7.5.1</span> Static Semantics: Early Errors</h1> <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"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20620"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-t>in</emu-t> <emu-nt id="_ref_20621"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20622"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="7pgjrcn-"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt id="_ref_20623"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> <emu-t>in</emu-t> <emu-nt id="_ref_20624"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20625"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="jzctgxkp"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20626"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> <emu-t>in</emu-t> <emu-nt id="_ref_20627"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20628"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="jqzgi_en"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20629"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20630"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20631"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="7m-adytu"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt id="_ref_20632"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20633"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20634"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="b3wzboyu"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20635"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20636"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20637"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="mhrux1r7"> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20638"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20639"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20640"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="cyt_lv_1"> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt id="_ref_20641"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20642"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20643"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="uatmda3j"> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20644"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20645"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20646"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if <emu-xref aoid="IsLabelledFunction" id="_ref_6908"><a href="ecmascript-language-statements-and-declarations.html#sec-islabelledfunction">IsLabelledFunction</a></emu-xref>(<emu-nt id="_ref_20647"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>) is <emu-val>true</emu-val>. </li> </ul> <emu-note><span class="note">Note</span><div class="note-contents"> <p>It is only necessary to apply this rule if the extension specified in <emu-xref href="#sec-labelled-function-declarations" id="_ref_447"><a href="additional-ecmascript-features-for-web-browsers.html#sec-labelled-function-declarations">B.3.1</a></emu-xref> is implemented.</p> </div></emu-note> <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"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20648"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-t>in</emu-t> <emu-nt id="_ref_20649"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20650"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="jqzgi_en"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20651"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20652"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20653"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="mhrux1r7"> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20654"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20655"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20656"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> If <emu-nt id="_ref_20657"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> is either an <emu-nt id="_ref_20658"><a href="ecmascript-language-expressions.html#prod-ObjectLiteral">ObjectLiteral</a></emu-nt> or an <emu-nt id="_ref_20659"><a href="ecmascript-language-expressions.html#prod-ArrayLiteral">ArrayLiteral</a></emu-nt>, <emu-nt id="_ref_20660"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-xref href="#must-cover" id="_ref_6909"><a href="notational-conventions.html#must-cover">must cover</a></emu-xref> an <emu-nt id="_ref_20661"><a href="ecmascript-language-expressions.html#prod-AssignmentPattern">AssignmentPattern</a></emu-nt>. </li> <li> If <emu-nt id="_ref_20662"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> is neither an <emu-nt id="_ref_20663"><a href="ecmascript-language-expressions.html#prod-ObjectLiteral">ObjectLiteral</a></emu-nt> nor an <emu-nt id="_ref_20664"><a href="ecmascript-language-expressions.html#prod-ArrayLiteral">ArrayLiteral</a></emu-nt>, it is a Syntax Error if the <emu-xref aoid="AssignmentTargetType" id="_ref_6910"><a href="syntax-directed-operations.html#sec-static-semantics-assignmenttargettype">AssignmentTargetType</a></emu-xref> of <emu-nt id="_ref_20665"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> is not <emu-const>simple</emu-const>. </li> </ul> <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="jzctgxkp"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20666"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> <emu-t>in</emu-t> <emu-nt id="_ref_20667"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20668"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="b3wzboyu"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20669"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20670"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20671"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> <emu-rhs a="uatmda3j"> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20672"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20673"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20674"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if the <emu-xref aoid="BoundNames" id="_ref_6911"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20675"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> contains <emu-val>"let"</emu-val>. </li> <li> It is a Syntax Error if any element of the <emu-xref aoid="BoundNames" id="_ref_6912"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20676"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> also occurs in the <emu-xref aoid="VarDeclaredNames" id="_ref_6913"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_20677"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>. </li> <li> It is a Syntax Error if the <emu-xref aoid="BoundNames" id="_ref_6914"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20678"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> contains any duplicate entries. </li> </ul> </emu-clause> <emu-clause id="sec-static-semantics-isdestructuring" oldids="sec-static-semantics-static-semantics-isdestructuring,sec-for-in-and-for-of-statements-static-semantics-isdestructuring" type="sdo" aoid="IsDestructuring"><span id="sec-for-in-and-for-of-statements-static-semantics-isdestructuring"></span><span id="sec-static-semantics-static-semantics-isdestructuring"></span> <h1><span class="secnum">14.7.5.2</span> Static Semantics: IsDestructuring</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6915"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> IsDestructuring takes no arguments and returns a Boolean. It is defined piecewise over the following productions:</p> <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="jvcvemtw" id="prod-HvnSrzbi"><emu-nt id="_ref_20679"><a href="ecmascript-language-expressions.html#prod-PrimaryExpression">PrimaryExpression</a></emu-nt></emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>If <emu-nt id="_ref_20680"><a href="ecmascript-language-expressions.html#prod-PrimaryExpression">PrimaryExpression</a></emu-nt> is either an <emu-nt id="_ref_20681"><a href="ecmascript-language-expressions.html#prod-ObjectLiteral">ObjectLiteral</a></emu-nt> or an <emu-nt id="_ref_20682"><a href="ecmascript-language-expressions.html#prod-ArrayLiteral">ArrayLiteral</a></emu-nt>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg> <emu-grammar><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-nfrnC2qv"> <emu-nt id="_ref_20683"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-t>[</emu-t> <emu-nt id="_ref_20684"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>]</emu-t> </emu-rhs> <emu-rhs a="frbj984t" id="prod-pVCOt4bB"> <emu-nt id="_ref_20685"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-t>.</emu-t> <emu-nt id="_ref_20686"><a href="ecmascript-language-lexical-grammar.html#prod-IdentifierName">IdentifierName</a></emu-nt> </emu-rhs> <emu-rhs a="fj52gjle" id="prod-IOJOqU1K"> <emu-nt id="_ref_20687"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-nt id="_ref_20688"><a href="ecmascript-language-expressions.html#prod-TemplateLiteral">TemplateLiteral</a></emu-nt> </emu-rhs> <emu-rhs a="x4tzletw" id="prod-e3LgGUUv"> <emu-nt id="_ref_20689"><a href="ecmascript-language-expressions.html#prod-SuperProperty">SuperProperty</a></emu-nt> </emu-rhs> <emu-rhs a="yb7id2be" id="prod-uCaMN-Ha"> <emu-nt id="_ref_20690"><a href="ecmascript-language-expressions.html#prod-MetaProperty">MetaProperty</a></emu-nt> </emu-rhs> <emu-rhs a="cfq-hbbx" id="prod-vPeih5lN"> <emu-t>new</emu-t> <emu-nt id="_ref_20691"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-nt id="_ref_20692"><a href="ecmascript-language-expressions.html#prod-Arguments">Arguments</a></emu-nt> </emu-rhs> <emu-rhs a="0uk9afbi" id="prod-IWE0dD8s"> <emu-nt id="_ref_20693"><a href="ecmascript-language-expressions.html#prod-MemberExpression">MemberExpression</a></emu-nt> <emu-t>.</emu-t> <emu-nt id="_ref_20694"><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-fNvFZX0j"> <emu-t>new</emu-t> <emu-nt id="_ref_20695"><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-9Ion7RwA"> <emu-nt id="_ref_20696"><a href="ecmascript-language-expressions.html#prod-CallExpression">CallExpression</a></emu-nt> </emu-rhs> <emu-rhs a="jbet6xpw" id="prod-Q5WdRWI1"> <emu-nt id="_ref_20697"><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-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-gowHZDoa"> <emu-nt id="_ref_20698"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt> <emu-nt id="_ref_20699"><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 <emu-xref aoid="IsDestructuring" id="_ref_6916"><a href="ecmascript-language-statements-and-declarations.html#sec-static-semantics-isdestructuring">IsDestructuring</a></emu-xref> of <emu-nt id="_ref_20700"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>.</li></ol></emu-alg> <emu-grammar><emu-production name="ForBinding" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uolyom43" id="prod-AsYWUqR1"><emu-nt id="_ref_20701"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</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="ForBinding" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="mdrfyhm6" id="prod-n6CWa3rF"><emu-nt id="_ref_20702"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a></emu-nt></emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Return <emu-val>true</emu-val>.</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_448"><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-clause> <emu-clause id="sec-runtime-semantics-fordeclarationbindinginitialization" oldids="sec-for-in-and-for-of-statements-runtime-semantics-bindinginitialization" type="sdo" aoid="ForDeclarationBindingInitialization"><span id="sec-for-in-and-for-of-statements-runtime-semantics-bindinginitialization"></span> <h1><span class="secnum">14.7.5.3</span> Runtime Semantics: ForDeclarationBindingInitialization</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6917"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> ForDeclarationBindingInitialization takes arguments <var>value</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6918"><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_6919"><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_6920"><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_6921"><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_6922"><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 the formal parameter lists of some <emu-xref href="#non-strict-function" id="_ref_6923"><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_449"><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="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-S5lZ05os"> <emu-nt id="_ref_20703"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt> <emu-nt id="_ref_20704"><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 ? <emu-xref aoid="BindingInitialization" id="_ref_6924"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <emu-nt id="_ref_20705"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> with arguments <var>value</var> and <var>environment</var>.</li></ol></emu-alg> </emu-clause> <emu-clause id="sec-runtime-semantics-fordeclarationbindinginstantiation" oldids="sec-runtime-semantics-bindinginstantiation" type="sdo" aoid="ForDeclarationBindingInstantiation"><span id="sec-runtime-semantics-bindinginstantiation"></span> <h1><span class="secnum">14.7.5.4</span> Runtime Semantics: ForDeclarationBindingInstantiation</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6925"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> ForDeclarationBindingInstantiation takes argument <var>environment</var> (a <emu-xref href="#sec-declarative-environment-records" id="_ref_6926"><a href="executable-code-and-execution-contexts.html#sec-declarative-environment-records">Declarative Environment Record</a></emu-xref>) and returns <emu-const>unused</emu-const>. It is defined piecewise over the following productions:</p> <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-bTiDTykL"> <emu-nt id="_ref_20706"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt> <emu-nt id="_ref_20707"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>For each element <var>name</var> of the <emu-xref aoid="BoundNames" id="_ref_6927"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20708"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>, do<ol><li>If <emu-xref aoid="IsConstantDeclaration" id="_ref_6928"><a href="syntax-directed-operations.html#sec-static-semantics-isconstantdeclaration">IsConstantDeclaration</a></emu-xref> of <emu-nt id="_ref_20709"><a href="ecmascript-language-statements-and-declarations.html#prod-LetOrConst">LetOrConst</a></emu-nt> is <emu-val>true</emu-val>, then<ol><li>Perform ! <var>environment</var>.CreateImmutableBinding(<var>name</var>, <emu-val>true</emu-val>).</li></ol></li><li>Else,<ol><li>Perform ! <var>environment</var>.CreateMutableBinding(<var>name</var>, <emu-val>false</emu-val>).</li></ol></li></ol></li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg> </emu-clause> <emu-clause id="sec-runtime-semantics-forinofloopevaluation" oldids="sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation" type="sdo" aoid="ForInOfLoopEvaluation"><span id="sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation"></span> <h1><span class="secnum">14.7.5.5</span> Runtime Semantics: ForInOfLoopEvaluation</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_6929"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> ForInOfLoopEvaluation takes argument <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6930"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6931"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6932"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_6933"><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="ForInOfStatement" collapsed=""> <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-dhS3iRZF"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20710"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-t>in</emu-t> <emu-nt id="_ref_20711"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20712"><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>keyResult</var> be ? <emu-xref aoid="ForIn/OfHeadEvaluation" id="_ref_6934"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofheadevaluation" class="e-user-code">ForIn/OfHeadEvaluation</a></emu-xref>(« », <emu-nt id="_ref_20713"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>, <emu-const>enumerate</emu-const>).</li><li>Return ? <emu-xref aoid="ForIn/OfBodyEvaluation" id="_ref_6935"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" class="e-user-code">ForIn/OfBodyEvaluation</a></emu-xref>(<emu-nt id="_ref_20714"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>, <emu-nt id="_ref_20715"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, <var>keyResult</var>, <emu-const>enumerate</emu-const>, <emu-const>assignment</emu-const>, <var>labelSet</var>).</li></ol></emu-alg> <emu-grammar><emu-production name="ForInOfStatement" collapsed=""> <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-A6rVBZNm"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt id="_ref_20716"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> <emu-t>in</emu-t> <emu-nt id="_ref_20717"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20718"><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>keyResult</var> be ? <emu-xref aoid="ForIn/OfHeadEvaluation" id="_ref_6936"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofheadevaluation" class="e-user-code">ForIn/OfHeadEvaluation</a></emu-xref>(« », <emu-nt id="_ref_20719"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>, <emu-const>enumerate</emu-const>).</li><li>Return ? <emu-xref aoid="ForIn/OfBodyEvaluation" id="_ref_6937"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" class="e-user-code">ForIn/OfBodyEvaluation</a></emu-xref>(<emu-nt id="_ref_20720"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>, <emu-nt id="_ref_20721"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, <var>keyResult</var>, <emu-const>enumerate</emu-const>, <emu-const>var-binding</emu-const>, <var>labelSet</var>).</li></ol></emu-alg> <emu-grammar><emu-production name="ForInOfStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jzctgxkp" id="prod-zcGoySgU"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20722"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> <emu-t>in</emu-t> <emu-nt id="_ref_20723"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20724"><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>keyResult</var> be ? <emu-xref aoid="ForIn/OfHeadEvaluation" id="_ref_6938"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofheadevaluation" class="e-user-code">ForIn/OfHeadEvaluation</a></emu-xref>(<emu-xref aoid="BoundNames" id="_ref_6939"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20725"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>, <emu-nt id="_ref_20726"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>, <emu-const>enumerate</emu-const>).</li><li>Return ? <emu-xref aoid="ForIn/OfBodyEvaluation" id="_ref_6940"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" class="e-user-code">ForIn/OfBodyEvaluation</a></emu-xref>(<emu-nt id="_ref_20727"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>, <emu-nt id="_ref_20728"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, <var>keyResult</var>, <emu-const>enumerate</emu-const>, <emu-const>lexical-binding</emu-const>, <var>labelSet</var>).</li></ol></emu-alg> <emu-grammar><emu-production name="ForInOfStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="jqzgi_en" id="prod-xXfkt6k0"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20729"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20730"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20731"><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>keyResult</var> be ? <emu-xref aoid="ForIn/OfHeadEvaluation" id="_ref_6941"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofheadevaluation" class="e-user-code">ForIn/OfHeadEvaluation</a></emu-xref>(« », <emu-nt id="_ref_20732"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>, <emu-const>iterate</emu-const>).</li><li>Return ? <emu-xref aoid="ForIn/OfBodyEvaluation" id="_ref_6942"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" class="e-user-code">ForIn/OfBodyEvaluation</a></emu-xref>(<emu-nt id="_ref_20733"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>, <emu-nt id="_ref_20734"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, <var>keyResult</var>, <emu-const>iterate</emu-const>, <emu-const>assignment</emu-const>, <var>labelSet</var>).</li></ol></emu-alg> <emu-grammar><emu-production name="ForInOfStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="7m-adytu" id="prod-pPrWP7Ph"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt id="_ref_20735"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20736"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20737"><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>keyResult</var> be ? <emu-xref aoid="ForIn/OfHeadEvaluation" id="_ref_6943"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofheadevaluation" class="e-user-code">ForIn/OfHeadEvaluation</a></emu-xref>(« », <emu-nt id="_ref_20738"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>, <emu-const>iterate</emu-const>).</li><li>Return ? <emu-xref aoid="ForIn/OfBodyEvaluation" id="_ref_6944"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" class="e-user-code">ForIn/OfBodyEvaluation</a></emu-xref>(<emu-nt id="_ref_20739"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>, <emu-nt id="_ref_20740"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, <var>keyResult</var>, <emu-const>iterate</emu-const>, <emu-const>var-binding</emu-const>, <var>labelSet</var>).</li></ol></emu-alg> <emu-grammar><emu-production name="ForInOfStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="b3wzboyu" id="prod-OIo-GNlm"> <emu-t>for</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20741"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20742"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20743"><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>keyResult</var> be ? <emu-xref aoid="ForIn/OfHeadEvaluation" id="_ref_6945"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofheadevaluation" class="e-user-code">ForIn/OfHeadEvaluation</a></emu-xref>(<emu-xref aoid="BoundNames" id="_ref_6946"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20744"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>, <emu-nt id="_ref_20745"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>, <emu-const>iterate</emu-const>).</li><li>Return ? <emu-xref aoid="ForIn/OfBodyEvaluation" id="_ref_6947"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" class="e-user-code">ForIn/OfBodyEvaluation</a></emu-xref>(<emu-nt id="_ref_20746"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>, <emu-nt id="_ref_20747"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, <var>keyResult</var>, <emu-const>iterate</emu-const>, <emu-const>lexical-binding</emu-const>, <var>labelSet</var>).</li></ol></emu-alg> <emu-grammar><emu-production name="ForInOfStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="mhrux1r7" id="prod-Z4scLosS"> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20748"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20749"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20750"><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>keyResult</var> be ? <emu-xref aoid="ForIn/OfHeadEvaluation" id="_ref_6948"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofheadevaluation" class="e-user-code">ForIn/OfHeadEvaluation</a></emu-xref>(« », <emu-nt id="_ref_20751"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>, <emu-const>async-iterate</emu-const>).</li><li>Return ? <emu-xref aoid="ForIn/OfBodyEvaluation" id="_ref_6949"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" class="e-user-code">ForIn/OfBodyEvaluation</a></emu-xref>(<emu-nt id="_ref_20752"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>, <emu-nt id="_ref_20753"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, <var>keyResult</var>, <emu-const>iterate</emu-const>, <emu-const>assignment</emu-const>, <var>labelSet</var>, <emu-const>async</emu-const>).</li></ol></emu-alg> <emu-grammar><emu-production name="ForInOfStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cyt_lv_1" id="prod-5PDN6AV3"> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-t>var</emu-t> <emu-nt id="_ref_20754"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20755"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20756"><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>keyResult</var> be ? <emu-xref aoid="ForIn/OfHeadEvaluation" id="_ref_6950"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofheadevaluation" class="e-user-code">ForIn/OfHeadEvaluation</a></emu-xref>(« », <emu-nt id="_ref_20757"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>, <emu-const>async-iterate</emu-const>).</li><li>Return ? <emu-xref aoid="ForIn/OfBodyEvaluation" id="_ref_6951"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" class="e-user-code">ForIn/OfBodyEvaluation</a></emu-xref>(<emu-nt id="_ref_20758"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>, <emu-nt id="_ref_20759"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, <var>keyResult</var>, <emu-const>iterate</emu-const>, <emu-const>var-binding</emu-const>, <var>labelSet</var>, <emu-const>async</emu-const>).</li></ol></emu-alg> <emu-grammar><emu-production name="ForInOfStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ForInOfStatement">ForInOfStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="uatmda3j" id="prod-KdWnMB6i"> <emu-t>for</emu-t> <emu-t>await</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20760"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt> <emu-t>of</emu-t> <emu-nt id="_ref_20761"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20762"><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>keyResult</var> be ? <emu-xref aoid="ForIn/OfHeadEvaluation" id="_ref_6952"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forinofheadevaluation" class="e-user-code">ForIn/OfHeadEvaluation</a></emu-xref>(<emu-xref aoid="BoundNames" id="_ref_6953"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20763"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>, <emu-nt id="_ref_20764"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>, <emu-const>async-iterate</emu-const>).</li><li>Return ? <emu-xref aoid="ForIn/OfBodyEvaluation" id="_ref_6954"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" class="e-user-code">ForIn/OfBodyEvaluation</a></emu-xref>(<emu-nt id="_ref_20765"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>, <emu-nt id="_ref_20766"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, <var>keyResult</var>, <emu-const>iterate</emu-const>, <emu-const>lexical-binding</emu-const>, <var>labelSet</var>, <emu-const>async</emu-const>).</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_450"><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-clause> <emu-clause id="sec-runtime-semantics-forinofheadevaluation" type="abstract operation" oldids="sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind" aoid="ForIn/OfHeadEvaluation"><span id="sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind"></span> <h1><span class="secnum">14.7.5.6</span> ForIn/OfHeadEvaluation ( <var>uninitializedBoundNames</var>, <var>expr</var>, <var>iterationKind</var> )</h1> <p>The abstract operation ForIn/OfHeadEvaluation takes arguments <var>uninitializedBoundNames</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6955"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings), <var>expr</var> (an <emu-nt id="_ref_20767"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_6956"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref> or an <emu-nt id="_ref_20768"><a href="ecmascript-language-expressions.html#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_6957"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>), and <var>iterationKind</var> (<emu-const>enumerate</emu-const>, <emu-const>iterate</emu-const>, or <emu-const>async-iterate</emu-const>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6958"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> an <emu-xref href="#sec-iterator-records" id="_ref_6959"><a href="abstract-operations.html#sec-iterator-records">Iterator Record</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_6960"><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>Let <var>oldEnv</var> be the <emu-xref href="#running-execution-context" id="_ref_6961"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li><li>If <var>uninitializedBoundNames</var> is not empty, then<ol><li><emu-xref href="#assert" id="_ref_6962"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>uninitializedBoundNames</var> has no duplicate entries.</li><li>Let <var>newEnv</var> be <emu-xref aoid="NewDeclarativeEnvironment" id="_ref_6963"><a href="executable-code-and-execution-contexts.html#sec-newdeclarativeenvironment">NewDeclarativeEnvironment</a></emu-xref>(<var>oldEnv</var>).</li><li>For each String <var>name</var> of <var>uninitializedBoundNames</var>, do<ol><li>Perform ! <var>newEnv</var>.CreateMutableBinding(<var>name</var>, <emu-val>false</emu-val>).</li></ol></li><li>Set the <emu-xref href="#running-execution-context" id="_ref_6964"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>newEnv</var>.</li></ol></li><li>Let <var>exprRef</var> be <emu-xref aoid="Completion" id="_ref_6965"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6966"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <var>expr</var>).</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_6967"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>oldEnv</var>.</li><li>Let <var>exprValue</var> be ? <emu-xref aoid="GetValue" id="_ref_6968"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(? <var>exprRef</var>).</li><li>If <var>iterationKind</var> is <emu-const>enumerate</emu-const>, then<ol><li>If <var>exprValue</var> is either <emu-val>undefined</emu-val> or <emu-val>null</emu-val>, then<ol><li>Return <emu-xref href="#sec-completion-record-specification-type" id="_ref_6969"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref> { <var class="field">[[Type]]</var>: <emu-const>break</emu-const>, <var class="field">[[Value]]</var>: <emu-const>empty</emu-const>, <var class="field">[[Target]]</var>: <emu-const>empty</emu-const> }.</li></ol></li><li>Let <var>obj</var> be ! <emu-xref aoid="ToObject" id="_ref_6970"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<var>exprValue</var>).</li><li>Let <var>iterator</var> be <emu-xref aoid="EnumerateObjectProperties" id="_ref_6971"><a href="ecmascript-language-statements-and-declarations.html#sec-enumerate-object-properties">EnumerateObjectProperties</a></emu-xref>(<var>obj</var>).</li><li>Let <var>nextMethod</var> be ! <emu-xref aoid="GetV" id="_ref_6972"><a href="abstract-operations.html#sec-getv">GetV</a></emu-xref>(<var>iterator</var>, <emu-val>"next"</emu-val>).</li><li>Return the <emu-xref href="#sec-iterator-records" id="_ref_6973"><a href="abstract-operations.html#sec-iterator-records">Iterator Record</a></emu-xref> { <var class="field">[[Iterator]]</var>: <var>iterator</var>, <var class="field">[[NextMethod]]</var>: <var>nextMethod</var>, <var class="field">[[Done]]</var>: <emu-val>false</emu-val> }.</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_6974"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>iterationKind</var> is either <emu-const>iterate</emu-const> or <emu-const>async-iterate</emu-const>.</li><li>If <var>iterationKind</var> is <emu-const>async-iterate</emu-const>, let <var>iteratorKind</var> be <emu-const>async</emu-const>.</li><li>Else, let <var>iteratorKind</var> be <emu-const>sync</emu-const>.</li><li>Return ? <emu-xref aoid="GetIterator" id="_ref_6975"><a href="abstract-operations.html#sec-getiterator" class="e-user-code">GetIterator</a></emu-xref>(<var>exprValue</var>, <var>iteratorKind</var>).</li></ol></li></ol></emu-alg> </emu-clause> <emu-clause id="sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" type="abstract operation" aoid="ForIn/OfBodyEvaluation"> <h1><span class="secnum">14.7.5.7</span> ForIn/OfBodyEvaluation ( <var>lhs</var>, <var>stmt</var>, <var>iteratorRecord</var>, <var>iterationKind</var>, <var>lhsKind</var>, <var>labelSet</var> [ , <var>iteratorKind</var> ] )</h1> <p>The abstract operation ForIn/OfBodyEvaluation takes arguments <var>lhs</var> (a <emu-xref href="#sec-syntactic-grammar" id="_ref_6976"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>), <var>stmt</var> (a <emu-nt id="_ref_20769"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_6977"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>), <var>iteratorRecord</var> (an <emu-xref href="#sec-iterator-records" id="_ref_6978"><a href="abstract-operations.html#sec-iterator-records">Iterator Record</a></emu-xref>), <var>iterationKind</var> (<emu-const>enumerate</emu-const> or <emu-const>iterate</emu-const>), <var>lhsKind</var> (<emu-const>assignment</emu-const>, <emu-const>var-binding</emu-const>, or <emu-const>lexical-binding</emu-const>), and <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_6979"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and optional argument <var>iteratorKind</var> (<emu-const>sync</emu-const> or <emu-const>async</emu-const>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_6980"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> an <emu-xref href="#sec-ecmascript-language-types" id="_ref_6981"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_6982"><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>iteratorKind</var> is not present, set <var>iteratorKind</var> to <emu-const>sync</emu-const>.</li><li>Let <var>oldEnv</var> be the <emu-xref href="#running-execution-context" id="_ref_6983"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li><li>Let <var>V</var> be <emu-val>undefined</emu-val>.</li><li>Let <var>destructuring</var> be <emu-xref aoid="IsDestructuring" id="_ref_6984"><a href="ecmascript-language-statements-and-declarations.html#sec-static-semantics-isdestructuring">IsDestructuring</a></emu-xref> of <var>lhs</var>.</li><li>If <var>destructuring</var> is <emu-val>true</emu-val> and <var>lhsKind</var> is <emu-const>assignment</emu-const>, then<ol><li><emu-xref href="#assert" id="_ref_6985"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>lhs</var> is a <emu-nt id="_ref_20770"><a href="ecmascript-language-expressions.html#prod-LeftHandSideExpression">LeftHandSideExpression</a></emu-nt>.</li><li>Let <var>assignmentPattern</var> be the <emu-nt id="_ref_20771"><a href="ecmascript-language-expressions.html#prod-AssignmentPattern">AssignmentPattern</a></emu-nt> that is <emu-xref href="#sec-syntactic-grammar" id="_ref_6986"><a href="notational-conventions.html#sec-syntactic-grammar">covered</a></emu-xref> by <var>lhs</var>.</li></ol></li><li>Repeat,<ol><li>Let <var>nextResult</var> be ? <emu-xref aoid="Call" id="_ref_6987"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>iteratorRecord</var>.<var class="field">[[NextMethod]]</var>, <var>iteratorRecord</var>.<var class="field">[[Iterator]]</var>).</li><li>If <var>iteratorKind</var> is <emu-const>async</emu-const>, set <var>nextResult</var> to ? <emu-xref aoid="Await" id="_ref_6988"><a href="control-abstraction-objects.html#await" class="e-user-code">Await</a></emu-xref>(<var>nextResult</var>).</li><li>If <var>nextResult</var> <emu-xref href="#sec-object-type" id="_ref_6989"><a href="ecmascript-data-types-and-values.html#sec-object-type">is not an Object</a></emu-xref>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>done</var> be ? <emu-xref aoid="IteratorComplete" id="_ref_6990"><a href="abstract-operations.html#sec-iteratorcomplete" class="e-user-code">IteratorComplete</a></emu-xref>(<var>nextResult</var>).</li><li>If <var>done</var> is <emu-val>true</emu-val>, return <var>V</var>.</li><li>Let <var>nextValue</var> be ? <emu-xref aoid="IteratorValue" id="_ref_6991"><a href="abstract-operations.html#sec-iteratorvalue" class="e-user-code">IteratorValue</a></emu-xref>(<var>nextResult</var>).</li><li>If <var>lhsKind</var> is either <emu-const>assignment</emu-const> or <emu-const>var-binding</emu-const>, then<ol><li>If <var>destructuring</var> is <emu-val>true</emu-val>, then<ol><li>If <var>lhsKind</var> is <emu-const>assignment</emu-const>, then<ol><li>Let <var>status</var> be <emu-xref aoid="Completion" id="_ref_6992"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="DestructuringAssignmentEvaluation" id="_ref_6993"><a href="ecmascript-language-expressions.html#sec-runtime-semantics-destructuringassignmentevaluation" class="e-user-code">DestructuringAssignmentEvaluation</a></emu-xref> of <var>assignmentPattern</var> with argument <var>nextValue</var>).</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_6994"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>lhsKind</var> is <emu-const>var-binding</emu-const>.</li><li><emu-xref href="#assert" id="_ref_6995"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>lhs</var> is a <emu-nt id="_ref_20772"><a href="ecmascript-language-statements-and-declarations.html#prod-ForBinding">ForBinding</a></emu-nt>.</li><li>Let <var>status</var> be <emu-xref aoid="Completion" id="_ref_6996"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="BindingInitialization" id="_ref_6997"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <var>lhs</var> with arguments <var>nextValue</var> and <emu-val>undefined</emu-val>).</li></ol></li></ol></li><li>Else,<ol><li>Let <var>lhsRef</var> be <emu-xref aoid="Completion" id="_ref_6998"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_6999"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <var>lhs</var>). (It may be evaluated repeatedly.)</li><li>If <var>lhsRef</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7000"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, then<ol><li>Let <var>status</var> be <var>lhsRef</var>.</li></ol></li><li>Else,<ol><li>Let <var>status</var> be <emu-xref aoid="Completion" id="_ref_7001"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="PutValue" id="_ref_7002"><a href="ecmascript-data-types-and-values.html#sec-putvalue" class="e-user-code">PutValue</a></emu-xref>(<var>lhsRef</var>.<var class="field">[[Value]]</var>, <var>nextValue</var>)).</li></ol></li></ol></li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_7003"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>lhsKind</var> is <emu-const>lexical-binding</emu-const>.</li><li><emu-xref href="#assert" id="_ref_7004"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>lhs</var> is a <emu-nt id="_ref_20773"><a href="ecmascript-language-statements-and-declarations.html#prod-ForDeclaration">ForDeclaration</a></emu-nt>.</li><li>Let <var>iterationEnv</var> be <emu-xref aoid="NewDeclarativeEnvironment" id="_ref_7005"><a href="executable-code-and-execution-contexts.html#sec-newdeclarativeenvironment">NewDeclarativeEnvironment</a></emu-xref>(<var>oldEnv</var>).</li><li>Perform <emu-xref aoid="ForDeclarationBindingInstantiation" id="_ref_7006"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-fordeclarationbindinginstantiation">ForDeclarationBindingInstantiation</a></emu-xref> of <var>lhs</var> with argument <var>iterationEnv</var>.</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_7007"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>iterationEnv</var>.</li><li>If <var>destructuring</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>status</var> be <emu-xref aoid="Completion" id="_ref_7008"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="ForDeclarationBindingInitialization" id="_ref_7009"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-fordeclarationbindinginitialization" class="e-user-code">ForDeclarationBindingInitialization</a></emu-xref> of <var>lhs</var> with arguments <var>nextValue</var> and <var>iterationEnv</var>).</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_7010"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>lhs</var> binds a single name.</li><li>Let <var>lhsName</var> be the sole element of the <emu-xref aoid="BoundNames" id="_ref_7011"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <var>lhs</var>.</li><li>Let <var>lhsRef</var> be ! <emu-xref aoid="ResolveBinding" id="_ref_7012"><a href="executable-code-and-execution-contexts.html#sec-resolvebinding">ResolveBinding</a></emu-xref>(<var>lhsName</var>).</li><li>Let <var>status</var> be <emu-xref aoid="Completion" id="_ref_7013"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="InitializeReferencedBinding" id="_ref_7014"><a href="ecmascript-data-types-and-values.html#sec-initializereferencedbinding">InitializeReferencedBinding</a></emu-xref>(<var>lhsRef</var>, <var>nextValue</var>)).</li></ol></li></ol></li><li>If <var>status</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7015"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, then<ol><li>Set the <emu-xref href="#running-execution-context" id="_ref_7016"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>oldEnv</var>.</li><li>If <var>iteratorKind</var> is <emu-const>async</emu-const>, return ? <emu-xref aoid="AsyncIteratorClose" id="_ref_7017"><a href="abstract-operations.html#sec-asynciteratorclose" class="e-user-code">AsyncIteratorClose</a></emu-xref>(<var>iteratorRecord</var>, <var>status</var>).</li><li>If <var>iterationKind</var> is <emu-const>enumerate</emu-const>, then<ol><li>Return ? <var>status</var>.</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_7018"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>iterationKind</var> is <emu-const>iterate</emu-const>.</li><li>Return ? <emu-xref aoid="IteratorClose" id="_ref_7019"><a href="abstract-operations.html#sec-iteratorclose" class="e-user-code">IteratorClose</a></emu-xref>(<var>iteratorRecord</var>, <var>status</var>).</li></ol></li></ol></li><li>Let <var>result</var> be <emu-xref aoid="Completion" id="_ref_7020"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7021"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <var>stmt</var>).</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_7022"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>oldEnv</var>.</li><li>If <emu-xref aoid="LoopContinues" id="_ref_7023"><a href="ecmascript-language-statements-and-declarations.html#sec-loopcontinues">LoopContinues</a></emu-xref>(<var>result</var>, <var>labelSet</var>) is <emu-val>false</emu-val>, then<ol><li>If <var>iterationKind</var> is <emu-const>enumerate</emu-const>, then<ol><li>Return ? <emu-xref aoid="UpdateEmpty" id="_ref_7024"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>result</var>, <var>V</var>).</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_7025"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>iterationKind</var> is <emu-const>iterate</emu-const>.</li><li>Set <var>status</var> to <emu-xref aoid="Completion" id="_ref_7026"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="UpdateEmpty" id="_ref_7027"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>result</var>, <var>V</var>)).</li><li>If <var>iteratorKind</var> is <emu-const>async</emu-const>, return ? <emu-xref aoid="AsyncIteratorClose" id="_ref_7028"><a href="abstract-operations.html#sec-asynciteratorclose" class="e-user-code">AsyncIteratorClose</a></emu-xref>(<var>iteratorRecord</var>, <var>status</var>).</li><li>Return ? <emu-xref aoid="IteratorClose" id="_ref_7029"><a href="abstract-operations.html#sec-iteratorclose" class="e-user-code">IteratorClose</a></emu-xref>(<var>iteratorRecord</var>, <var>status</var>).</li></ol></li></ol></li><li>If <var>result</var>.<var class="field">[[Value]]</var> is not <emu-const>empty</emu-const>, set <var>V</var> to <var>result</var>.<var class="field">[[Value]]</var>.</li></ol></li></ol></emu-alg> </emu-clause> <emu-clause id="sec-for-in-and-for-of-statements-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.7.5.8</span> Runtime Semantics: Evaluation</h1> <emu-grammar><emu-production name="BindingIdentifier"> <emu-nt><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="bras6mo_" id="prod-_anR-waH"> <emu-nt id="_ref_20774"><a href="ecmascript-language-expressions.html#prod-Identifier">Identifier</a></emu-nt> </emu-rhs> <emu-rhs a="0d8zyjn8" id="prod-K8Yvyf4p"> <emu-t>yield</emu-t> </emu-rhs> <emu-rhs a="hx1dvlrw" id="prod-KzQjZu5p"> <emu-t>await</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>bindingId</var> be the <emu-xref aoid="StringValue" id="_ref_7030"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_20775"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a></emu-nt>.</li><li>Return ? <emu-xref aoid="ResolveBinding" id="_ref_7031"><a href="executable-code-and-execution-contexts.html#sec-resolvebinding" class="e-user-code">ResolveBinding</a></emu-xref>(<var>bindingId</var>).</li></ol></emu-alg> </emu-clause> <emu-clause id="sec-enumerate-object-properties" type="abstract operation" aoid="EnumerateObjectProperties"> <h1><span class="secnum">14.7.5.9</span> EnumerateObjectProperties ( <var>O</var> )</h1> <p>The abstract operation EnumerateObjectProperties takes argument <var>O</var> (an Object) and returns an <emu-xref href="#sec-iterator-interface" id="_ref_7032"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator object</a></emu-xref>. It performs the following steps when called:</p> <emu-alg><ol><li>Return an <emu-xref href="#sec-iterator-interface" id="_ref_7033"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator object</a></emu-xref> whose <code>next</code> method iterates over all the String-valued keys of enumerable properties of <var>O</var>. The <emu-xref href="#sec-iterator-interface" id="_ref_7034"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator object</a></emu-xref> is never directly accessible to ECMAScript code. The mechanics and order of enumerating the properties is not specified but must conform to the rules specified below.</li></ol></emu-alg> <p>The <emu-xref href="#sec-iterator-interface" id="_ref_7035"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref>'s <code>throw</code> and <code>return</code> methods are <emu-val>null</emu-val> and are never invoked. The <emu-xref href="#sec-iterator-interface" id="_ref_7036"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref>'s <code>next</code> method processes object properties to determine whether the <emu-xref href="#sec-object-type" id="_ref_7037"><a href="ecmascript-data-types-and-values.html#sec-object-type">property key</a></emu-xref> should be returned as an <emu-xref href="#sec-iterator-interface" id="_ref_7038"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref> value. Returned <emu-xref href="#sec-object-type" id="_ref_7039"><a href="ecmascript-data-types-and-values.html#sec-object-type">property keys</a></emu-xref> do not include keys that are Symbols. Properties of the target object may be deleted during enumeration. A property that is deleted before it is processed by the <emu-xref href="#sec-iterator-interface" id="_ref_7040"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref>'s <code>next</code> method is ignored. If new properties are added to the target object during enumeration, the newly added properties are not guaranteed to be processed in the active enumeration. A <emu-xref href="#property-name" id="_ref_7041"><a href="ecmascript-data-types-and-values.html#property-name">property name</a></emu-xref> will be returned by the <emu-xref href="#sec-iterator-interface" id="_ref_7042"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref>'s <code>next</code> method at most once in any enumeration.</p> <p>Enumerating the properties of the target object includes enumerating properties of its prototype, and the prototype of the prototype, and so on, recursively; but a property of a prototype is not processed if it has the same name as a property that has already been processed by the <emu-xref href="#sec-iterator-interface" id="_ref_7043"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref>'s <code>next</code> method. The values of <var class="field">[[Enumerable]]</var> attributes are not considered when determining if a property of a prototype object has already been processed. The enumerable property names of prototype objects must be obtained by invoking EnumerateObjectProperties passing the prototype object as the argument. EnumerateObjectProperties must obtain the own <emu-xref href="#sec-object-type" id="_ref_7044"><a href="ecmascript-data-types-and-values.html#sec-object-type">property keys</a></emu-xref> of the target object by calling its <var class="field">[[OwnPropertyKeys]]</var> internal method. Property attributes of the target object must be obtained by calling its <var class="field">[[GetOwnProperty]]</var> internal method.</p> <p>In addition, if neither <var>O</var> nor any object in its prototype chain is a <emu-xref href="#proxy-exotic-object" id="_ref_7045"><a href="ordinary-and-exotic-objects-behaviours.html#proxy-exotic-object">Proxy exotic object</a></emu-xref>, <emu-xref href="#typedarray" id="_ref_7046"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>, <emu-xref href="#module-namespace-exotic-object" id="_ref_7047"><a href="ordinary-and-exotic-objects-behaviours.html#module-namespace-exotic-object">module namespace exotic object</a></emu-xref>, or implementation provided <emu-xref href="#exotic-object" id="_ref_7048"><a href="ecmascript-data-types-and-values.html#exotic-object">exotic object</a></emu-xref>, then the <emu-xref href="#sec-iterator-interface" id="_ref_7049"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref> must behave as would the <emu-xref href="#sec-iterator-interface" id="_ref_7050"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref> given by <emu-xref aoid="CreateForInIterator" id="_ref_7051"><a href="ecmascript-language-statements-and-declarations.html#sec-createforiniterator">CreateForInIterator</a></emu-xref>(<var>O</var>) until one of the following occurs:</p> <ul> <li>the value of the <var class="field">[[Prototype]]</var> internal slot of <var>O</var> or an object in its prototype chain changes,</li> <li>a property is removed from <var>O</var> or an object in its prototype chain,</li> <li>a property is added to an object in <var>O</var>'s prototype chain, or</li> <li>the value of the <var class="field">[[Enumerable]]</var> attribute of a property of <var>O</var> or an object in its prototype chain changes.</li> </ul> <emu-note><span class="note">Note 1</span><div class="note-contents"> <p>ECMAScript implementations are not required to implement the algorithm in <emu-xref href="#sec-%foriniteratorprototype%.next" id="_ref_451"><a href="ecmascript-language-statements-and-declarations.html#sec-%foriniteratorprototype%.next">14.7.5.10.2.1</a></emu-xref> directly. They may choose any implementation whose behaviour will not deviate from that algorithm unless one of the constraints in the previous paragraph is violated.</p> <p>The following is an informative definition of an ECMAScript generator function that conforms to these rules:</p> <pre><code class="javascript hljs"><span class="hljs-keyword">function</span>* <span class="hljs-title class_">EnumerateObjectProperties</span>(obj) { <span class="hljs-keyword">const</span> visited = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Set</span>(); <span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> key <span class="hljs-keyword">of</span> <span class="hljs-title class_">Reflect</span>.<span class="hljs-title function_">ownKeys</span>(obj)) { <span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> key === <span class="hljs-string">"symbol"</span>) <span class="hljs-keyword">continue</span>; <span class="hljs-keyword">const</span> desc = <span class="hljs-title class_">Reflect</span>.<span class="hljs-title function_">getOwnPropertyDescriptor</span>(obj, key); <span class="hljs-keyword">if</span> (desc) { visited.<span class="hljs-title function_">add</span>(key); <span class="hljs-keyword">if</span> (desc.<span class="hljs-property">enumerable</span>) <span class="hljs-keyword">yield</span> key; } } <span class="hljs-keyword">const</span> proto = <span class="hljs-title class_">Reflect</span>.<span class="hljs-title function_">getPrototypeOf</span>(obj); <span class="hljs-keyword">if</span> (proto === <span class="hljs-literal">null</span>) <span class="hljs-keyword">return</span>; <span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> protoKey <span class="hljs-keyword">of</span> <span class="hljs-title class_">EnumerateObjectProperties</span>(proto)) { <span class="hljs-keyword">if</span> (!visited.<span class="hljs-title function_">has</span>(protoKey)) <span class="hljs-keyword">yield</span> protoKey; } }</code></pre> </div></emu-note> <emu-note><span class="note">Note 2</span><div class="note-contents"> The list of <emu-xref href="#exotic-object" id="_ref_7052"><a href="ecmascript-data-types-and-values.html#exotic-object">exotic objects</a></emu-xref> for which implementations are not required to match <emu-xref aoid="CreateForInIterator" id="_ref_7053"><a href="ecmascript-language-statements-and-declarations.html#sec-createforiniterator">CreateForInIterator</a></emu-xref> was chosen because implementations historically differed in behaviour for those cases, and agreed in all others. </div></emu-note> </emu-clause> <emu-clause id="sec-for-in-iterator-objects"> <h1><span class="secnum">14.7.5.10</span> For-In Iterator Objects</h1> <p>A <dfn variants="For-In Iterator object,For-In Iterator objects" tabindex="-1">For-In Iterator</dfn> is an object that represents a specific iteration over some specific object. For-In Iterator objects are never directly accessible to ECMAScript code; they exist solely to illustrate the behaviour of <emu-xref aoid="EnumerateObjectProperties" id="_ref_7054"><a href="ecmascript-language-statements-and-declarations.html#sec-enumerate-object-properties">EnumerateObjectProperties</a></emu-xref>.</p> <emu-clause id="sec-createforiniterator" type="abstract operation" aoid="CreateForInIterator"> <h1><span class="secnum">14.7.5.10.1</span> CreateForInIterator ( <var>object</var> )</h1> <p>The abstract operation CreateForInIterator takes argument <var>object</var> (an Object) and returns a <emu-xref href="#sec-for-in-iterator-objects" id="_ref_7055"><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-iterator-objects">For-In Iterator</a></emu-xref>. It is used to create a <emu-xref href="#sec-for-in-iterator-objects" id="_ref_7056"><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-iterator-objects">For-In Iterator object</a></emu-xref> which iterates over the own and inherited enumerable string properties of <var>object</var> in a specific order. It performs the following steps when called:</p> <emu-alg><ol><li>Let <var>iterator</var> be <emu-xref aoid="OrdinaryObjectCreate" id="_ref_7057"><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate">OrdinaryObjectCreate</a></emu-xref>(<emu-xref href="#sec-%foriniteratorprototype%-object" id="_ref_7058"><a href="ecmascript-language-statements-and-declarations.html#sec-%foriniteratorprototype%-object">%ForInIteratorPrototype%</a></emu-xref>, « <var class="field">[[Object]]</var>, <var class="field">[[ObjectWasVisited]]</var>, <var class="field">[[VisitedKeys]]</var>, <var class="field">[[RemainingKeys]]</var> »).</li><li>Set <var>iterator</var>.<var class="field">[[Object]]</var> to <var>object</var>.</li><li>Set <var>iterator</var>.<var class="field">[[ObjectWasVisited]]</var> to <emu-val>false</emu-val>.</li><li>Set <var>iterator</var>.<var class="field">[[VisitedKeys]]</var> to a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_7059"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Set <var>iterator</var>.<var class="field">[[RemainingKeys]]</var> to a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_7060"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return <var>iterator</var>.</li></ol></emu-alg> </emu-clause> <emu-clause id="sec-%foriniteratorprototype%-object"> <h1><span class="secnum">14.7.5.10.2</span> The %ForInIteratorPrototype% Object</h1> <p>The <dfn tabindex="-1">%ForInIteratorPrototype%</dfn> object:</p> <ul> <li>has properties that are inherited by all <emu-xref href="#sec-for-in-iterator-objects" id="_ref_7061"><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-iterator-objects">For-In Iterator objects</a></emu-xref>.</li> <li>is an <emu-xref href="#ordinary-object" id="_ref_7062"><a href="ecmascript-data-types-and-values.html#ordinary-object">ordinary object</a></emu-xref>.</li> <li>has a <var class="field">[[Prototype]]</var> internal slot whose value is <emu-xref href="#sec-%iterator.prototype%-object" id="_ref_7063"><a href="control-abstraction-objects.html#sec-%iterator.prototype%-object">%Iterator.prototype%</a></emu-xref>.</li> <li>is never directly accessible to ECMAScript code.</li> <li>has the following properties:</li> </ul> <emu-clause id="sec-%foriniteratorprototype%.next"> <h1><span class="secnum">14.7.5.10.2.1</span> %ForInIteratorPrototype%.next ( )</h1> <emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li><emu-xref href="#assert" id="_ref_7064"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>O</var> <emu-xref href="#sec-object-type" id="_ref_7065"><a href="ecmascript-data-types-and-values.html#sec-object-type">is an Object</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_7066"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>O</var> has all of the internal slots of a <emu-xref href="#sec-for-in-iterator-objects" id="_ref_7067"><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-iterator-objects">For-In Iterator</a></emu-xref> Instance (<emu-xref href="#sec-properties-of-for-in-iterator-instances" id="_ref_452"><a href="ecmascript-language-statements-and-declarations.html#sec-properties-of-for-in-iterator-instances">14.7.5.10.3</a></emu-xref>).</li><li>Let <var>object</var> be <var>O</var>.<var class="field">[[Object]]</var>.</li><li>Repeat,<ol><li>If <var>O</var>.<var class="field">[[ObjectWasVisited]]</var> is <emu-val>false</emu-val>, then<ol><li>Let <var>keys</var> be ? <span class="e-user-code"><var>object</var>.<var class="field">[[OwnPropertyKeys]]</var>()</span>.</li><li>For each element <var>key</var> of <var>keys</var>, do<ol><li>If <var>key</var> <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_7068"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-string-type">is a String</a></emu-xref>, then<ol><li>Append <var>key</var> to <var>O</var>.<var class="field">[[RemainingKeys]]</var>.</li></ol></li></ol></li><li>Set <var>O</var>.<var class="field">[[ObjectWasVisited]]</var> to <emu-val>true</emu-val>.</li></ol></li><li>Repeat, while <var>O</var>.<var class="field">[[RemainingKeys]]</var> is not empty,<ol><li>Let <var>r</var> be the first element of <var>O</var>.<var class="field">[[RemainingKeys]]</var>.</li><li>Remove the first element from <var>O</var>.<var class="field">[[RemainingKeys]]</var>.</li><li>If <var>O</var>.<var class="field">[[VisitedKeys]]</var> does not contain <var>r</var>, then<ol><li>Let <var>desc</var> be ? <span class="e-user-code"><var>object</var>.<var class="field">[[GetOwnProperty]]</var></span>(<var>r</var>).</li><li>If <var>desc</var> is not <emu-val>undefined</emu-val>, then<ol><li>Append <var>r</var> to <var>O</var>.<var class="field">[[VisitedKeys]]</var>.</li><li>If <var>desc</var>.<var class="field">[[Enumerable]]</var> is <emu-val>true</emu-val>, return <emu-xref aoid="CreateIteratorResultObject" id="_ref_7069"><a href="abstract-operations.html#sec-createiterresultobject">CreateIteratorResultObject</a></emu-xref>(<var>r</var>, <emu-val>false</emu-val>).</li></ol></li></ol></li></ol></li><li>Set <var>object</var> to ? <span class="e-user-code"><var>object</var>.<var class="field">[[GetPrototypeOf]]</var>()</span>.</li><li>Set <var>O</var>.<var class="field">[[Object]]</var> to <var>object</var>.</li><li>Set <var>O</var>.<var class="field">[[ObjectWasVisited]]</var> to <emu-val>false</emu-val>.</li><li>If <var>object</var> is <emu-val>null</emu-val>, return <emu-xref aoid="CreateIteratorResultObject" id="_ref_7070"><a href="abstract-operations.html#sec-createiterresultobject">CreateIteratorResultObject</a></emu-xref>(<emu-val>undefined</emu-val>, <emu-val>true</emu-val>).</li></ol></li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-properties-of-for-in-iterator-instances"> <h1><span class="secnum">14.7.5.10.3</span> Properties of For-In Iterator Instances</h1> <p><emu-xref href="#sec-for-in-iterator-objects" id="_ref_7071"><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-iterator-objects">For-In Iterator</a></emu-xref> instances are <emu-xref href="#ordinary-object" id="_ref_7072"><a href="ecmascript-data-types-and-values.html#ordinary-object">ordinary objects</a></emu-xref> that inherit properties from the <emu-xref href="#sec-%foriniteratorprototype%-object" id="_ref_7073"><a href="ecmascript-language-statements-and-declarations.html#sec-%foriniteratorprototype%-object">%ForInIteratorPrototype%</a></emu-xref> intrinsic object. <emu-xref href="#sec-for-in-iterator-objects" id="_ref_7074"><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-iterator-objects">For-In Iterator</a></emu-xref> instances are initially created with the internal slots listed in <emu-xref href="#table-for-in-iterator-instance-slots" id="_ref_453"><a href="ecmascript-language-statements-and-declarations.html#table-for-in-iterator-instance-slots">Table 38</a></emu-xref>.</p> <emu-table id="table-for-in-iterator-instance-slots" caption="Internal Slots of For-In Iterator Instances"><figure><figcaption>Table 38: Internal Slots of <emu-xref href="#sec-for-in-iterator-objects" id="_ref_7075"><a href="ecmascript-language-statements-and-declarations.html#sec-for-in-iterator-objects">For-In Iterator</a></emu-xref> Instances</figcaption> <table> <thead> <tr> <th> Internal Slot </th> <th> Type </th> <th> Description </th> </tr> </thead> <tbody><tr> <td> <var class="field">[[Object]]</var> </td> <td> an Object </td> <td> The Object value whose properties are being iterated. </td> </tr> <tr> <td> <var class="field">[[ObjectWasVisited]]</var> </td> <td> a Boolean </td> <td> <emu-val>true</emu-val> if the <emu-xref href="#sec-iterator-interface" id="_ref_7076"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref> has invoked <var class="field">[[OwnPropertyKeys]]</var> on <var class="field">[[Object]]</var>, <emu-val>false</emu-val> otherwise. </td> </tr> <tr> <td> <var class="field">[[VisitedKeys]]</var> </td> <td> a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_7077"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings </td> <td> The values that have been emitted by this <emu-xref href="#sec-iterator-interface" id="_ref_7078"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref> thus far. </td> </tr> <tr> <td> <var class="field">[[RemainingKeys]]</var> </td> <td> a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_7079"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings </td> <td> The values remaining to be emitted for the current object, before iterating the properties of its prototype (if its prototype is not <emu-val>null</emu-val>). </td> </tr> </tbody></table> </figure></emu-table> </emu-clause> </emu-clause> </emu-clause> </emu-clause> <emu-clause id="sec-continue-statement"> <h1><span class="secnum">14.8</span> The <code>continue</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="ContinueStatement" params="Yield, Await" id="prod-ContinueStatement"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="6qppgxyk" id="prod-rfM2mnQY"> <emu-t>continue</emu-t> <emu-t>;</emu-t> </emu-rhs> <emu-rhs a="fiwlh1nt" id="prod-w6m19zWs"> <emu-t>continue</emu-t> <emu-gann>[no <emu-nt id="_ref_20776"><a href="ecmascript-language-lexical-grammar.html#prod-LineTerminator">LineTerminator</a></emu-nt> here]</emu-gann> <emu-nt params="?Yield, ?Await" id="_ref_20777"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-continue-statement-static-semantics-early-errors"> <h1><span class="secnum">14.8.1</span> Static Semantics: Early Errors</h1> <emu-grammar><emu-production name="ContinueStatement"> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="6qppgxyk"> <emu-t>continue</emu-t> <emu-t>;</emu-t> </emu-rhs> <emu-rhs a="wh7qddgu"> <emu-t>continue</emu-t> <emu-nt id="_ref_20778"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if this <emu-nt id="_ref_20779"><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a></emu-nt> is not nested, directly or indirectly (but not crossing function or <code>static</code> initialization block boundaries), within an <emu-nt id="_ref_20780"><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt>. </li> </ul> </emu-clause> <emu-clause id="sec-continue-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.8.2</span> Runtime Semantics: Evaluation</h1> <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-MdaDQGie"> <emu-t>continue</emu-t> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Return <emu-xref href="#sec-completion-record-specification-type" id="_ref_7080"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref> { <var class="field">[[Type]]</var>: <emu-const>continue</emu-const>, <var class="field">[[Value]]</var>: <emu-const>empty</emu-const>, <var class="field">[[Target]]</var>: <emu-const>empty</emu-const> }.</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-sLmRG5Rx"> <emu-t>continue</emu-t> <emu-nt id="_ref_20781"><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>Let <var>label</var> be the <emu-xref aoid="StringValue" id="_ref_7081"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_20782"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>.</li><li>Return <emu-xref href="#sec-completion-record-specification-type" id="_ref_7082"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref> { <var class="field">[[Type]]</var>: <emu-const>continue</emu-const>, <var class="field">[[Value]]</var>: <emu-const>empty</emu-const>, <var class="field">[[Target]]</var>: <var>label</var> }.</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-break-statement"> <h1><span class="secnum">14.9</span> The <code>break</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="BreakStatement" params="Yield, Await" id="prod-BreakStatement"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tlip5zkt" id="prod-Jyx4vreG"> <emu-t>break</emu-t> <emu-t>;</emu-t> </emu-rhs> <emu-rhs a="nio0l2c9" id="prod-_aoH2Ltk"> <emu-t>break</emu-t> <emu-gann>[no <emu-nt id="_ref_20783"><a href="ecmascript-language-lexical-grammar.html#prod-LineTerminator">LineTerminator</a></emu-nt> here]</emu-gann> <emu-nt params="?Yield, ?Await" id="_ref_20784"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-break-statement-static-semantics-early-errors"> <h1><span class="secnum">14.9.1</span> Static Semantics: Early Errors</h1> <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"> <emu-t>break</emu-t> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if this <emu-nt id="_ref_20785"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a></emu-nt> is not nested, directly or indirectly (but not crossing function or <code>static</code> initialization block boundaries), within an <emu-nt id="_ref_20786"><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt> or a <emu-nt id="_ref_20787"><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a></emu-nt>. </li> </ul> </emu-clause> <emu-clause id="sec-break-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.9.2</span> Runtime Semantics: Evaluation</h1> <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-0ioO2qvc"> <emu-t>break</emu-t> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Return <emu-xref href="#sec-completion-record-specification-type" id="_ref_7083"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref> { <var class="field">[[Type]]</var>: <emu-const>break</emu-const>, <var class="field">[[Value]]</var>: <emu-const>empty</emu-const>, <var class="field">[[Target]]</var>: <emu-const>empty</emu-const> }.</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-eokV1qEw"> <emu-t>break</emu-t> <emu-nt id="_ref_20788"><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>Let <var>label</var> be the <emu-xref aoid="StringValue" id="_ref_7084"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_20789"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt>.</li><li>Return <emu-xref href="#sec-completion-record-specification-type" id="_ref_7085"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref> { <var class="field">[[Type]]</var>: <emu-const>break</emu-const>, <var class="field">[[Value]]</var>: <emu-const>empty</emu-const>, <var class="field">[[Target]]</var>: <var>label</var> }.</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-return-statement"> <h1><span class="secnum">14.10</span> The <code>return</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="ReturnStatement" params="Yield, Await" id="prod-ReturnStatement"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-ReturnStatement">ReturnStatement</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cykzgrgr" id="prod-zZYaGxQ8"> <emu-t>return</emu-t> <emu-t>;</emu-t> </emu-rhs> <emu-rhs a="tybfdyhl" id="prod-TbDZIC37"> <emu-t>return</emu-t> <emu-gann>[no <emu-nt id="_ref_20790"><a href="ecmascript-language-lexical-grammar.html#prod-LineTerminator">LineTerminator</a></emu-nt> here]</emu-gann> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20791"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-note><span class="note">Note</span><div class="note-contents"> <p>A <code>return</code> statement causes a function to cease execution and, in most cases, returns a value to the caller. If <emu-nt id="_ref_20792"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> is omitted, the return value is <emu-val>undefined</emu-val>. Otherwise, the return value is the value of <emu-nt id="_ref_20793"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>. A <code>return</code> statement may not actually return a value to the caller depending on surrounding context. For example, in a <code>try</code> block, a <code>return</code> statement's <emu-xref href="#sec-completion-record-specification-type" id="_ref_7086"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref> may be replaced with another <emu-xref href="#sec-completion-record-specification-type" id="_ref_7087"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref> during evaluation of the <code>finally</code> block.</p> </div></emu-note> <emu-clause id="sec-return-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.10.1</span> Runtime Semantics: Evaluation</h1> <emu-grammar><emu-production name="ReturnStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ReturnStatement">ReturnStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="cykzgrgr" id="prod-G_yzzAkQ"> <emu-t>return</emu-t> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Return <emu-xref aoid="ReturnCompletion" id="_ref_7088"><a href="ecmascript-data-types-and-values.html#sec-returncompletion">ReturnCompletion</a></emu-xref>(<emu-val>undefined</emu-val>).</li></ol></emu-alg> <emu-grammar><emu-production name="ReturnStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ReturnStatement">ReturnStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="tpdzx2lh" id="prod-iroo5DiR"> <emu-t>return</emu-t> <emu-nt id="_ref_20794"><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>Let <var>exprRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_7089"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20795"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>.</li><li>Let <var>exprValue</var> be ? <emu-xref aoid="GetValue" id="_ref_7090"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>exprRef</var>).</li><li>If <emu-xref aoid="GetGeneratorKind" id="_ref_7091"><a href="control-abstraction-objects.html#sec-getgeneratorkind">GetGeneratorKind</a></emu-xref>() is <emu-const>async</emu-const>, set <var>exprValue</var> to ? <emu-xref aoid="Await" id="_ref_7092"><a href="control-abstraction-objects.html#await" class="e-user-code">Await</a></emu-xref>(<var>exprValue</var>).</li><li>Return <emu-xref aoid="ReturnCompletion" id="_ref_7093"><a href="ecmascript-data-types-and-values.html#sec-returncompletion">ReturnCompletion</a></emu-xref>(<var>exprValue</var>).</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-with-statement" legacy=""><div class="attributes-tag"><emu-xref href="#sec-conformance" id="_ref_7112"><a href="conformance.html#sec-conformance">Legacy</a></emu-xref></div> <h1><span class="secnum">14.11</span> The <code>with</code> Statement</h1> <emu-note><span class="note">Note 1</span><div class="note-contents"> <p>Use of the <emu-xref href="#sec-conformance" id="_ref_7094"><a href="conformance.html#sec-conformance">Legacy</a></emu-xref> <code>with</code> statement is discouraged in new ECMAScript code. Consider alternatives that are permitted in both <emu-xref href="#sec-strict-mode-code" id="_ref_7095"><a href="ecmascript-language-source-code.html#sec-strict-mode-code">strict mode code</a></emu-xref> and <emu-xref href="#non-strict-code" id="_ref_7096"><a href="ecmascript-language-source-code.html#non-strict-code">non-strict code</a></emu-xref>, such as <emu-xref href="#sec-destructuring-assignment" id="_ref_454"><a href="ecmascript-language-expressions.html#sec-destructuring-assignment">destructuring assignment</a></emu-xref>.</p> </div></emu-note> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="WithStatement" params="Yield, Await, Return" id="prod-WithStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-WithStatement">WithStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="lo7bccts" id="prod-3HlNX-pI"> <emu-t>with</emu-t> <emu-t>(</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20796"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20797"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-note><span class="note">Note 2</span><div class="note-contents"> <p>The <code>with</code> statement adds an <emu-xref href="#sec-object-environment-records" id="_ref_7097"><a href="executable-code-and-execution-contexts.html#sec-object-environment-records">Object Environment Record</a></emu-xref> for a computed object to the lexical environment of the <emu-xref href="#running-execution-context" id="_ref_7098"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>. It then executes a statement using this augmented lexical environment. Finally, it restores the original lexical environment.</p> </div></emu-note> <emu-clause id="sec-with-statement-static-semantics-early-errors"> <h1><span class="secnum">14.11.1</span> Static Semantics: Early Errors</h1> <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"> <emu-t>with</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20798"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20799"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if <emu-xref aoid="IsStrict" id="_ref_7099"><a href="ecmascript-language-source-code.html#sec-isstrict">IsStrict</a></emu-xref>(this production) is <emu-val>true</emu-val>. </li> <li> It is a Syntax Error if <emu-xref aoid="IsLabelledFunction" id="_ref_7100"><a href="ecmascript-language-statements-and-declarations.html#sec-islabelledfunction">IsLabelledFunction</a></emu-xref>(<emu-nt id="_ref_20800"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>) is <emu-val>true</emu-val>. </li> </ul> <emu-note><span class="note">Note</span><div class="note-contents"> <p>It is only necessary to apply the second rule if the extension specified in <emu-xref href="#sec-labelled-function-declarations" id="_ref_455"><a href="additional-ecmascript-features-for-web-browsers.html#sec-labelled-function-declarations">B.3.1</a></emu-xref> is implemented.</p> </div></emu-note> </emu-clause> <emu-clause id="sec-with-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.11.2</span> Runtime Semantics: Evaluation</h1> <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-OowrNhmq"> <emu-t>with</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20801"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20802"><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>val</var> be ? <emu-xref aoid="Evaluation" id="_ref_7101"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20803"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>.</li><li>Let <var>obj</var> be ? <emu-xref aoid="ToObject" id="_ref_7102"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(? <emu-xref aoid="GetValue" id="_ref_7103"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>val</var>)).</li><li>Let <var>oldEnv</var> be the <emu-xref href="#running-execution-context" id="_ref_7104"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li><li>Let <var>newEnv</var> be <emu-xref aoid="NewObjectEnvironment" id="_ref_7105"><a href="executable-code-and-execution-contexts.html#sec-newobjectenvironment">NewObjectEnvironment</a></emu-xref>(<var>obj</var>, <emu-val>true</emu-val>, <var>oldEnv</var>).</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_7106"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>newEnv</var>.</li><li>Let <var>C</var> be <emu-xref aoid="Completion" id="_ref_7107"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7108"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20804"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>).</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_7109"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>oldEnv</var>.</li><li>Return ? <emu-xref aoid="UpdateEmpty" id="_ref_7110"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>C</var>, <emu-val>undefined</emu-val>).</li></ol></emu-alg> <emu-note><span class="note">Note</span><div class="note-contents"> <p>No matter how control leaves the embedded <emu-nt id="_ref_20805"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>, whether normally or by some form of <emu-xref href="#sec-completion-record-specification-type" id="_ref_7111"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref> or exception, the LexicalEnvironment is always restored to its former state.</p> </div></emu-note> </emu-clause> </emu-clause> <emu-clause id="sec-switch-statement"> <h1><span class="secnum">14.12</span> The <code>switch</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="SwitchStatement" params="Yield, Await, Return" id="prod-SwitchStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="drlywp4w" id="prod-3xRnqKfC"> <emu-t>switch</emu-t> <emu-t>(</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20806"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20807"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="CaseBlock" params="Yield, Await, Return" id="prod-CaseBlock"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="v-h2atfk" id="prod-q66ZlOHI"> <emu-t>{</emu-t> <emu-nt params="?Yield, ?Await, ?Return" optional="" id="_ref_20808"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>}</emu-t> </emu-rhs> <emu-rhs a="00sitdqr" id="prod-JuWwIrcZ"> <emu-t>{</emu-t> <emu-nt params="?Yield, ?Await, ?Return" optional="" id="_ref_20809"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20810"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await, ?Return" optional="" id="_ref_20811"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> <emu-t>}</emu-t> </emu-rhs> </emu-production> <emu-production name="CaseClauses" params="Yield, Await, Return" id="prod-CaseClauses"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="xpjvtgza"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20812"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="8r6dchoz" id="prod-sjZo1Z65"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20813"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20814"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="CaseClause" params="Yield, Await, Return" id="prod-CaseClause"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="zpq23qtn" id="prod-A-5Q_6I5"> <emu-t>case</emu-t> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20815"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>:</emu-t> <emu-nt params="?Yield, ?Await, ?Return" optional="" id="_ref_20816"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="DefaultClause" params="Yield, Await, Return" id="prod-DefaultClause"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="djnlaxcj" id="prod-HPF3iA_C"> <emu-t>default</emu-t> <emu-t>:</emu-t> <emu-nt params="?Yield, ?Await, ?Return" optional="" id="_ref_20817"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-switch-statement-static-semantics-early-errors"> <h1><span class="secnum">14.12.1</span> Static Semantics: Early Errors</h1> <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"> <emu-t>switch</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20818"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20819"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_7113"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_20820"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> contains any duplicate entries. </li> <li> It is a Syntax Error if any element of the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_7114"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_20821"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> also occurs in the <emu-xref aoid="VarDeclaredNames" id="_ref_7115"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_20822"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt>. </li> </ul> </emu-clause> <emu-clause id="sec-runtime-semantics-caseblockevaluation" type="sdo" aoid="CaseBlockEvaluation"> <h1><span class="secnum">14.12.2</span> Runtime Semantics: CaseBlockEvaluation</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_7116"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> CaseBlockEvaluation takes argument <var>input</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_7117"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7118"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> an <emu-xref href="#sec-ecmascript-language-types" id="_ref_7119"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7120"><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="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--oXyocga"> <emu-t>{</emu-t> <emu-t>}</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Return <emu-val>undefined</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="eerblgqb" id="prod-n6COrqbY"> <emu-t>{</emu-t> <emu-nt id="_ref_20823"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> <emu-t>}</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>V</var> be <emu-val>undefined</emu-val>.</li><li>Let <var>A</var> be the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_7121"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-nt id="_ref_20824"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> items in <emu-nt id="_ref_20825"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>, in source text order.</li><li>Let <var>found</var> be <emu-val>false</emu-val>.</li><li>For each <emu-nt id="_ref_20826"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <var>C</var> of <var>A</var>, do<ol><li>If <var>found</var> is <emu-val>false</emu-val>, then<ol><li>Set <var>found</var> to ? <emu-xref aoid="CaseClauseIsSelected" id="_ref_7122"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-caseclauseisselected" class="e-user-code">CaseClauseIsSelected</a></emu-xref>(<var>C</var>, <var>input</var>).</li></ol></li><li>If <var>found</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>R</var> be <emu-xref aoid="Completion" id="_ref_7123"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7124"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <var>C</var>).</li><li>If <var>R</var>.<var class="field">[[Value]]</var> is not <emu-const>empty</emu-const>, set <var>V</var> to <var>R</var>.<var class="field">[[Value]]</var>.</li><li>If <var>R</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7125"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, return ? <emu-xref aoid="UpdateEmpty" id="_ref_7126"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>R</var>, <var>V</var>).</li></ol></li></ol></li><li>Return <var>V</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="ududlhou" id="prod-bc5B_Aaw"> <emu-t>{</emu-t> <emu-nt optional="" id="_ref_20827"><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_20828"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt> <emu-nt optional="" id="_ref_20829"><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>Let <var>V</var> be <emu-val>undefined</emu-val>.</li><li>If the first <emu-nt id="_ref_20830"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, then<ol><li>Let <var>A</var> be the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_7127"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-nt id="_ref_20831"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> items in the first <emu-nt id="_ref_20832"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>, in source text order.</li></ol></li><li>Else,<ol><li>Let <var>A</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_7128"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></li><li>Let <var>found</var> be <emu-val>false</emu-val>.</li><li>For each <emu-nt id="_ref_20833"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <var>C</var> of <var>A</var>, do<ol><li>If <var>found</var> is <emu-val>false</emu-val>, then<ol><li>Set <var>found</var> to ? <emu-xref aoid="CaseClauseIsSelected" id="_ref_7129"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-caseclauseisselected" class="e-user-code">CaseClauseIsSelected</a></emu-xref>(<var>C</var>, <var>input</var>).</li></ol></li><li>If <var>found</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>R</var> be <emu-xref aoid="Completion" id="_ref_7130"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7131"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <var>C</var>).</li><li>If <var>R</var>.<var class="field">[[Value]]</var> is not <emu-const>empty</emu-const>, set <var>V</var> to <var>R</var>.<var class="field">[[Value]]</var>.</li><li>If <var>R</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7132"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, return ? <emu-xref aoid="UpdateEmpty" id="_ref_7133"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>R</var>, <var>V</var>).</li></ol></li></ol></li><li>Let <var>foundInB</var> be <emu-val>false</emu-val>.</li><li>If the second <emu-nt id="_ref_20834"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt> is present, then<ol><li>Let <var>B</var> be the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_7134"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-nt id="_ref_20835"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> items in the second <emu-nt id="_ref_20836"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>, in source text order.</li></ol></li><li>Else,<ol><li>Let <var>B</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_7135"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li></ol></li><li>If <var>found</var> is <emu-val>false</emu-val>, then<ol><li>For each <emu-nt id="_ref_20837"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <var>C</var> of <var>B</var>, do<ol><li>If <var>foundInB</var> is <emu-val>false</emu-val>, then<ol><li>Set <var>foundInB</var> to ? <emu-xref aoid="CaseClauseIsSelected" id="_ref_7136"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-caseclauseisselected" class="e-user-code">CaseClauseIsSelected</a></emu-xref>(<var>C</var>, <var>input</var>).</li></ol></li><li>If <var>foundInB</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>R</var> be <emu-xref aoid="Completion" id="_ref_7137"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7138"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20838"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <var>C</var>).</li><li>If <var>R</var>.<var class="field">[[Value]]</var> is not <emu-const>empty</emu-const>, set <var>V</var> to <var>R</var>.<var class="field">[[Value]]</var>.</li><li>If <var>R</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7139"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, return ? <emu-xref aoid="UpdateEmpty" id="_ref_7140"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>R</var>, <var>V</var>).</li></ol></li></ol></li></ol></li><li>If <var>foundInB</var> is <emu-val>true</emu-val>, return <var>V</var>.</li><li>Let <var>defaultR</var> be <emu-xref aoid="Completion" id="_ref_7141"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7142"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20839"><a href="ecmascript-language-statements-and-declarations.html#prod-DefaultClause">DefaultClause</a></emu-nt>).</li><li>If <var>defaultR</var>.<var class="field">[[Value]]</var> is not <emu-const>empty</emu-const>, set <var>V</var> to <var>defaultR</var>.<var class="field">[[Value]]</var>.</li><li>If <var>defaultR</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7143"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, return ? <emu-xref aoid="UpdateEmpty" id="_ref_7144"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>defaultR</var>, <var>V</var>).</li><li>NOTE: The following is another complete iteration of the second <emu-nt id="_ref_20840"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClauses">CaseClauses</a></emu-nt>.</li><li>For each <emu-nt id="_ref_20841"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <var>C</var> of <var>B</var>, do<ol><li>Let <var>R</var> be <emu-xref aoid="Completion" id="_ref_7145"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7146"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20842"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <var>C</var>).</li><li>If <var>R</var>.<var class="field">[[Value]]</var> is not <emu-const>empty</emu-const>, set <var>V</var> to <var>R</var>.<var class="field">[[Value]]</var>.</li><li>If <var>R</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7147"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, return ? <emu-xref aoid="UpdateEmpty" id="_ref_7148"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>R</var>, <var>V</var>).</li></ol></li><li>Return <var>V</var>.</li></ol></emu-alg> </emu-clause> <emu-clause id="sec-runtime-semantics-caseclauseisselected" type="abstract operation" oldids="sec-runtime-semantics-caseselectorevaluation" aoid="CaseClauseIsSelected"><span id="sec-runtime-semantics-caseselectorevaluation"></span> <h1><span class="secnum">14.12.3</span> CaseClauseIsSelected ( <var>C</var>, <var>input</var> )</h1> <p>The abstract operation CaseClauseIsSelected takes arguments <var>C</var> (a <emu-nt id="_ref_20843"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_7149"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>) and <var>input</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_7150"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7151"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a Boolean or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7152"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>. It determines whether <var>C</var> matches <var>input</var>. It performs the following steps when called:</p> <emu-alg><ol><li><emu-xref href="#assert" id="_ref_7153"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>C</var> is an instance of the production <emu-grammar><emu-production name="CaseClause" collapsed="" class=" inline"> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-CaseClause">CaseClause</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="x20nmjyd"> <emu-t>case</emu-t> <emu-nt id="_ref_20844"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>:</emu-t> <emu-nt optional="" id="_ref_20845"><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>.</li><li>Let <var>exprRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_7154"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of the <emu-nt id="_ref_20846"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> of <var>C</var>.</li><li>Let <var>clauseSelector</var> be ? <emu-xref aoid="GetValue" id="_ref_7155"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>exprRef</var>).</li><li>Return <emu-xref aoid="IsStrictlyEqual" id="_ref_7156"><a href="abstract-operations.html#sec-isstrictlyequal">IsStrictlyEqual</a></emu-xref>(<var>input</var>, <var>clauseSelector</var>).</li></ol></emu-alg> <emu-note><span class="note">Note</span><div class="note-contents"> <p>This operation does not execute <var>C</var>'s <emu-nt id="_ref_20847"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> (if any). The <emu-nt id="_ref_20848"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> algorithm uses its return value to determine which <emu-nt id="_ref_20849"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt> to start executing.</p> </div></emu-note> </emu-clause> <emu-clause id="sec-switch-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.12.4</span> Runtime Semantics: Evaluation</h1> <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-raA0Z_ll"> <emu-t>switch</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20850"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20851"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>exprRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_7157"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20852"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>.</li><li>Let <var>switchValue</var> be ? <emu-xref aoid="GetValue" id="_ref_7158"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>exprRef</var>).</li><li>Let <var>oldEnv</var> be the <emu-xref href="#running-execution-context" id="_ref_7159"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li><li>Let <var>blockEnv</var> be <emu-xref aoid="NewDeclarativeEnvironment" id="_ref_7160"><a href="executable-code-and-execution-contexts.html#sec-newdeclarativeenvironment">NewDeclarativeEnvironment</a></emu-xref>(<var>oldEnv</var>).</li><li>Perform <emu-xref aoid="BlockDeclarationInstantiation" id="_ref_7161"><a href="ecmascript-language-statements-and-declarations.html#sec-blockdeclarationinstantiation">BlockDeclarationInstantiation</a></emu-xref>(<emu-nt id="_ref_20853"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt>, <var>blockEnv</var>).</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_7162"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>blockEnv</var>.</li><li>Let <var>R</var> be <emu-xref aoid="Completion" id="_ref_7163"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="CaseBlockEvaluation" id="_ref_7164"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-caseblockevaluation" class="e-user-code">CaseBlockEvaluation</a></emu-xref> of <emu-nt id="_ref_20854"><a href="ecmascript-language-statements-and-declarations.html#prod-CaseBlock">CaseBlock</a></emu-nt> with argument <var>switchValue</var>).</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_7165"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>oldEnv</var>.</li><li>Return <var>R</var>.</li></ol></emu-alg> <emu-note><span class="note">Note</span><div class="note-contents"> <p>No matter how control leaves the <emu-nt id="_ref_20855"><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a></emu-nt> the LexicalEnvironment is always restored to its former state.</p> </div></emu-note> <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="amgxmkjg" id="prod-pfa8PeiE"> <emu-t>case</emu-t> <emu-nt id="_ref_20856"><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>Return <emu-const>empty</emu-const>.</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="eencdyk7" id="prod-SiRXsnRx"> <emu-t>case</emu-t> <emu-nt id="_ref_20857"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt> <emu-t>:</emu-t> <emu-nt id="_ref_20858"><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 ? <emu-xref aoid="Evaluation" id="_ref_7166"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20859"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</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="t5rjsefq" id="prod-f0Rq5Irs"> <emu-t>default</emu-t> <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="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="odaivkwk" id="prod-eOryVE-Y"> <emu-t>default</emu-t> <emu-t>:</emu-t> <emu-nt id="_ref_20860"><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 ? <emu-xref aoid="Evaluation" id="_ref_7167"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20861"><a href="ecmascript-language-statements-and-declarations.html#prod-StatementList">StatementList</a></emu-nt>.</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-labelled-statements"> <h1><span class="secnum">14.13</span> Labelled Statements</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="LabelledStatement" params="Yield, Await, Return" id="prod-LabelledStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="vhxkapdt" id="prod-0GG8m5VC"> <emu-nt params="?Yield, ?Await" id="_ref_20862"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>:</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20863"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="LabelledItem" params="Yield, Await, Return" id="prod-LabelledItem"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="septp5sa" id="prod-YaWmIZ1c"> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20864"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="d0nwjyav" id="prod-GPTeOVBJ"> <emu-nt params="?Yield, ?Await, ~Default" id="_ref_20865"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a><emu-mods><emu-params>[?Yield, ?Await, ~Default]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-note><span class="note">Note</span><div class="note-contents"> <p>A <emu-nt id="_ref_20866"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> may be prefixed by a label. Labelled statements are only used in conjunction with labelled <code>break</code> and <code>continue</code> statements. ECMAScript has no <code>goto</code> statement. A <emu-nt id="_ref_20867"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> can be part of a <emu-nt id="_ref_20868"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt>, which itself can be part of a <emu-nt id="_ref_20869"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt>, and so on. The labels introduced this way are collectively referred to as the “current label set” when describing the semantics of individual statements.</p> </div></emu-note> <emu-clause id="sec-labelled-statements-static-semantics-early-errors"> <h1><span class="secnum">14.13.1</span> Static Semantics: Early Errors</h1> <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"><emu-nt id="_ref_20870"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if any source text is matched by this production. </li> </ul> <emu-note><span class="note">Note</span><div class="note-contents"> <p>An alternative definition for this rule is provided in <emu-xref href="#sec-labelled-function-declarations" id="_ref_456"><a href="additional-ecmascript-features-for-web-browsers.html#sec-labelled-function-declarations">B.3.1</a></emu-xref>.</p> </div></emu-note> </emu-clause> <emu-clause id="sec-islabelledfunction" type="abstract operation" aoid="IsLabelledFunction"> <h1><span class="secnum">14.13.2</span> Static Semantics: IsLabelledFunction ( <var>stmt</var> )</h1> <p>The abstract operation IsLabelledFunction takes argument <var>stmt</var> (a <emu-nt id="_ref_20871"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> <emu-xref href="#sec-syntactic-grammar" id="_ref_7168"><a href="notational-conventions.html#sec-syntactic-grammar">Parse Node</a></emu-xref>) and returns a Boolean. It performs the following steps when called:</p> <emu-alg><ol><li>If <var>stmt</var> is not a <emu-nt id="_ref_20872"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt>, return <emu-val>false</emu-val>.</li><li>Let <var>item</var> be the <emu-nt id="_ref_20873"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> of <var>stmt</var>.</li><li>If <var>item</var> is <emu-grammar><emu-production name="LabelledItem" collapsed="" class=" inline"> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="-nqupnlb"><emu-nt id="_ref_20874"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt></emu-rhs> </emu-production> </emu-grammar>, return <emu-val>true</emu-val>.</li><li>Let <var>subStmt</var> be the <emu-nt id="_ref_20875"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> of <var>item</var>.</li><li>Return <emu-xref aoid="IsLabelledFunction" id="_ref_7169"><a href="ecmascript-language-statements-and-declarations.html#sec-islabelledfunction">IsLabelledFunction</a></emu-xref>(<var>subStmt</var>).</li></ol></emu-alg> </emu-clause> <emu-clause id="sec-labelled-statements-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.13.3</span> Runtime Semantics: Evaluation</h1> <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-z6MMrwO3"> <emu-nt id="_ref_20876"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt> <emu-t>:</emu-t> <emu-nt id="_ref_20877"><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 ? <emu-xref aoid="LabelledEvaluation" id="_ref_7170"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-labelledevaluation" class="e-user-code">LabelledEvaluation</a></emu-xref> of this <emu-nt id="_ref_20878"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt> with argument « ».</li></ol></emu-alg> </emu-clause> <emu-clause id="sec-runtime-semantics-labelledevaluation" oldids="sec-statement-semantics-runtime-semantics-labelledevaluation,sec-labelled-statements-runtime-semantics-labelledevaluation" type="sdo" aoid="LabelledEvaluation"><span id="sec-labelled-statements-runtime-semantics-labelledevaluation"></span><span id="sec-statement-semantics-runtime-semantics-labelledevaluation"></span> <h1><span class="secnum">14.13.4</span> Runtime Semantics: LabelledEvaluation</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_7171"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> LabelledEvaluation takes argument <var>labelSet</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_7172"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of Strings) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7173"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> either an <emu-xref href="#sec-ecmascript-language-types" id="_ref_7174"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or <emu-const>empty</emu-const>, or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7175"><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="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-pR7DNQsN"><emu-nt id="_ref_20879"><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>stmtResult</var> be <emu-xref aoid="Completion" id="_ref_7176"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="LoopEvaluation" id="_ref_7177"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-loopevaluation" class="e-user-code">LoopEvaluation</a></emu-xref> of <emu-nt id="_ref_20880"><a href="ecmascript-language-statements-and-declarations.html#prod-IterationStatement">IterationStatement</a></emu-nt> with argument <var>labelSet</var>).</li><li>If <var>stmtResult</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7178"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">break completion</a></emu-xref>, then<ol><li>If <var>stmtResult</var>.<var class="field">[[Target]]</var> is <emu-const>empty</emu-const>, then<ol><li>If <var>stmtResult</var>.<var class="field">[[Value]]</var> is <emu-const>empty</emu-const>, set <var>stmtResult</var> to <emu-xref aoid="NormalCompletion" id="_ref_7179"><a href="ecmascript-data-types-and-values.html#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-val>undefined</emu-val>).</li><li>Else, set <var>stmtResult</var> to <emu-xref aoid="NormalCompletion" id="_ref_7180"><a href="ecmascript-data-types-and-values.html#sec-normalcompletion">NormalCompletion</a></emu-xref>(<var>stmtResult</var>.<var class="field">[[Value]]</var>).</li></ol></li></ol></li><li>Return ? <var>stmtResult</var>.</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="nuio-xfp" id="prod-FSHcHfYw"><emu-nt id="_ref_20881"><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a></emu-nt></emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>stmtResult</var> be <emu-xref aoid="Completion" id="_ref_7181"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7182"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20882"><a href="ecmascript-language-statements-and-declarations.html#prod-SwitchStatement">SwitchStatement</a></emu-nt>).</li><li>If <var>stmtResult</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7183"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">break completion</a></emu-xref>, then<ol><li>If <var>stmtResult</var>.<var class="field">[[Target]]</var> is <emu-const>empty</emu-const>, then<ol><li>If <var>stmtResult</var>.<var class="field">[[Value]]</var> is <emu-const>empty</emu-const>, set <var>stmtResult</var> to <emu-xref aoid="NormalCompletion" id="_ref_7184"><a href="ecmascript-data-types-and-values.html#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-val>undefined</emu-val>).</li><li>Else, set <var>stmtResult</var> to <emu-xref aoid="NormalCompletion" id="_ref_7185"><a href="ecmascript-data-types-and-values.html#sec-normalcompletion">NormalCompletion</a></emu-xref>(<var>stmtResult</var>.<var class="field">[[Value]]</var>).</li></ol></li></ol></li><li>Return ? <var>stmtResult</var>.</li></ol></emu-alg> <emu-note><span class="note">Note 1</span><div class="note-contents"> <p>A <emu-nt id="_ref_20883"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakableStatement">BreakableStatement</a></emu-nt> is one that can be exited via an unlabelled <emu-nt id="_ref_20884"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a></emu-nt>.</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-GnWrgP5w"> <emu-nt id="_ref_20885"><a href="ecmascript-language-expressions.html#prod-LabelIdentifier">LabelIdentifier</a></emu-nt> <emu-t>:</emu-t> <emu-nt id="_ref_20886"><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_7186"><a href="ecmascript-language-expressions.html#sec-static-semantics-stringvalue">StringValue</a></emu-xref> of <emu-nt id="_ref_20887"><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_7187"><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>Let <var>stmtResult</var> be <emu-xref aoid="Completion" id="_ref_7188"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="LabelledEvaluation" id="_ref_7189"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-labelledevaluation" class="e-user-code">LabelledEvaluation</a></emu-xref> of <emu-nt id="_ref_20888"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledItem">LabelledItem</a></emu-nt> with argument <var>newLabelSet</var>).</li><li>If <var>stmtResult</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7190"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">break completion</a></emu-xref> and <var>stmtResult</var>.<var class="field">[[Target]]</var> is <var>label</var>, then<ol><li>Set <var>stmtResult</var> to <emu-xref aoid="NormalCompletion" id="_ref_7191"><a href="ecmascript-data-types-and-values.html#sec-normalcompletion">NormalCompletion</a></emu-xref>(<var>stmtResult</var>.<var class="field">[[Value]]</var>).</li></ol></li><li>Return ? <var>stmtResult</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-3whCJM4e"><emu-nt id="_ref_20889"><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-xref aoid="Evaluation" id="_ref_7192"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20890"><a href="ecmascript-language-functions-and-classes.html#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>.</li></ol></emu-alg> <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="gre9qn6e" id="prod-yFnpxPRG"> <emu-nt id="_ref_20891"><a href="ecmascript-language-statements-and-declarations.html#prod-BlockStatement">BlockStatement</a></emu-nt> </emu-rhs> <emu-rhs a="iwwn8atx" id="prod-Ebz5cXwH"> <emu-nt id="_ref_20892"><a href="ecmascript-language-statements-and-declarations.html#prod-VariableStatement">VariableStatement</a></emu-nt> </emu-rhs> <emu-rhs a="cziqu-45" id="prod-qI_HU3XB"> <emu-nt id="_ref_20893"><a href="ecmascript-language-statements-and-declarations.html#prod-EmptyStatement">EmptyStatement</a></emu-nt> </emu-rhs> <emu-rhs a="gsqkt2bv" id="prod-aRwgRfmk"> <emu-nt id="_ref_20894"><a href="ecmascript-language-statements-and-declarations.html#prod-ExpressionStatement">ExpressionStatement</a></emu-nt> </emu-rhs> <emu-rhs a="skawbrez" id="prod-RLprpFgP"> <emu-nt id="_ref_20895"><a href="ecmascript-language-statements-and-declarations.html#prod-IfStatement">IfStatement</a></emu-nt> </emu-rhs> <emu-rhs a="hx0ynljx" id="prod-4r9ecQgz"> <emu-nt id="_ref_20896"><a href="ecmascript-language-statements-and-declarations.html#prod-ContinueStatement">ContinueStatement</a></emu-nt> </emu-rhs> <emu-rhs a="q4uv-sm3" id="prod-VyFRxEGQ"> <emu-nt id="_ref_20897"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakStatement">BreakStatement</a></emu-nt> </emu-rhs> <emu-rhs a="qm95e4wi" id="prod-Hgg1wqRZ"> <emu-nt id="_ref_20898"><a href="ecmascript-language-statements-and-declarations.html#prod-ReturnStatement">ReturnStatement</a></emu-nt> </emu-rhs> <emu-rhs a="ye6wwgts" id="prod-wFzN_sG0"> <emu-nt id="_ref_20899"><a href="ecmascript-language-statements-and-declarations.html#prod-WithStatement">WithStatement</a></emu-nt> </emu-rhs> <emu-rhs a="hntake-o" id="prod-q_qjzdry"> <emu-nt id="_ref_20900"><a href="ecmascript-language-statements-and-declarations.html#prod-ThrowStatement">ThrowStatement</a></emu-nt> </emu-rhs> <emu-rhs a="ex_crokj" id="prod-7PJ339VQ"> <emu-nt id="_ref_20901"><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a></emu-nt> </emu-rhs> <emu-rhs a="iseu28qi" id="prod-O3yX8Gg7"> <emu-nt id="_ref_20902"><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 ? <emu-xref aoid="Evaluation" id="_ref_7193"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20903"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt>.</li></ol></emu-alg> <emu-note><span class="note">Note 2</span><div class="note-contents"> <p>The only two productions of <emu-nt id="_ref_20904"><a href="ecmascript-language-statements-and-declarations.html#prod-Statement">Statement</a></emu-nt> which have special semantics for LabelledEvaluation are <emu-nt id="_ref_20905"><a href="ecmascript-language-statements-and-declarations.html#prod-BreakableStatement">BreakableStatement</a></emu-nt> and <emu-nt id="_ref_20906"><a href="ecmascript-language-statements-and-declarations.html#prod-LabelledStatement">LabelledStatement</a></emu-nt>.</p> </div></emu-note> </emu-clause> </emu-clause> <emu-clause id="sec-throw-statement"> <h1><span class="secnum">14.14</span> The <code>throw</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="ThrowStatement" params="Yield, Await" id="prod-ThrowStatement"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-ThrowStatement">ThrowStatement</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="q_cybpdb" id="prod-E5ckYtCh"> <emu-t>throw</emu-t> <emu-gann>[no <emu-nt id="_ref_20907"><a href="ecmascript-language-lexical-grammar.html#prod-LineTerminator">LineTerminator</a></emu-nt> here]</emu-gann> <emu-nt params="+In, ?Yield, ?Await" id="_ref_20908"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a><emu-mods><emu-params>[+In, ?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-throw-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.14.1</span> Runtime Semantics: Evaluation</h1> <emu-grammar><emu-production name="ThrowStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-ThrowStatement">ThrowStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="lauy4mhi" id="prod-fEMuit66"> <emu-t>throw</emu-t> <emu-nt id="_ref_20909"><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>Let <var>exprRef</var> be ? <emu-xref aoid="Evaluation" id="_ref_7194"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20910"><a href="ecmascript-language-expressions.html#prod-Expression">Expression</a></emu-nt>.</li><li>Let <var>exprValue</var> be ? <emu-xref aoid="GetValue" id="_ref_7195"><a href="ecmascript-data-types-and-values.html#sec-getvalue" class="e-user-code">GetValue</a></emu-xref>(<var>exprRef</var>).</li><li>Return <emu-xref aoid="ThrowCompletion" id="_ref_7196"><a href="ecmascript-data-types-and-values.html#sec-throwcompletion">ThrowCompletion</a></emu-xref>(<var>exprValue</var>).</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-try-statement"> <h1><span class="secnum">14.15</span> The <code>try</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="TryStatement" params="Yield, Await, Return" id="prod-TryStatement"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-TryStatement">TryStatement</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="eqx7gx8m" id="prod-wD-TPYub"> <emu-t>try</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20911"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20912"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="ayio9dod" id="prod-EYIEedje"> <emu-t>try</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20913"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20914"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="yfzmez3t" id="prod-cfkI0NCS"> <emu-t>try</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20915"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20916"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20917"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="Catch" params="Yield, Await, Return" id="prod-Catch"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="gk6mks18" id="prod-IbvHsEaf"> <emu-t>catch</emu-t> <emu-t>(</emu-t> <emu-nt params="?Yield, ?Await" id="_ref_20918"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> <emu-t>)</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20919"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="vi_srlx8" id="prod-ybInUotF"> <emu-t>catch</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20920"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="Finally" params="Yield, Await, Return" id="prod-Finally"> <emu-nt params="Yield, Await, Return"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a><emu-mods><emu-params>[Yield, Await, Return]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="e9akqlxo"> <emu-t>finally</emu-t> <emu-nt params="?Yield, ?Await, ?Return" id="_ref_20921"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a><emu-mods><emu-params>[?Yield, ?Await, ?Return]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> <emu-production name="CatchParameter" params="Yield, Await" id="prod-CatchParameter"> <emu-nt params="Yield, Await"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a><emu-mods><emu-params>[Yield, Await]</emu-params></emu-mods></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ir-rfjfi"> <emu-nt params="?Yield, ?Await" id="_ref_20922"><a href="ecmascript-language-expressions.html#prod-BindingIdentifier">BindingIdentifier</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> <emu-rhs a="nridwfya"> <emu-nt params="?Yield, ?Await" id="_ref_20923"><a href="ecmascript-language-statements-and-declarations.html#prod-BindingPattern">BindingPattern</a><emu-mods><emu-params>[?Yield, ?Await]</emu-params></emu-mods></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-note><span class="note">Note</span><div class="note-contents"> <p>The <code>try</code> statement encloses a block of code in which an exceptional condition can occur, such as a runtime error or a <code>throw</code> statement. The <code>catch</code> clause provides the exception-handling code. When a catch clause catches an exception, its <emu-nt id="_ref_20924"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt> is bound to that exception.</p> </div></emu-note> <emu-clause id="sec-try-statement-static-semantics-early-errors"> <h1><span class="secnum">14.15.1</span> Static Semantics: Early Errors</h1> <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"> <emu-t>catch</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20925"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20926"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <ul> <li> It is a Syntax Error if the <emu-xref aoid="BoundNames" id="_ref_7197"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20927"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt> contains any duplicate elements. </li> <li> It is a Syntax Error if any element of the <emu-xref aoid="BoundNames" id="_ref_7198"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20928"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt> also occurs in the <emu-xref aoid="LexicallyDeclaredNames" id="_ref_7199"><a href="syntax-directed-operations.html#sec-static-semantics-lexicallydeclarednames">LexicallyDeclaredNames</a></emu-xref> of <emu-nt id="_ref_20929"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>. </li> <li> It is a Syntax Error if any element of the <emu-xref aoid="BoundNames" id="_ref_7200"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20930"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt> also occurs in the <emu-xref aoid="VarDeclaredNames" id="_ref_7201"><a href="syntax-directed-operations.html#sec-static-semantics-vardeclarednames">VarDeclaredNames</a></emu-xref> of <emu-nt id="_ref_20931"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>. </li> </ul> <emu-note><span class="note">Note</span><div class="note-contents"> <p>An alternative <emu-xref href="#sec-static-semantic-rules" id="_ref_7202"><a href="notational-conventions.html#sec-static-semantic-rules">static semantics</a></emu-xref> for this production is given in <emu-xref href="#sec-variablestatements-in-catch-blocks" id="_ref_457"><a href="additional-ecmascript-features-for-web-browsers.html#sec-variablestatements-in-catch-blocks">B.3.4</a></emu-xref>.</p> </div></emu-note> </emu-clause> <emu-clause id="sec-runtime-semantics-catchclauseevaluation" type="sdo" aoid="CatchClauseEvaluation"> <h1><span class="secnum">14.15.2</span> Runtime Semantics: CatchClauseEvaluation</h1> <p>The <emu-xref href="#sec-algorithm-conventions-syntax-directed-operations" id="_ref_7203"><a href="notational-conventions.html#sec-algorithm-conventions-syntax-directed-operations">syntax-directed operation</a></emu-xref> CatchClauseEvaluation takes argument <var>thrownValue</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_7204"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7205"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> either an <emu-xref href="#sec-ecmascript-language-types" id="_ref_7206"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or <emu-const>empty</emu-const>, or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7207"><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="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-tivA4mFO"> <emu-t>catch</emu-t> <emu-t>(</emu-t> <emu-nt id="_ref_20932"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt> <emu-t>)</emu-t> <emu-nt id="_ref_20933"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>Let <var>oldEnv</var> be the <emu-xref href="#running-execution-context" id="_ref_7208"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li><li>Let <var>catchEnv</var> be <emu-xref aoid="NewDeclarativeEnvironment" id="_ref_7209"><a href="executable-code-and-execution-contexts.html#sec-newdeclarativeenvironment">NewDeclarativeEnvironment</a></emu-xref>(<var>oldEnv</var>).</li><li>For each element <var>argName</var> of the <emu-xref aoid="BoundNames" id="_ref_7210"><a href="syntax-directed-operations.html#sec-static-semantics-boundnames">BoundNames</a></emu-xref> of <emu-nt id="_ref_20934"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt>, do<ol><li>Perform ! <var>catchEnv</var>.CreateMutableBinding(<var>argName</var>, <emu-val>false</emu-val>).</li></ol></li><li>Set the <emu-xref href="#running-execution-context" id="_ref_7211"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>catchEnv</var>.</li><li>Let <var>status</var> be <emu-xref aoid="Completion" id="_ref_7212"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="BindingInitialization" id="_ref_7213"><a href="syntax-directed-operations.html#sec-runtime-semantics-bindinginitialization" class="e-user-code">BindingInitialization</a></emu-xref> of <emu-nt id="_ref_20935"><a href="ecmascript-language-statements-and-declarations.html#prod-CatchParameter">CatchParameter</a></emu-nt> with arguments <var>thrownValue</var> and <var>catchEnv</var>).</li><li>If <var>status</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_7214"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, then<ol><li>Set the <emu-xref href="#running-execution-context" id="_ref_7215"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>oldEnv</var>.</li><li>Return ? <var>status</var>.</li></ol></li><li>Let <var>B</var> be <emu-xref aoid="Completion" id="_ref_7216"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7217"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20936"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>).</li><li>Set the <emu-xref href="#running-execution-context" id="_ref_7218"><a href="executable-code-and-execution-contexts.html#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment to <var>oldEnv</var>.</li><li>Return ? <var>B</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="oyp2rsut" id="prod-7Gz_IT_v"> <emu-t>catch</emu-t> <emu-nt id="_ref_20937"><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="Evaluation" id="_ref_7219"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20938"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>.</li></ol></emu-alg> <emu-note><span class="note">Note</span><div class="note-contents"> <p>No matter how control leaves the <emu-nt id="_ref_20939"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> the LexicalEnvironment is always restored to its former state.</p> </div></emu-note> </emu-clause> <emu-clause id="sec-try-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.15.3</span> Runtime Semantics: Evaluation</h1> <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-TjGqXGk4"> <emu-t>try</emu-t> <emu-nt id="_ref_20940"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> <emu-nt id="_ref_20941"><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>B</var> be <emu-xref aoid="Completion" id="_ref_7220"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7221"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20942"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>).</li><li>If <var>B</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7222"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>, let <var>C</var> be <emu-xref aoid="Completion" id="_ref_7223"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="CatchClauseEvaluation" id="_ref_7224"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-catchclauseevaluation" class="e-user-code">CatchClauseEvaluation</a></emu-xref> of <emu-nt id="_ref_20943"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> with argument <var>B</var>.<var class="field">[[Value]]</var>).</li><li>Else, let <var>C</var> be <var>B</var>.</li><li>Return ? <emu-xref aoid="UpdateEmpty" id="_ref_7225"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>C</var>, <emu-val>undefined</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="xsakufa6" id="prod-BNnGZMkj"> <emu-t>try</emu-t> <emu-nt id="_ref_20944"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> <emu-nt id="_ref_20945"><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>B</var> be <emu-xref aoid="Completion" id="_ref_7226"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7227"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20946"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>).</li><li>Let <var>F</var> be <emu-xref aoid="Completion" id="_ref_7228"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7229"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20947"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>).</li><li>If <var>F</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7230"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion</a></emu-xref>, set <var>F</var> to <var>B</var>.</li><li>Return ? <emu-xref aoid="UpdateEmpty" id="_ref_7231"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>F</var>, <emu-val>undefined</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="gxlzfd5s" id="prod-fUrDxi55"> <emu-t>try</emu-t> <emu-nt id="_ref_20948"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt> <emu-nt id="_ref_20949"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> <emu-nt id="_ref_20950"><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>B</var> be <emu-xref aoid="Completion" id="_ref_7232"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7233"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20951"><a href="ecmascript-language-statements-and-declarations.html#prod-Block">Block</a></emu-nt>).</li><li>If <var>B</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7234"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>, let <var>C</var> be <emu-xref aoid="Completion" id="_ref_7235"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="CatchClauseEvaluation" id="_ref_7236"><a href="ecmascript-language-statements-and-declarations.html#sec-runtime-semantics-catchclauseevaluation" class="e-user-code">CatchClauseEvaluation</a></emu-xref> of <emu-nt id="_ref_20952"><a href="ecmascript-language-statements-and-declarations.html#prod-Catch">Catch</a></emu-nt> with argument <var>B</var>.<var class="field">[[Value]]</var>).</li><li>Else, let <var>C</var> be <var>B</var>.</li><li>Let <var>F</var> be <emu-xref aoid="Completion" id="_ref_7237"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Evaluation" id="_ref_7238"><a href="syntax-directed-operations.html#sec-evaluation" class="e-user-code">Evaluation</a></emu-xref> of <emu-nt id="_ref_20953"><a href="ecmascript-language-statements-and-declarations.html#prod-Finally">Finally</a></emu-nt>).</li><li>If <var>F</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_7239"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion</a></emu-xref>, set <var>F</var> to <var>C</var>.</li><li>Return ? <emu-xref aoid="UpdateEmpty" id="_ref_7240"><a href="ecmascript-data-types-and-values.html#sec-updateempty">UpdateEmpty</a></emu-xref>(<var>F</var>, <emu-val>undefined</emu-val>).</li></ol></emu-alg> </emu-clause> </emu-clause> <emu-clause id="sec-debugger-statement"> <h1><span class="secnum">14.16</span> The <code>debugger</code> Statement</h1> <h2>Syntax</h2> <emu-grammar type="definition"><emu-production name="DebuggerStatement" id="prod-DebuggerStatement"> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DebuggerStatement">DebuggerStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ns5hclvt" id="prod-Kx8jxmHA"> <emu-t>debugger</emu-t> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-clause id="sec-debugger-statement-runtime-semantics-evaluation" type="sdo"> <h1><span class="secnum">14.16.1</span> Runtime Semantics: Evaluation</h1> <emu-note><span class="note">Note</span><div class="note-contents"> <p>Evaluating a <emu-nt id="_ref_20954"><a href="ecmascript-language-statements-and-declarations.html#prod-DebuggerStatement">DebuggerStatement</a></emu-nt> may allow an implementation to cause a breakpoint when run under a debugger. If a debugger is not present or active this statement has no observable effect.</p> </div></emu-note> <emu-grammar><emu-production name="DebuggerStatement" collapsed=""> <emu-nt><a href="ecmascript-language-statements-and-declarations.html#prod-DebuggerStatement">DebuggerStatement</a></emu-nt> <emu-geq>:</emu-geq> <emu-rhs a="ns5hclvt" id="prod-eDCsgVlr"> <emu-t>debugger</emu-t> <emu-t>;</emu-t> </emu-rhs> </emu-production> </emu-grammar> <emu-alg><ol><li>If an <emu-xref href="#implementation-defined" id="_ref_7241"><a href="overview.html#implementation-defined">implementation-defined</a></emu-xref> debugging facility is available and enabled, then<ol><li>Perform an <emu-xref href="#implementation-defined" id="_ref_7242"><a href="overview.html#implementation-defined">implementation-defined</a></emu-xref> debugging action.</li><li>Return a new <emu-xref href="#implementation-defined" id="_ref_7243"><a href="overview.html#implementation-defined">implementation-defined</a></emu-xref> <emu-xref href="#sec-completion-record-specification-type" id="_ref_7244"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref>.</li></ol></li><li>Else,<ol><li>Return <emu-const>empty</emu-const>.</li></ol></li></ol></emu-alg> </emu-clause> </emu-clause> </emu-clause></div></body>