mirror of
https://github.com/bendtherules/ask262.git
synced 2026-08-18 21:31:46 +00:00
1614 lines
1018 KiB
HTML
1614 lines
1018 KiB
HTML
<!doctype html><html lang="en-GB-oxendict">
|
||
<head><meta name="viewport" content="width=device-width, initial-scale=1"><meta charset="utf-8"><meta property="og:image" content="https://tc39.es/ecmarkup/ecma-logo.png"><meta property="og:title" content="ECMAScript® 2026 Language Specification"><meta property="og:description" content="Introduction
|
||
This Ecma Standard defines the ECMAScript 2026 Language. It is the seventeenth edition of the ECMAScript Language Specification. ECMAScript is based on several originating technologies, the most well-known being JavaScript (Netscape) and JScript (Microsoft). The language was invent">
|
||
<link rel="icon" href="../img/favicon.ico">
|
||
<link rel="stylesheet" href="../assets/css/ecmarkup.css"><link rel="stylesheet" href="../assets/css/print.css" media="print">
|
||
|
||
<title>ECMAScript® 2026 Language Specification</title><script src="../assets/js/multipage.js?cache=Wu2V1pj2" defer=""></script><script src="../assets/js/ecmarkup.js?cache=BPFBckdu" defer=""></script><link rel="canonical" href="../#sec-indexed-collections"></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-evaluation-order" title="Evaluation Order"><span class="secnum">5.2.1</span> Evaluation Order</a></li><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.2</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.3</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.4</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.4.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.4.2</span> Throw an Exception</a></li><li><span class="item-toggle-none"></span><a href="notational-conventions.html#sec-shorthands-for-unwrapping-completion-records" title="Shorthands for Unwrapping Completion Records"><span class="secnum">5.2.4.3</span> Shorthands for Unwrapping Completion Records</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.4.4</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.5</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.6</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.7</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.8</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-getoptionsobject" title="GetOptionsObject ( options )"><span class="secnum">7.3.36</span> GetOptionsObject ( <var>options</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.37</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-iteratorcloseall" title="IteratorCloseAll ( iters, completion )"><span class="secnum">7.4.12</span> IteratorCloseAll ( <var>iters</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.13</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.14</span> AsyncIteratorClose ( <var>iteratorRecord</var>, <var>completion</var> )</a></li><li><span class="item-toggle-none"></span><a href="abstract-operations.html#sec-ifabruptcloseasynciterator" title="IfAbruptCloseAsyncIterator ( value, iteratorRecord )"><span class="secnum">7.4.15</span> IfAbruptCloseAsyncIterator ( <var>value</var>, <var>iteratorRecord</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.16</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.17</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.18</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-getthisbinding" title="GetThisBinding ( )"><span class="secnum">9.1.1.1.9</span> GetThisBinding ( )</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.10</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.11</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-getthisbinding" title="GetThisBinding ( )"><span class="secnum">9.1.1.2.9</span> GetThisBinding ( )</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.10</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.11</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 ( envRec, V )"><span class="secnum">9.1.1.3.1</span> BindThisValue ( <var>envRec</var>, <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-getthisbinding" title="GetThisBinding ( )"><span class="secnum">9.1.1.3.3</span> GetThisBinding ( )</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.4</span> HasSuperBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-getsuperbase" title="GetSuperBase ( envRec )"><span class="secnum">9.1.1.3.5</span> GetSuperBase ( <var>envRec</var> )</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-getthisbinding" title="GetThisBinding ( )"><span class="secnum">9.1.1.4.9</span> GetThisBinding ( )</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.10</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.11</span> WithBaseObject ( )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-haslexicaldeclaration" title="HasLexicalDeclaration ( envRec, N )"><span class="secnum">9.1.1.4.12</span> HasLexicalDeclaration ( <var>envRec</var>, <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-hasrestrictedglobalproperty" title="HasRestrictedGlobalProperty ( envRec, N )"><span class="secnum">9.1.1.4.13</span> HasRestrictedGlobalProperty ( <var>envRec</var>, <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-candeclareglobalvar" title="CanDeclareGlobalVar ( envRec, N )"><span class="secnum">9.1.1.4.14</span> CanDeclareGlobalVar ( <var>envRec</var>, <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-candeclareglobalfunction" title="CanDeclareGlobalFunction ( envRec, N )"><span class="secnum">9.1.1.4.15</span> CanDeclareGlobalFunction ( <var>envRec</var>, <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-createglobalvarbinding" title="CreateGlobalVarBinding ( envRec, N, D )"><span class="secnum">9.1.1.4.16</span> CreateGlobalVarBinding ( <var>envRec</var>, <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 ( envRec, N, V, D )"><span class="secnum">9.1.1.4.17</span> CreateGlobalFunctionBinding ( <var>envRec</var>, <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 ( envRec, N, M, N2 )"><span class="secnum">9.1.1.5.5</span> CreateImportBinding ( <var>envRec</var>, <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><li><span class="item-toggle-none"></span><a href="executable-code-and-execution-contexts.html#sec-IncrementModuleAsyncEvaluationCount" title="IncrementModuleAsyncEvaluationCount ( )"><span class="secnum">9.6.3</span> IncrementModuleAsyncEvaluationCount ( )</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 [ , async ] ] ] ] )"><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> [ , <var>async</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-none"></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></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-expressions.html#sec-evaluate-import-call" title="EvaluateImportCall ( specifierExpression [ , optionsExpression ] )"><span class="secnum">13.3.10.2</span> EvaluateImportCall ( <var>specifierExpression</var> [ , <var>optionsExpression</var> ] )</a></li><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.3</span> ContinueDynamicImport ( <var>promiseCapability</var>, <var>moduleCompletion</var> )</a></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">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-modulerequest-record" title="ModuleRequest Records"><span class="secnum">16.2.1.3</span> ModuleRequest Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-ModuleRequestsEqual" title="ModuleRequestsEqual ( left, right )"><span class="secnum">16.2.1.3.1</span> ModuleRequestsEqual ( <var>left</var>, <var>right</var> )</a></li></ol></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.4</span> SS: ModuleRequests</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-abstract-module-records" title="Abstract Module Records"><span class="secnum">16.2.1.5</span> Abstract Module Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-EvaluateModuleSync" title="EvaluateModuleSync ( module )"><span class="secnum">16.2.1.5.1</span> EvaluateModuleSync ( <var>module</var> )</a></li></ol></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.6</span> Cyclic Module Records</a><ol class="toc"><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-cyclic-module-record-module-record-methods" title="Implementation of Module Record Abstract Methods"><span class="secnum">16.2.1.6.1</span> Implementation of Module Record Abstract Methods</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.6.1.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.6.1.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.6.1.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.6.1.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.6.1.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.6.1.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.6.1.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.6.1.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.6.1.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.6.1.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.6.1.3.5</span> AsyncModuleExecutionRejected ( <var>module</var>, <var>error</var> )</a></li></ol></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.6.2</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.7</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.7.1</span> ParseModule ( <var>sourceText</var>, <var>realm</var>, <var>hostDefined</var> )</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-source-text-module-record-module-record-methods" title="Implementation of Module Record Abstract Methods"><span class="secnum">16.2.1.7.2</span> Implementation of Module Record Abstract Methods</a><ol class="toc"><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.7.2.1</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.7.2.2</span> ResolveExport ( <var>exportName</var> [ , <var>resolveSet</var> ] )</a></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-source-text-module-record-cyclic-module-record-methods" title="Implementation of Cyclic Module Record Abstract Methods"><span class="secnum">16.2.1.7.3</span> Implementation of Cyclic Module Record Abstract Methods</a><ol class="toc"><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.7.3.1</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.7.3.2</span> ExecuteModule ( [ <var>capability</var> ] )</a></li></ol></li></ol></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-synthetic-module-records" title="Synthetic Module Records"><span class="secnum">16.2.1.8</span> Synthetic Module Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-create-default-export-synthetic-module" title="CreateDefaultExportSyntheticModule ( defaultExport )"><span class="secnum">16.2.1.8.1</span> CreateDefaultExportSyntheticModule ( <var>defaultExport</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-parse-json-module" title="ParseJSONModule ( source )"><span class="secnum">16.2.1.8.2</span> ParseJSONModule ( <var>source</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-setsyntheticmoduleexport" title="SetSyntheticModuleExport ( module, exportName, exportValue )"><span class="secnum">16.2.1.8.3</span> SetSyntheticModuleExport ( <var>module</var>, <var>exportName</var>, <var>exportValue</var> )</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-smr-module-record-methods" title="Implementation of Module Record Abstract Methods"><span class="secnum">16.2.1.8.4</span> Implementation of Module Record Abstract Methods</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-smr-LoadRequestedModules" title="LoadRequestedModules ( [ hostDefined ] )"><span class="secnum">16.2.1.8.4.1</span> LoadRequestedModules ( [ <var>hostDefined</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-smr-getexportednames" title="GetExportedNames ( [ exportStarSet ] )"><span class="secnum">16.2.1.8.4.2</span> GetExportedNames ( [ <var>exportStarSet</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-smr-resolveexport" title="ResolveExport ( exportName [ , resolveSet ] )"><span class="secnum">16.2.1.8.4.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-smr-Link" title="Link ( )"><span class="secnum">16.2.1.8.4.4</span> Link ( )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-smr-Evaluate" title="Evaluate ( )"><span class="secnum">16.2.1.8.4.5</span> Evaluate ( )</a></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-GetImportedModule" title="GetImportedModule ( referrer, request )"><span class="secnum">16.2.1.9</span> GetImportedModule ( <var>referrer</var>, <var>request</var> )</a></li><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-HostLoadImportedModule" title="HostLoadImportedModule ( referrer, moduleRequest, hostDefined, payload )"><span class="secnum">16.2.1.10</span> HostLoadImportedModule ( <var>referrer</var>, <var>moduleRequest</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, moduleRequest, payload, result )"><span class="secnum">16.2.1.11</span> FinishLoadingImportedModule ( <var>referrer</var>, <var>moduleRequest</var>, <var>payload</var>, <var>result</var> )</a></li><li><span class="item-toggle">+</span><a href="ecmascript-language-scripts-and-modules.html#sec-AllImportAttributesSupported" title="AllImportAttributesSupported ( attributes )"><span class="secnum">16.2.1.12</span> AllImportAttributesSupported ( <var>attributes</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-hostgetsupportedimportattributes" title="HostGetSupportedImportAttributes ( )"><span class="secnum">16.2.1.12.1</span> HostGetSupportedImportAttributes ( )</a></li></ol></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.13</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.14</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><li><span class="item-toggle-none"></span><a href="ecmascript-language-scripts-and-modules.html#sec-withclausetoattributes" title="Static Semantics: WithClauseToAttributes"><span class="secnum">16.2.2.4</span> SS: WithClauseToAttributes</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-float16array" title="Float16Array ( . . . )"><span class="secnum">19.3.13</span> Float16Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-float32array" title="Float32Array ( . . . )"><span class="secnum">19.3.14</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.15</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.16</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.17</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.18</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.19</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.20</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.21</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.22</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.23</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.24</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.25</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.26</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.27</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.28</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.29</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.30</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.31</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.32</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.33</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.34</span> TypeError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="global-object.html#sec-constructor-properties-of-the-global-object-uint8array" title="Uint8Array ( . . . )"><span class="secnum">19.3.35</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.36</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.37</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.38</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.39</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.40</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.41</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.42</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.iserror" title="Error.isError ( arg )"><span class="secnum">20.5.2.1</span> Error.isError ( <var>arg</var> )</a></li><li><span class="item-toggle-none"></span><a href="fundamental-objects.html#sec-error.prototype" title="Error.prototype"><span class="secnum">20.5.2.2</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.f16round" title="Math.f16round ( x )"><span class="secnum">21.3.2.18</span> Math.f16round ( <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.19</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.20</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.21</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.22</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.23</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.24</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.25</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.26</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.27</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.28</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.29</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.30</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.31</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.32</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.33</span> Math.sqrt ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="numbers-and-dates.html#sec-math.sumprecise" title="Math.sumPrecise ( items )"><span class="secnum">21.3.2.34</span> Math.sumPrecise ( <var>items</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.35</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.36</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.37</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><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-updatemodifiers" title="UpdateModifiers ( rer, add, remove )"><span class="secnum">22.2.2.7.4</span> UpdateModifiers ( <var>rer</var>, <var>add</var>, <var>remove</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">+</span><a href="text-processing.html#sec-regexp.escape" title="RegExp.escape ( S )"><span class="secnum">22.2.5.1</span> RegExp.escape ( <var>S</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-encodeforregexpescape" title="EncodeForRegExpEscape ( cp )"><span class="secnum">22.2.5.1.1</span> EncodeForRegExpEscape ( <var>cp</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-regexp.prototype" title="RegExp.prototype"><span class="secnum">22.2.5.2</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.3</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><li><span class="item-toggle-none"></span><a href="text-processing.html#sec-properties-of-regexp-string-iterator-instances" title="Properties of RegExp String Iterator Instances"><span class="secnum">22.2.9.3</span> Properties of RegExp String Iterator Instances</a></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.fromasync" title="Array.fromAsync ( items [ , mapper [ , thisArg ] ] )"><span class="secnum">23.1.2.2</span> Array.fromAsync ( <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.3</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.4</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.5</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.6</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><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-properties-of-array-iterator-instances" title="Properties of Array Iterator Instances"><span class="secnum">23.1.5.3</span> Properties of Array Iterator Instances</a></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-settypedarrayfromarraylike" title="SetTypedArrayFromArrayLike ( target, targetOffset, source )"><span class="secnum">23.2.3.26.1</span> SetTypedArrayFromArrayLike ( <var>target</var>, <var>targetOffset</var>, <var>source</var> )</a></li><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.2</span> SetTypedArrayFromTypedArray ( <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#sec-typedarraycreatefromconstructor" title="TypedArrayCreateFromConstructor ( constructor, argumentList )"><span class="secnum">23.2.4.1</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, length )"><span class="secnum">23.2.4.2</span> TypedArrayCreateSameType ( <var>exemplar</var>, <var>length</var> )</a></li><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.3</span> TypedArraySpeciesCreate ( <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><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-uint8array" title="Uint8Array Objects"><span class="secnum">23.3</span> Uint8Array Objects</a><ol class="toc"><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-additional-properties-of-the-uint8array-constructor" title="Additional Properties of the Uint8Array Constructor"><span class="secnum">23.3.1</span> Additional Properties of the Uint8Array Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-uint8array.frombase64" title="Uint8Array.fromBase64 ( string [ , options ] )"><span class="secnum">23.3.1.1</span> Uint8Array.fromBase64 ( <var>string</var> [ , <var>options</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-uint8array.fromhex" title="Uint8Array.fromHex ( string )"><span class="secnum">23.3.1.2</span> Uint8Array.fromHex ( <var>string</var> )</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-additional-properties-of-the-uint8array-prototype-object" title="Additional Properties of the Uint8Array Prototype Object"><span class="secnum">23.3.2</span> Additional Properties of the Uint8Array Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-uint8array.prototype.setfrombase64" title="Uint8Array.prototype.setFromBase64 ( string [ , options ] )"><span class="secnum">23.3.2.1</span> Uint8Array.prototype.setFromBase64 ( <var>string</var> [ , <var>options</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-uint8array.prototype.setfromhex" title="Uint8Array.prototype.setFromHex ( string )"><span class="secnum">23.3.2.2</span> Uint8Array.prototype.setFromHex ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-uint8array.prototype.tobase64" title="Uint8Array.prototype.toBase64 ( [ options ] )"><span class="secnum">23.3.2.3</span> Uint8Array.prototype.toBase64 ( [ <var>options</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-uint8array.prototype.tohex" title="Uint8Array.prototype.toHex ( )"><span class="secnum">23.3.2.4</span> Uint8Array.prototype.toHex ( )</a></li></ol></li><li><span class="item-toggle">+</span><a href="indexed-collections.html#sec-abstract-operations-for-uint8array-objects" title="Abstract Operations for Uint8Array Objects"><span class="secnum">23.3.3</span> Abstract Operations for Uint8Array Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-validateuint8array" title="ValidateUint8Array ( ta )"><span class="secnum">23.3.3.1</span> ValidateUint8Array ( <var>ta</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-getuint8arraybytes" title="GetUint8ArrayBytes ( ta )"><span class="secnum">23.3.3.2</span> GetUint8ArrayBytes ( <var>ta</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-setuint8arraybytes" title="SetUint8ArrayBytes ( into, bytes )"><span class="secnum">23.3.3.3</span> SetUint8ArrayBytes ( <var>into</var>, <var>bytes</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-skipasciiwhitespace" title="SkipAsciiWhitespace ( string, index )"><span class="secnum">23.3.3.4</span> SkipAsciiWhitespace ( <var>string</var>, <var>index</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-decodefinalbase64chunk" title="DecodeFinalBase64Chunk ( chunk, throwOnExtraBits )"><span class="secnum">23.3.3.5</span> DecodeFinalBase64Chunk ( <var>chunk</var>, <var>throwOnExtraBits</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-decodefulllengthbase64chunk" title="DecodeFullLengthBase64Chunk ( chunk )"><span class="secnum">23.3.3.6</span> DecodeFullLengthBase64Chunk ( <var>chunk</var> )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-frombase64" title="FromBase64 ( string, alphabet, lastChunkHandling [ , maxLength ] )"><span class="secnum">23.3.3.7</span> FromBase64 ( <var>string</var>, <var>alphabet</var>, <var>lastChunkHandling</var> [ , <var>maxLength</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="indexed-collections.html#sec-fromhex" title="FromHex ( string [ , maxLength ] )"><span class="secnum">23.3.3.8</span> FromHex ( <var>string</var> [ , <var>maxLength</var> ] )</a></li></ol></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.getorinsert" title="Map.prototype.getOrInsert ( key, value )"><span class="secnum">24.1.3.7</span> Map.prototype.getOrInsert ( <var>key</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-map.prototype.getorinsertcomputed" title="Map.prototype.getOrInsertComputed ( key, callback )"><span class="secnum">24.1.3.8</span> Map.prototype.getOrInsertComputed ( <var>key</var>, <var>callback</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.9</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.10</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.11</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.12</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.13</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.14</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.15</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.getorinsert" title="WeakMap.prototype.getOrInsert ( key, value )"><span class="secnum">24.3.3.4</span> WeakMap.prototype.getOrInsert ( <var>key</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="keyed-collections.html#sec-weakmap.prototype.getorinsertcomputed" title="WeakMap.prototype.getOrInsertComputed ( key, callback )"><span class="secnum">24.3.3.5</span> WeakMap.prototype.getOrInsertComputed ( <var>key</var>, <var>callback</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.6</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.7</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.8</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-isgrowablesharedarraybuffer" title="IsGrowableSharedArrayBuffer ( obj )"><span class="secnum">25.2.2.3</span> IsGrowableSharedArrayBuffer ( <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.4</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.getfloat16" title="DataView.prototype.getFloat16 ( byteOffset [ , littleEndian ] )"><span class="secnum">25.3.4.7</span> DataView.prototype.getFloat16 ( <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.8</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.9</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.10</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.11</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.12</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.13</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.14</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.15</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.16</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.17</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.setfloat16" title="DataView.prototype.setFloat16 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">25.3.4.18</span> DataView.prototype.setFloat16 ( <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.19</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.20</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.21</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.22</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.23</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.24</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.25</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.26</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.27</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 )"><span class="secnum">25.4.3.3</span> ValidateAtomicAccessOnIntegerTypedArray ( <var>typedArray</var>, <var>requestIndex</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-ParseJSON" title="ParseJSON ( text )"><span class="secnum">25.5.1.1</span> ParseJSON ( <var>text</var> )</a></li><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.2</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-none"></span><a href="control-abstraction-objects.html#sec-iterator.concat" title="Iterator.concat ( ...items )"><span class="secnum">27.1.3.2.1</span> Iterator.concat ( ...<var>items</var> )</a></li><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.2</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.2.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.2.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.2.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.3</span> Iterator.prototype</a></li></ol></li><li><span class="item-toggle">+</span><a href="control-abstraction-objects.html#sec-%iterator.prototype%-object" title="Properties of the Iterator Prototype Object"><span class="secnum">27.1.3.3</span> Properties of 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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.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.3.3.14.2</span> set Iterator.prototype [ %Symbol.toStringTag% ]</a></li></ol></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.4</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.4.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.5</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.5.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.5.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.5.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.5.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.5.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.5.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, syncIteratorRecord, closeOnRejection )"><span class="secnum">27.1.5.4</span> AsyncFromSyncIteratorContinuation ( <var>result</var>, <var>promiseCapability</var>, <var>syncIteratorRecord</var>, <var>closeOnRejection</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-none"></span><a href="control-abstraction-objects.html#sec-createresolvingfunctions" title="CreateResolvingFunctions ( toResolve )"><span class="secnum">27.2.1.3</span> CreateResolvingFunctions ( <var>toResolve</var> )</a></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></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></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></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></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">Annex A <span class="annex-kind">(informative)</span></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">Annex B <span class="annex-kind">(normative)</span></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-none"></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></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-none"></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></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><li><span class="item-toggle-none"></span><a href="additional-ecmascript-features-for-web-browsers.html#sec-runtime-errors-for-function-call-assignment-targets" title="Runtime Errors for Function Call Assignment Targets"><span class="secnum">B.3.9</span> Runtime Errors for Function Call Assignment Targets</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">Annex C <span class="annex-kind">(informative)</span></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">Annex D <span class="annex-kind">(informative)</span></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">Annex E <span class="annex-kind">(informative)</span></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">Annex F <span class="annex-kind">(informative)</span></span> Additions and Changes That Introduce Incompatibilities with Prior Editions</a></li><li><span class="item-toggle-none"></span><a href="bibliography.html#sec-bibliography" title="Bibliography">Bibliography</a></li><li><span class="item-toggle-none"></span><a href="colophon.html#sec-colophon" title="Colophon">Colophon</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">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 the <i>n</i><sup>th</sup> pin</span><code>1-9</code></li>
|
||
<li><span>Jump to the 10<sup>th</sup> pin</span><code>0</code></li>
|
||
<li><span>Jump to the most recent link target</span><code>`</code></li>
|
||
</ul></div><div id='spec-container'><emu-clause id="sec-indexed-collections">
|
||
<h1><span class="secnum">23</span> Indexed Collections</h1>
|
||
|
||
<emu-clause id="sec-array-objects">
|
||
<h1><span class="secnum">23.1</span> Array Objects</h1>
|
||
<p>Arrays are <emu-xref href="#exotic-object" id="_ref_12638"><a href="ecmascript-data-types-and-values.html#exotic-object">exotic objects</a></emu-xref> that give special treatment to a certain class of <emu-xref href="#property-name" id="_ref_12639"><a href="ecmascript-data-types-and-values.html#property-name">property names</a></emu-xref>. See <emu-xref href="#sec-array-exotic-objects" id="_ref_717"><a href="ordinary-and-exotic-objects-behaviours.html#sec-array-exotic-objects">10.4.2</a></emu-xref> for a definition of this special treatment.</p>
|
||
|
||
<emu-clause id="sec-array-constructor">
|
||
<h1><span class="secnum">23.1.1</span> The Array Constructor</h1>
|
||
<p>The Array <emu-xref href="#constructor" id="_ref_12640"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>:</p>
|
||
<ul>
|
||
<li>is <dfn tabindex="-1">%Array%</dfn>.</li>
|
||
<li>is the initial value of the <emu-val>"Array"</emu-val> property of the <emu-xref href="#sec-global-object" id="_ref_12641"><a href="global-object.html#sec-global-object">global object</a></emu-xref>.</li>
|
||
<li>creates and initializes a new Array when called as a <emu-xref href="#constructor" id="_ref_12642"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>.</li>
|
||
<li>also creates and initializes a new Array when called as a function rather than as a <emu-xref href="#constructor" id="_ref_12643"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>. Thus the function call <code>Array(…)</code> is equivalent to the object creation expression <code>new Array(…)</code> with the same arguments.</li>
|
||
<li>is a function whose behaviour differs based upon the number and types of its arguments.</li>
|
||
<li>may be used as the value of an <code>extends</code> clause of a class definition. Subclass <emu-xref href="#constructor" id="_ref_12644"><a href="ecmascript-data-types-and-values.html#constructor">constructors</a></emu-xref> that intend to inherit the exotic Array behaviour must include a <code>super</code> call to the Array <emu-xref href="#constructor" id="_ref_12645"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> to initialize subclass instances that are <emu-xref href="#array-exotic-object" id="_ref_12646"><a href="ordinary-and-exotic-objects-behaviours.html#array-exotic-object">Array exotic objects</a></emu-xref>. However, most of the <code>Array.prototype</code> methods are generic methods that are not dependent upon their <emu-val>this</emu-val> value being an <emu-xref href="#array-exotic-object" id="_ref_12647"><a href="ordinary-and-exotic-objects-behaviours.html#array-exotic-object">Array exotic object</a></emu-xref>.</li>
|
||
</ul>
|
||
|
||
<emu-clause id="sec-array" oldids="sec-array-constructor-array,sec-array-len,sec-array-items" type="built-in function"><span id="sec-array-items"></span><span id="sec-array-len"></span><span id="sec-array-constructor-array"></span>
|
||
<h1><span class="secnum">23.1.1.1</span> Array ( ...<var>values</var> )</h1>
|
||
<p>This function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>If NewTarget is <emu-val>undefined</emu-val>, let <var>newTarget</var> be the <emu-xref href="#active-function-object" id="_ref_12648"><a href="executable-code-and-execution-contexts.html#active-function-object">active function object</a></emu-xref>; else let <var>newTarget</var> be NewTarget.</li><li>Let <var>proto</var> be ? <emu-xref aoid="GetPrototypeFromConstructor" id="_ref_12649"><a href="ordinary-and-exotic-objects-behaviours.html#sec-getprototypefromconstructor" class="e-user-code">GetPrototypeFromConstructor</a></emu-xref>(<var>newTarget</var>, <emu-val>"%Array.prototype%"</emu-val>).</li><li>Let <var>numberOfArgs</var> be the number of elements in <var>values</var>.</li><li>If <var>numberOfArgs</var> = 0, return ! <emu-xref aoid="ArrayCreate" id="_ref_12650"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(0, <var>proto</var>).</li><li>If <var>numberOfArgs</var> = 1, then<ol><li>Let <var>len</var> be <var>values</var>[0].</li><li>Let <var>array</var> be ! <emu-xref aoid="ArrayCreate" id="_ref_12651"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(0, <var>proto</var>).</li><li>If <var>len</var> <emu-xref href="#sec-ecmascript-language-types-number-type" id="_ref_12652"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-number-type">is not a Number</a></emu-xref>, then<ol><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12653"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>array</var>, <emu-val>"0"</emu-val>, <var>len</var>).</li><li>Let <var>intLen</var> be <emu-val>1</emu-val><sub>𝔽</sub>.</li></ol></li><li>Else,<ol><li>Let <var>intLen</var> be ! <emu-xref aoid="ToUint32" id="_ref_12654"><a href="abstract-operations.html#sec-touint32">ToUint32</a></emu-xref>(<var>len</var>).</li><li>If <emu-xref aoid="SameValueZero" id="_ref_12655"><a href="abstract-operations.html#sec-samevaluezero">SameValueZero</a></emu-xref>(<var>intLen</var>, <var>len</var>) is <emu-val>false</emu-val>, throw a <emu-val>RangeError</emu-val> exception.</li></ol></li><li>Perform ! <emu-xref aoid="Set" id="_ref_12656"><a href="abstract-operations.html#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>array</var>, <emu-val>"length"</emu-val>, <var>intLen</var>, <emu-val>true</emu-val>).</li><li>Return <var>array</var>.</li></ol></li><li><emu-xref href="#assert" id="_ref_12657"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>numberOfArgs</var> ≥ 2.</li><li>Let <var>array</var> be ? <emu-xref aoid="ArrayCreate" id="_ref_12658"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(<var>numberOfArgs</var>, <var>proto</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>numberOfArgs</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12659"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12660"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>itemK</var> be <var>values</var>[<var>k</var>].</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12661"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>array</var>, <var>Pk</var>, <var>itemK</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li><emu-xref href="#assert" id="_ref_12662"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: The <emu-xref href="#mathematical-value-of" id="_ref_12663"><a href="notational-conventions.html#mathematical-value-of">mathematical value of</a></emu-xref> <var>array</var>'s <emu-val>"length"</emu-val> property is <var>numberOfArgs</var>.</li><li>Return <var>array</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-properties-of-the-array-constructor">
|
||
<h1><span class="secnum">23.1.2</span> Properties of the Array Constructor</h1>
|
||
<p>The Array <emu-xref href="#constructor" id="_ref_12664"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>:</p>
|
||
<ul>
|
||
<li>has a <var class="field">[[Prototype]]</var> internal slot whose value is <emu-xref href="#sec-properties-of-the-function-prototype-object" id="_ref_12665"><a href="fundamental-objects.html#sec-properties-of-the-function-prototype-object">%Function.prototype%</a></emu-xref>.</li>
|
||
<li>has a <emu-val>"length"</emu-val> property whose value is <emu-val>1</emu-val><sub>𝔽</sub>.</li>
|
||
<li>has the following properties:</li>
|
||
</ul>
|
||
|
||
<emu-clause id="sec-array.from" type="built-in function">
|
||
<h1><span class="secnum">23.1.2.1</span> Array.from ( <var>items</var> [ , <var>mapper</var> [ , <var>thisArg</var> ] ] )</h1>
|
||
<p>This function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>C</var> be the <emu-val>this</emu-val> value.</li><li>If <var>mapper</var> is <emu-val>undefined</emu-val>, then<ol><li>Let <var>mapping</var> be <emu-val>false</emu-val>.</li></ol></li><li>Else,<ol><li>If <emu-xref aoid="IsCallable" id="_ref_12666"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>mapper</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>mapping</var> be <emu-val>true</emu-val>.</li></ol></li><li>Let <var>usingIterator</var> be ? <emu-xref aoid="GetMethod" id="_ref_12667"><a href="abstract-operations.html#sec-getmethod" class="e-user-code">GetMethod</a></emu-xref>(<var>items</var>, <emu-xref href="#sec-well-known-symbols" id="_ref_12668"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.iterator%</a></emu-xref>).</li><li>If <var>usingIterator</var> is not <emu-val>undefined</emu-val>, then<ol><li>If <emu-xref aoid="IsConstructor" id="_ref_12669"><a href="abstract-operations.html#sec-isconstructor">IsConstructor</a></emu-xref>(<var>C</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>A</var> be ? <emu-xref aoid="Construct" id="_ref_12670"><a href="abstract-operations.html#sec-construct" class="e-user-code">Construct</a></emu-xref>(<var>C</var>).</li></ol></li><li>Else,<ol><li>Let <var>A</var> be ! <emu-xref aoid="ArrayCreate" id="_ref_12671"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(0).</li></ol></li><li>Let <var>iteratorRecord</var> be ? <emu-xref aoid="GetIteratorFromMethod" id="_ref_12672"><a href="abstract-operations.html#sec-getiteratorfrommethod" class="e-user-code">GetIteratorFromMethod</a></emu-xref>(<var>items</var>, <var>usingIterator</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat,<ol><li>If <var>k</var> ≥ 2<sup>53</sup> - 1, then<ol><li>Let <var>error</var> be <emu-xref aoid="ThrowCompletion" id="_ref_12673"><a href="ecmascript-data-types-and-values.html#sec-throwcompletion">ThrowCompletion</a></emu-xref>(a newly created <emu-val>TypeError</emu-val> object).</li><li>Return ? <emu-xref aoid="IteratorClose" id="_ref_12674"><a href="abstract-operations.html#sec-iteratorclose" class="e-user-code">IteratorClose</a></emu-xref>(<var>iteratorRecord</var>, <var>error</var>).</li></ol></li><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12675"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12676"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>next</var> be ? <emu-xref aoid="IteratorStepValue" id="_ref_12677"><a href="abstract-operations.html#sec-iteratorstepvalue" class="e-user-code">IteratorStepValue</a></emu-xref>(<var>iteratorRecord</var>).</li><li>If <var>next</var> is <emu-const>done</emu-const>, then<ol><li>Perform ? <emu-xref aoid="Set" id="_ref_12678"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>A</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_12679"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <emu-val>true</emu-val>).</li><li>Return <var>A</var>.</li></ol></li><li>If <var>mapping</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>mappedValue</var> be <emu-xref aoid="Completion" id="_ref_12680"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Call" id="_ref_12681"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>mapper</var>, <var>thisArg</var>, « <var>next</var>, <emu-xref aoid="𝔽" id="_ref_12682"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>) »)).</li><li><emu-xref aoid="IfAbruptCloseIterator" id="_ref_12683"><a href="abstract-operations.html#sec-ifabruptcloseiterator" class="e-user-code">IfAbruptCloseIterator</a></emu-xref>(<var>mappedValue</var>, <var>iteratorRecord</var>).</li></ol></li><li>Else,<ol><li>Let <var>mappedValue</var> be <var>next</var>.</li></ol></li><li>Let <var>defineStatus</var> be <emu-xref aoid="Completion" id="_ref_12684"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12685"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>mappedValue</var>)).</li><li><emu-xref aoid="IfAbruptCloseIterator" id="_ref_12686"><a href="abstract-operations.html#sec-ifabruptcloseiterator" class="e-user-code">IfAbruptCloseIterator</a></emu-xref>(<var>defineStatus</var>, <var>iteratorRecord</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li></ol></li><li>NOTE: <var>items</var> is not <emu-xref href="#sec-iterable-interface" id="_ref_12687"><a href="control-abstraction-objects.html#sec-iterable-interface">iterable</a></emu-xref> so assume it is an <emu-xref href="#sec-lengthofarraylike" id="_ref_12688"><a href="abstract-operations.html#sec-lengthofarraylike">array-like object</a></emu-xref>.</li><li>Let <var>arrayLike</var> be ! <emu-xref aoid="ToObject" id="_ref_12689"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<var>items</var>).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12690"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>arrayLike</var>).</li><li>If <emu-xref aoid="IsConstructor" id="_ref_12691"><a href="abstract-operations.html#sec-isconstructor">IsConstructor</a></emu-xref>(<var>C</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>A</var> be ? <emu-xref aoid="Construct" id="_ref_12692"><a href="abstract-operations.html#sec-construct" class="e-user-code">Construct</a></emu-xref>(<var>C</var>, « <emu-xref aoid="𝔽" id="_ref_12693"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>) »).</li></ol></li><li>Else,<ol><li>Let <var>A</var> be ? <emu-xref aoid="ArrayCreate" id="_ref_12694"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(<var>len</var>).</li></ol></li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12695"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12696"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_12697"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>arrayLike</var>, <var>Pk</var>).</li><li>If <var>mapping</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>mappedValue</var> be ? <emu-xref aoid="Call" id="_ref_12698"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>mapper</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_12699"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>) »).</li></ol></li><li>Else,<ol><li>Let <var>mappedValue</var> be <var>kValue</var>.</li></ol></li><li>Perform ? <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12700"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>mappedValue</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Perform ? <emu-xref aoid="Set" id="_ref_12701"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>A</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_12702"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>), <emu-val>true</emu-val>).</li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This method is an intentionally generic factory method; it does not require that its <emu-val>this</emu-val> value be the Array <emu-xref href="#constructor" id="_ref_12703"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>. Therefore it can be transferred to or inherited by any other <emu-xref href="#constructor" id="_ref_12704"><a href="ecmascript-data-types-and-values.html#constructor">constructors</a></emu-xref> that may be called with a single numeric argument.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.fromasync" type="built-in function">
|
||
<h1><span class="secnum">23.1.2.2</span> Array.fromAsync ( <var>items</var> [ , <var>mapper</var> [ , <var>thisArg</var> ] ] )</h1>
|
||
|
||
<p>This async function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>C</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>mapping</var> be <emu-val>false</emu-val>.</li><li>If <var>mapper</var> is not <emu-val>undefined</emu-val>, then<ol><li>If <emu-xref aoid="IsCallable" id="_ref_12705"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>mapper</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Set <var>mapping</var> to <emu-val>true</emu-val>.</li></ol></li><li>Let <var>iteratorRecord</var> be <emu-val>undefined</emu-val>.</li><li>Let <var>usingAsyncIterator</var> be ? <emu-xref aoid="GetMethod" id="_ref_12706"><a href="abstract-operations.html#sec-getmethod" class="e-user-code">GetMethod</a></emu-xref>(<var>items</var>, <emu-xref href="#sec-well-known-symbols" id="_ref_12707"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.asyncIterator%</a></emu-xref>).</li><li>If <var>usingAsyncIterator</var> is <emu-val>undefined</emu-val>, then<ol><li>Let <var>usingSyncIterator</var> be ? <emu-xref aoid="GetMethod" id="_ref_12708"><a href="abstract-operations.html#sec-getmethod" class="e-user-code">GetMethod</a></emu-xref>(<var>items</var>, <emu-xref href="#sec-well-known-symbols" id="_ref_12709"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.iterator%</a></emu-xref>).</li><li>If <var>usingSyncIterator</var> is not <emu-val>undefined</emu-val>, then<ol><li>Set <var>iteratorRecord</var> to <emu-xref aoid="CreateAsyncFromSyncIterator" id="_ref_12710"><a href="control-abstraction-objects.html#sec-createasyncfromsynciterator">CreateAsyncFromSyncIterator</a></emu-xref>(? <emu-xref aoid="GetIteratorFromMethod" id="_ref_12711"><a href="abstract-operations.html#sec-getiteratorfrommethod" class="e-user-code">GetIteratorFromMethod</a></emu-xref>(<var>items</var>, <var>usingSyncIterator</var>)).</li></ol></li></ol></li><li>Else,<ol><li>Set <var>iteratorRecord</var> to ? <emu-xref aoid="GetIteratorFromMethod" id="_ref_12712"><a href="abstract-operations.html#sec-getiteratorfrommethod" class="e-user-code">GetIteratorFromMethod</a></emu-xref>(<var>items</var>, <var>usingAsyncIterator</var>).</li></ol></li><li>If <var>iteratorRecord</var> is not <emu-val>undefined</emu-val>, then<ol><li>If <emu-xref aoid="IsConstructor" id="_ref_12713"><a href="abstract-operations.html#sec-isconstructor">IsConstructor</a></emu-xref>(<var>C</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>A</var> be ? <emu-xref aoid="Construct" id="_ref_12714"><a href="abstract-operations.html#sec-construct" class="e-user-code">Construct</a></emu-xref>(<var>C</var>).</li></ol></li><li>Else,<ol><li>Let <var>A</var> be ! <emu-xref aoid="ArrayCreate" id="_ref_12715"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(0).</li></ol></li><li>Let <var>k</var> be 0.</li><li>Repeat,<ol><li>If <var>k</var> ≥ 2<sup>53</sup> - 1, then<ol><li>Let <var>error</var> be <emu-xref aoid="ThrowCompletion" id="_ref_12716"><a href="ecmascript-data-types-and-values.html#sec-throwcompletion">ThrowCompletion</a></emu-xref>(a newly created <emu-val>TypeError</emu-val> object).</li><li>Return ? <emu-xref aoid="AsyncIteratorClose" id="_ref_12717"><a href="abstract-operations.html#sec-asynciteratorclose" class="e-user-code">AsyncIteratorClose</a></emu-xref>(<var>iteratorRecord</var>, <var>error</var>).</li></ol></li><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12718"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12719"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>nextResult</var> be ? <emu-xref aoid="Call" id="_ref_12720"><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>Set <var>nextResult</var> to ? <emu-xref aoid="Await" id="_ref_12721"><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_12722"><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_12723"><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>, then<ol><li>Perform ? <emu-xref aoid="Set" id="_ref_12724"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>A</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_12725"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <emu-val>true</emu-val>).</li><li>Return <var>A</var>.</li></ol></li><li>Let <var>nextValue</var> be ? <emu-xref aoid="IteratorValue" id="_ref_12726"><a href="abstract-operations.html#sec-iteratorvalue" class="e-user-code">IteratorValue</a></emu-xref>(<var>nextResult</var>).</li><li>If <var>mapping</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>mappedValue</var> be <emu-xref aoid="Completion" id="_ref_12727"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Call" id="_ref_12728"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>mapper</var>, <var>thisArg</var>, « <var>nextValue</var>, <emu-xref aoid="𝔽" id="_ref_12729"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>) »)).</li><li><emu-xref aoid="IfAbruptCloseAsyncIterator" id="_ref_12730"><a href="abstract-operations.html#sec-ifabruptcloseasynciterator" class="e-user-code">IfAbruptCloseAsyncIterator</a></emu-xref>(<var>mappedValue</var>, <var>iteratorRecord</var>).</li><li>Set <var>mappedValue</var> to <emu-xref aoid="Completion" id="_ref_12731"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Await" id="_ref_12732"><a href="control-abstraction-objects.html#await" class="e-user-code">Await</a></emu-xref>(<var>mappedValue</var>)).</li><li><emu-xref aoid="IfAbruptCloseAsyncIterator" id="_ref_12733"><a href="abstract-operations.html#sec-ifabruptcloseasynciterator" class="e-user-code">IfAbruptCloseAsyncIterator</a></emu-xref>(<var>mappedValue</var>, <var>iteratorRecord</var>).</li></ol></li><li>Else,<ol><li>Let <var>mappedValue</var> be <var>nextValue</var>.</li></ol></li><li>Let <var>defineStatus</var> be <emu-xref aoid="Completion" id="_ref_12734"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12735"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>mappedValue</var>)).</li><li><emu-xref aoid="IfAbruptCloseAsyncIterator" id="_ref_12736"><a href="abstract-operations.html#sec-ifabruptcloseasynciterator" class="e-user-code">IfAbruptCloseAsyncIterator</a></emu-xref>(<var>defineStatus</var>, <var>iteratorRecord</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li></ol></li><li>Else,<ol><li>NOTE: <var>items</var> is neither <emu-xref href="#sec-asynciterable-interface" id="_ref_12737"><a href="control-abstraction-objects.html#sec-asynciterable-interface">async iterable</a></emu-xref> nor <emu-xref href="#sec-iterable-interface" id="_ref_12738"><a href="control-abstraction-objects.html#sec-iterable-interface">iterable</a></emu-xref> so assume it is an <emu-xref href="#sec-lengthofarraylike" id="_ref_12739"><a href="abstract-operations.html#sec-lengthofarraylike">array-like object</a></emu-xref>.</li><li>Let <var>arrayLike</var> be ! <emu-xref aoid="ToObject" id="_ref_12740"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<var>items</var>).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12741"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>arrayLike</var>).</li><li>If <emu-xref aoid="IsConstructor" id="_ref_12742"><a href="abstract-operations.html#sec-isconstructor">IsConstructor</a></emu-xref>(<var>C</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>A</var> be ? <emu-xref aoid="Construct" id="_ref_12743"><a href="abstract-operations.html#sec-construct" class="e-user-code">Construct</a></emu-xref>(<var>C</var>, « <emu-xref aoid="𝔽" id="_ref_12744"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>) »).</li></ol></li><li>Else,<ol><li>Let <var>A</var> be ? <emu-xref aoid="ArrayCreate" id="_ref_12745"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(<var>len</var>).</li></ol></li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12746"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12747"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_12748"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>arrayLike</var>, <var>Pk</var>).</li><li>Set <var>kValue</var> to ? <emu-xref aoid="Await" id="_ref_12749"><a href="control-abstraction-objects.html#await" class="e-user-code">Await</a></emu-xref>(<var>kValue</var>).</li><li>If <var>mapping</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>mappedValue</var> be ? <emu-xref aoid="Call" id="_ref_12750"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>mapper</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_12751"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>) »).</li><li>Set <var>mappedValue</var> to ? <emu-xref aoid="Await" id="_ref_12752"><a href="control-abstraction-objects.html#await" class="e-user-code">Await</a></emu-xref>(<var>mappedValue</var>).</li></ol></li><li>Else,<ol><li>Let <var>mappedValue</var> be <var>kValue</var>.</li></ol></li><li>Perform ? <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12753"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>mappedValue</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Perform ? <emu-xref aoid="Set" id="_ref_12754"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>A</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_12755"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>), <emu-val>true</emu-val>).</li><li>Return <var>A</var>.</li></ol></li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This method is an intentionally generic factory method; it does not require that its <emu-val>this</emu-val> value be the Array <emu-xref href="#constructor" id="_ref_12756"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>. Therefore it can be transferred to or inherited by any other <emu-xref href="#constructor" id="_ref_12757"><a href="ecmascript-data-types-and-values.html#constructor">constructors</a></emu-xref> that may be called with a single numeric argument.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.isarray" type="built-in function">
|
||
<h1><span class="secnum">23.1.2.3</span> Array.isArray ( <var>arg</var> )</h1>
|
||
<p>This function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Return ? <emu-xref aoid="IsArray" id="_ref_12758"><a href="abstract-operations.html#sec-isarray">IsArray</a></emu-xref>(<var>arg</var>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.of" type="built-in function">
|
||
<h1><span class="secnum">23.1.2.4</span> Array.of ( ...<var>items</var> )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>len</var> be the number of elements in <var>items</var>.</li><li>Let <var>lenNumber</var> be <emu-xref aoid="𝔽" id="_ref_12759"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>).</li><li>Let <var>C</var> be the <emu-val>this</emu-val> value.</li><li>If <emu-xref aoid="IsConstructor" id="_ref_12760"><a href="abstract-operations.html#sec-isconstructor">IsConstructor</a></emu-xref>(<var>C</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>A</var> be ? <emu-xref aoid="Construct" id="_ref_12761"><a href="abstract-operations.html#sec-construct" class="e-user-code">Construct</a></emu-xref>(<var>C</var>, « <var>lenNumber</var> »).</li></ol></li><li>Else,<ol><li>Let <var>A</var> be ? <emu-xref aoid="ArrayCreate" id="_ref_12762"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(<var>len</var>).</li></ol></li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>kValue</var> be <var>items</var>[<var>k</var>].</li><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12763"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12764"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Perform ? <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12765"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>kValue</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Perform ? <emu-xref aoid="Set" id="_ref_12766"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>A</var>, <emu-val>"length"</emu-val>, <var>lenNumber</var>, <emu-val>true</emu-val>).</li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This method is an intentionally generic factory method; it does not require that its <emu-val>this</emu-val> value be the Array <emu-xref href="#constructor" id="_ref_12767"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>. Therefore it can be transferred to or inherited by other <emu-xref href="#constructor" id="_ref_12768"><a href="ecmascript-data-types-and-values.html#constructor">constructors</a></emu-xref> that may be called with a single numeric argument.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype">
|
||
<h1><span class="secnum">23.1.2.5</span> Array.prototype</h1>
|
||
<p>The value of <code>Array.prototype</code> is the <emu-xref href="#sec-properties-of-the-array-prototype-object" id="_ref_12769"><a href="indexed-collections.html#sec-properties-of-the-array-prototype-object">Array prototype object</a></emu-xref>.</p>
|
||
<p>This property has the attributes { <var class="field">[[Writable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Enumerable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Configurable]]</var>: <emu-val>false</emu-val> }.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause oldids="sec-get-array-@@species" id="sec-get-array-%symbol.species%" type="built-in function"><span id="sec-get-array-@@species"></span>
|
||
<h1><span class="secnum">23.1.2.6</span> get Array [ %Symbol.species% ]</h1>
|
||
<p><code>Array[%Symbol.species%]</code> is an <emu-xref href="#sec-object-type" id="_ref_12770"><a href="ecmascript-data-types-and-values.html#sec-object-type">accessor property</a></emu-xref> whose set accessor function is <emu-val>undefined</emu-val>. Its get accessor function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Return the <emu-val>this</emu-val> value.</li></ol></emu-alg>
|
||
<p>The value of the <emu-val>"name"</emu-val> property of this function is <emu-val>"get [Symbol.species]"</emu-val>.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Array prototype methods normally use their <emu-val>this</emu-val> value's <emu-xref href="#constructor" id="_ref_12771"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> to create a derived object. However, a subclass <emu-xref href="#constructor" id="_ref_12772"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> may over-ride that default behaviour by redefining its <emu-xref href="#sec-well-known-symbols" id="_ref_12773"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.species%</a></emu-xref> property.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-properties-of-the-array-prototype-object">
|
||
<h1><span class="secnum">23.1.3</span> Properties of the Array Prototype Object</h1>
|
||
<p>The <dfn tabindex="-1">Array prototype object</dfn>:</p>
|
||
<ul>
|
||
<li>is <dfn tabindex="-1">%Array.prototype%</dfn>.</li>
|
||
<li>is an <emu-xref href="#array-exotic-object" id="_ref_12774"><a href="ordinary-and-exotic-objects-behaviours.html#array-exotic-object">Array exotic object</a></emu-xref> and has the internal methods specified for such objects.</li>
|
||
<li>has a <emu-val>"length"</emu-val> property whose initial value is <emu-val>+0</emu-val><sub>𝔽</sub> and whose attributes are { <var class="field">[[Writable]]</var>: <emu-val>true</emu-val>, <var class="field">[[Enumerable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Configurable]]</var>: <emu-val>false</emu-val> }.</li>
|
||
<li>has a <var class="field">[[Prototype]]</var> internal slot whose value is <emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_12775"><a href="fundamental-objects.html#sec-properties-of-the-object-prototype-object">%Object.prototype%</a></emu-xref>.</li>
|
||
</ul>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The Array prototype object is specified to be an <emu-xref href="#array-exotic-object" id="_ref_12776"><a href="ordinary-and-exotic-objects-behaviours.html#array-exotic-object">Array exotic object</a></emu-xref> to ensure compatibility with ECMAScript code that was created prior to the ECMAScript 2015 specification.</p>
|
||
</div></emu-note>
|
||
|
||
<emu-clause id="sec-array.prototype.at" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.1</span> Array.prototype.at ( <var>index</var> )</h1>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12777"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12778"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>relativeIndex</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_12779"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>index</var>).</li><li>If <var>relativeIndex</var> ≥ 0, then<ol><li>Let <var>k</var> be <var>relativeIndex</var>.</li></ol></li><li>Else,<ol><li>Let <var>k</var> be <var>len</var> + <var>relativeIndex</var>.</li></ol></li><li>If <var>k</var> < 0 or <var>k</var> ≥ <var>len</var>, return <emu-val>undefined</emu-val>.</li><li>Return ? <emu-xref aoid="Get" id="_ref_12780"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_12781"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12782"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>))).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.concat" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.2</span> Array.prototype.concat ( ...<var>items</var> )</h1>
|
||
<p>This method returns an array containing the array elements of the object followed by the array elements of each argument.</p>
|
||
<p>It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12783"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>A</var> be ? <emu-xref aoid="ArraySpeciesCreate" id="_ref_12784"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arrayspeciescreate" class="e-user-code">ArraySpeciesCreate</a></emu-xref>(<var>O</var>, 0).</li><li>Let <var>n</var> be 0.</li><li>Prepend <var>O</var> to <var>items</var>.</li><li>For each element <var>E</var> of <var>items</var>, do<ol><li>Let <var>spreadable</var> be ? <emu-xref aoid="IsConcatSpreadable" id="_ref_12785"><a href="indexed-collections.html#sec-isconcatspreadable" class="e-user-code">IsConcatSpreadable</a></emu-xref>(<var>E</var>).</li><li>If <var>spreadable</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12786"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>E</var>).</li><li>If <var>n</var> + <var>len</var> > 2<sup>53</sup> - 1, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12787"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12788"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>exists</var> be ? <emu-xref aoid="HasProperty" id="_ref_12789"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>E</var>, <var>Pk</var>).</li><li>If <var>exists</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>subElement</var> be ? <emu-xref aoid="Get" id="_ref_12790"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>E</var>, <var>Pk</var>).</li><li>Perform ? <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12791"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_12792"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12793"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>n</var>)), <var>subElement</var>).</li></ol></li><li>Set <var>n</var> to <var>n</var> + 1.</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li></ol></li><li>Else,<ol><li>NOTE: <var>E</var> is added as a single item rather than spread.</li><li>If <var>n</var> ≥ 2<sup>53</sup> - 1, throw a <emu-val>TypeError</emu-val> exception.</li><li>Perform ? <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12794"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_12795"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12796"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>n</var>)), <var>E</var>).</li><li>Set <var>n</var> to <var>n</var> + 1.</li></ol></li></ol></li><li id="step-array-proto-concat-set-length">Perform ? <emu-xref aoid="Set" id="_ref_12797"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>A</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_12798"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>n</var>), <emu-val>true</emu-val>).</li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
<p>The <emu-val>"length"</emu-val> property of this method is <emu-val>1</emu-val><sub>𝔽</sub>.</p>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>The explicit setting of the <emu-val>"length"</emu-val> property in step <emu-xref href="#step-array-proto-concat-set-length" id="_ref_718"><a href="indexed-collections.html#step-array-proto-concat-set-length">6</a></emu-xref> is intended to ensure the length is correct when the final non-empty element of <var>items</var> has trailing holes or when <var>A</var> is not a built-in Array.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
|
||
<emu-clause id="sec-isconcatspreadable" type="abstract operation" aoid="IsConcatSpreadable">
|
||
<h1><span class="secnum">23.1.3.2.1</span> IsConcatSpreadable ( <var>O</var> )</h1>
|
||
<p>The abstract operation IsConcatSpreadable takes argument <var>O</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_12799"><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_12800"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a Boolean or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_12801"><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>O</var> <emu-xref href="#sec-object-type" id="_ref_12802"><a href="ecmascript-data-types-and-values.html#sec-object-type">is not an Object</a></emu-xref>, return <emu-val>false</emu-val>.</li><li>Let <var>spreadable</var> be ? <emu-xref aoid="Get" id="_ref_12803"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <emu-xref href="#sec-well-known-symbols" id="_ref_12804"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.isConcatSpreadable%</a></emu-xref>).</li><li>If <var>spreadable</var> is not <emu-val>undefined</emu-val>, return <emu-xref aoid="ToBoolean" id="_ref_12805"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(<var>spreadable</var>).</li><li>Return ? <emu-xref aoid="IsArray" id="_ref_12806"><a href="abstract-operations.html#sec-isarray">IsArray</a></emu-xref>(<var>O</var>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.constructor">
|
||
<h1><span class="secnum">23.1.3.3</span> Array.prototype.constructor</h1>
|
||
<p>The initial value of <code>Array.prototype.constructor</code> is <emu-xref href="#sec-array-constructor" id="_ref_12807"><a href="indexed-collections.html#sec-array-constructor">%Array%</a></emu-xref>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.copywithin" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.4</span> Array.prototype.copyWithin ( <var>target</var>, <var>start</var> [ , <var>end</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>The <var>end</var> argument is optional. If it is not provided, the length of the <emu-val>this</emu-val> value is used.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>If <var>target</var> is negative, it is treated as <emu-eqn class="inline"><var>length</var> + <var>target</var></emu-eqn> where <var>length</var> is the length of the array. If <var>start</var> is negative, it is treated as <emu-eqn class="inline"><var>length</var> + <var>start</var></emu-eqn>. If <var>end</var> is negative, it is treated as <emu-eqn class="inline"><var>length</var> + <var>end</var></emu-eqn>.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12808"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12809"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>relativeTarget</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_12810"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>target</var>).</li><li>If <var>relativeTarget</var> = -∞, let <var>to</var> be 0.</li><li>Else if <var>relativeTarget</var> < 0, let <var>to</var> be <emu-xref aoid="max" id="_ref_12811"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeTarget</var>, 0).</li><li>Else, let <var>to</var> be <emu-xref aoid="min" id="_ref_12812"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeTarget</var>, <var>len</var>).</li><li>Let <var>relativeStart</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_12813"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>start</var>).</li><li>If <var>relativeStart</var> = -∞, let <var>from</var> be 0.</li><li>Else if <var>relativeStart</var> < 0, let <var>from</var> be <emu-xref aoid="max" id="_ref_12814"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeStart</var>, 0).</li><li>Else, let <var>from</var> be <emu-xref aoid="min" id="_ref_12815"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeStart</var>, <var>len</var>).</li><li>If <var>end</var> is <emu-val>undefined</emu-val>, let <var>relativeEnd</var> be <var>len</var>; else let <var>relativeEnd</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_12816"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>end</var>).</li><li>If <var>relativeEnd</var> = -∞, let <var>final</var> be 0.</li><li>Else if <var>relativeEnd</var> < 0, let <var>final</var> be <emu-xref aoid="max" id="_ref_12817"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeEnd</var>, 0).</li><li>Else, let <var>final</var> be <emu-xref aoid="min" id="_ref_12818"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeEnd</var>, <var>len</var>).</li><li>Let <var>count</var> be <emu-xref aoid="min" id="_ref_12819"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>final</var> - <var>from</var>, <var>len</var> - <var>to</var>).</li><li>If <var>from</var> < <var>to</var> and <var>to</var> < <var>from</var> + <var>count</var>, then<ol><li>Let <var>direction</var> be -1.</li><li>Set <var>from</var> to <var>from</var> + <var>count</var> - 1.</li><li>Set <var>to</var> to <var>to</var> + <var>count</var> - 1.</li></ol></li><li>Else,<ol><li>Let <var>direction</var> be 1.</li></ol></li><li>Repeat, while <var>count</var> > 0,<ol><li>Let <var>fromKey</var> be ! <emu-xref aoid="ToString" id="_ref_12820"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12821"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>from</var>)).</li><li>Let <var>toKey</var> be ! <emu-xref aoid="ToString" id="_ref_12822"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12823"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>to</var>)).</li><li>Let <var>fromPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_12824"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>fromKey</var>).</li><li>If <var>fromPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>fromValue</var> be ? <emu-xref aoid="Get" id="_ref_12825"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>fromKey</var>).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_12826"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>toKey</var>, <var>fromValue</var>, <emu-val>true</emu-val>).</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_12827"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>fromPresent</var> is <emu-val>false</emu-val>.</li><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_12828"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>O</var>, <var>toKey</var>).</li></ol></li><li>Set <var>from</var> to <var>from</var> + <var>direction</var>.</li><li>Set <var>to</var> to <var>to</var> + <var>direction</var>.</li><li>Set <var>count</var> to <var>count</var> - 1.</li></ol></li><li>Return <var>O</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.entries" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.5</span> Array.prototype.entries ( )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12829"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Return <emu-xref aoid="CreateArrayIterator" id="_ref_12830"><a href="indexed-collections.html#sec-createarrayiterator">CreateArrayIterator</a></emu-xref>(<var>O</var>, <emu-const>key+value</emu-const>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.every" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.6</span> Array.prototype.every ( <var>callback</var> [ , <var>thisArg</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p><var>callback</var> should be a function that accepts three arguments and returns a value that is coercible to a Boolean value. <code>every</code> calls <var>callback</var> once for each element present in the array, in ascending order, until it finds one where <var>callback</var> returns <emu-val>false</emu-val>. If such an element is found, <code>every</code> immediately returns <emu-val>false</emu-val>. Otherwise, <code>every</code> returns <emu-val>true</emu-val>. <var>callback</var> is called only for elements of the array which actually exist; it is not called for missing elements of the array.</p>
|
||
<p>If a <var>thisArg</var> parameter is provided, it will be used as the <emu-val>this</emu-val> value for each invocation of <var>callback</var>. If it is not provided, <emu-val>undefined</emu-val> is used instead.</p>
|
||
<p><var>callback</var> is called with three arguments: the value of the element, the index of the element, and the object being traversed.</p>
|
||
<p><code>every</code> does not directly mutate the object on which it is called but the object may be mutated by the calls to <var>callback</var>.</p>
|
||
<p>The range of elements processed by <code>every</code> is set before the first call to <var>callback</var>. Elements which are appended to the array after the call to <code>every</code> begins will not be visited by <var>callback</var>. If existing elements of the array are changed, their value as passed to <var>callback</var> will be the value at the time <code>every</code> visits them; elements that are deleted after the call to <code>every</code> begins and before being visited are not visited. <code>every</code> acts like the "for all" quantifier in mathematics. In particular, for an empty array, it returns <emu-val>true</emu-val>.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12831"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12832"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_12833"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12834"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12835"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_12836"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_12837"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Let <var>testResult</var> be <emu-xref aoid="ToBoolean" id="_ref_12838"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Call" id="_ref_12839"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_12840"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »)).</li><li>If <var>testResult</var> is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-val>true</emu-val>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.fill" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.7</span> Array.prototype.fill ( <var>value</var> [ , <var>start</var> [ , <var>end</var> ] ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>The <var>start</var> argument is optional. If it is not provided, <emu-val>+0</emu-val><sub>𝔽</sub> is used.</p>
|
||
<p>The <var>end</var> argument is optional. If it is not provided, the length of the <emu-val>this</emu-val> value is used.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>If <var>start</var> is negative, it is treated as <emu-eqn class="inline"><var>length</var> + <var>start</var></emu-eqn> where <var>length</var> is the length of the array. If <var>end</var> is negative, it is treated as <emu-eqn class="inline"><var>length</var> + <var>end</var></emu-eqn>.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12841"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12842"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>relativeStart</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_12843"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>start</var>).</li><li>If <var>relativeStart</var> = -∞, let <var>k</var> be 0.</li><li>Else if <var>relativeStart</var> < 0, let <var>k</var> be <emu-xref aoid="max" id="_ref_12844"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeStart</var>, 0).</li><li>Else, let <var>k</var> be <emu-xref aoid="min" id="_ref_12845"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeStart</var>, <var>len</var>).</li><li>If <var>end</var> is <emu-val>undefined</emu-val>, let <var>relativeEnd</var> be <var>len</var>; else let <var>relativeEnd</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_12846"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>end</var>).</li><li>If <var>relativeEnd</var> = -∞, let <var>final</var> be 0.</li><li>Else if <var>relativeEnd</var> < 0, let <var>final</var> be <emu-xref aoid="max" id="_ref_12847"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeEnd</var>, 0).</li><li>Else, let <var>final</var> be <emu-xref aoid="min" id="_ref_12848"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeEnd</var>, <var>len</var>).</li><li>Repeat, while <var>k</var> < <var>final</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12849"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12850"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_12851"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>Pk</var>, <var>value</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>O</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.filter" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.8</span> Array.prototype.filter ( <var>callback</var> [ , <var>thisArg</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p><var>callback</var> should be a function that accepts three arguments and returns a value that is coercible to a Boolean value. <code>filter</code> calls <var>callback</var> once for each element in the array, in ascending order, and constructs a new array of all the values for which <var>callback</var> returns <emu-val>true</emu-val>. <var>callback</var> is called only for elements of the array which actually exist; it is not called for missing elements of the array.</p>
|
||
<p>If a <var>thisArg</var> parameter is provided, it will be used as the <emu-val>this</emu-val> value for each invocation of <var>callback</var>. If it is not provided, <emu-val>undefined</emu-val> is used instead.</p>
|
||
<p><var>callback</var> is called with three arguments: the value of the element, the index of the element, and the object being traversed.</p>
|
||
<p><code>filter</code> does not directly mutate the object on which it is called but the object may be mutated by the calls to <var>callback</var>.</p>
|
||
<p>The range of elements processed by <code>filter</code> is set before the first call to <var>callback</var>. Elements which are appended to the array after the call to <code>filter</code> begins will not be visited by <var>callback</var>. If existing elements of the array are changed their value as passed to <var>callback</var> will be the value at the time <code>filter</code> visits them; elements that are deleted after the call to <code>filter</code> begins and before being visited are not visited.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12852"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12853"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_12854"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>A</var> be ? <emu-xref aoid="ArraySpeciesCreate" id="_ref_12855"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arrayspeciescreate" class="e-user-code">ArraySpeciesCreate</a></emu-xref>(<var>O</var>, 0).</li><li>Let <var>k</var> be 0.</li><li>Let <var>to</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12856"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12857"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_12858"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_12859"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Let <var>selected</var> be <emu-xref aoid="ToBoolean" id="_ref_12860"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Call" id="_ref_12861"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_12862"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »)).</li><li>If <var>selected</var> is <emu-val>true</emu-val>, then<ol><li>Perform ? <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12863"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_12864"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12865"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>to</var>)), <var>kValue</var>).</li><li>Set <var>to</var> to <var>to</var> + 1.</li></ol></li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.find" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.9</span> Array.prototype.find ( <var>predicate</var> [ , <var>thisArg</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>This method calls <var>predicate</var> once for each element of the array, in ascending index order, until it finds one where <var>predicate</var> returns a value that coerces to <emu-val>true</emu-val>. If such an element is found, <code>find</code> immediately returns that element value. Otherwise, <code>find</code> returns <emu-val>undefined</emu-val>.</p>
|
||
<p>See <emu-xref aoid="FindViaPredicate" id="_ref_12866"><a href="indexed-collections.html#sec-findviapredicate">FindViaPredicate</a></emu-xref> for additional information.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12867"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12868"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>findRec</var> be ? <emu-xref aoid="FindViaPredicate" id="_ref_12869"><a href="indexed-collections.html#sec-findviapredicate" class="e-user-code">FindViaPredicate</a></emu-xref>(<var>O</var>, <var>len</var>, <emu-const>ascending</emu-const>, <var>predicate</var>, <var>thisArg</var>).</li><li>Return <var>findRec</var>.<var class="field">[[Value]]</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.findindex" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.10</span> Array.prototype.findIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>This method calls <var>predicate</var> once for each element of the array, in ascending index order, until it finds one where <var>predicate</var> returns a value that coerces to <emu-val>true</emu-val>. If such an element is found, <code>findIndex</code> immediately returns the index of that element value. Otherwise, <code>findIndex</code> returns -1.</p>
|
||
<p>See <emu-xref aoid="FindViaPredicate" id="_ref_12870"><a href="indexed-collections.html#sec-findviapredicate">FindViaPredicate</a></emu-xref> for additional information.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12871"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12872"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>findRec</var> be ? <emu-xref aoid="FindViaPredicate" id="_ref_12873"><a href="indexed-collections.html#sec-findviapredicate" class="e-user-code">FindViaPredicate</a></emu-xref>(<var>O</var>, <var>len</var>, <emu-const>ascending</emu-const>, <var>predicate</var>, <var>thisArg</var>).</li><li>Return <var>findRec</var>.<var class="field">[[Index]]</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.findlast" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.11</span> Array.prototype.findLast ( <var>predicate</var> [ , <var>thisArg</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>This method calls <var>predicate</var> once for each element of the array, in descending index order, until it finds one where <var>predicate</var> returns a value that coerces to <emu-val>true</emu-val>. If such an element is found, <code>findLast</code> immediately returns that element value. Otherwise, <code>findLast</code> returns <emu-val>undefined</emu-val>.</p>
|
||
<p>See <emu-xref aoid="FindViaPredicate" id="_ref_12874"><a href="indexed-collections.html#sec-findviapredicate">FindViaPredicate</a></emu-xref> for additional information.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12875"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12876"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>findRec</var> be ? <emu-xref aoid="FindViaPredicate" id="_ref_12877"><a href="indexed-collections.html#sec-findviapredicate" class="e-user-code">FindViaPredicate</a></emu-xref>(<var>O</var>, <var>len</var>, <emu-const>descending</emu-const>, <var>predicate</var>, <var>thisArg</var>).</li><li>Return <var>findRec</var>.<var class="field">[[Value]]</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array object. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.findlastindex" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.12</span> Array.prototype.findLastIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>This method calls <var>predicate</var> once for each element of the array, in descending index order, until it finds one where <var>predicate</var> returns a value that coerces to <emu-val>true</emu-val>. If such an element is found, <code>findLastIndex</code> immediately returns the index of that element value. Otherwise, <code>findLastIndex</code> returns -1.</p>
|
||
<p>See <emu-xref aoid="FindViaPredicate" id="_ref_12878"><a href="indexed-collections.html#sec-findviapredicate">FindViaPredicate</a></emu-xref> for additional information.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12879"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12880"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>findRec</var> be ? <emu-xref aoid="FindViaPredicate" id="_ref_12881"><a href="indexed-collections.html#sec-findviapredicate" class="e-user-code">FindViaPredicate</a></emu-xref>(<var>O</var>, <var>len</var>, <emu-const>descending</emu-const>, <var>predicate</var>, <var>thisArg</var>).</li><li>Return <var>findRec</var>.<var class="field">[[Index]]</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array object. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
|
||
<emu-clause id="sec-findviapredicate" type="abstract operation" aoid="FindViaPredicate">
|
||
<h1><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> )</h1>
|
||
<p>The abstract operation FindViaPredicate takes arguments <var>O</var> (an Object), <var>len</var> (a non-negative <emu-xref href="#integer" id="_ref_12882"><a href="notational-conventions.html#integer">integer</a></emu-xref>), <var>direction</var> (<emu-const>ascending</emu-const> or <emu-const>descending</emu-const>), <var>predicate</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_12883"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>), and <var>thisArg</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_12884"><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_12885"><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_12886"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> with fields <var class="field">[[Index]]</var> (an <emu-xref href="#integral-number" id="_ref_12887"><a href="notational-conventions.html#integral-number">integral Number</a></emu-xref>) and <var class="field">[[Value]]</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_12888"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>) or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_12889"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>.</p>
|
||
<p><var>O</var> should be an <emu-xref href="#sec-lengthofarraylike" id="_ref_12890"><a href="abstract-operations.html#sec-lengthofarraylike">array-like object</a></emu-xref> or a <emu-xref href="#typedarray" id="_ref_12891"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>. This operation calls <var>predicate</var> once for each element of <var>O</var>, in either ascending index order or descending index order (as indicated by <var>direction</var>), until it finds one where <var>predicate</var> returns a value that coerces to <emu-val>true</emu-val>. At that point, this operation returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_12892"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> that gives the index and value of the element found. If no such element is found, this operation returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_12893"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> that specifies <emu-val>-1</emu-val><sub>𝔽</sub> for the index and <emu-val>undefined</emu-val> for the value.</p>
|
||
<p><var>predicate</var> should be a function. When called for an element of the array, it is passed three arguments: the value of the element, the index of the element, and the object being traversed. Its return value will be coerced to a Boolean value.</p>
|
||
<p><var>thisArg</var> will be used as the <emu-val>this</emu-val> value for each invocation of <var>predicate</var>.</p>
|
||
<p>This operation does not directly mutate the object on which it is called, but the object may be mutated by the calls to <var>predicate</var>.</p>
|
||
<p>The range of elements processed is set before the first call to <var>predicate</var>, just before the traversal begins. Elements that are appended to the array after this will not be visited by <var>predicate</var>. If existing elements of the array are changed, their value as passed to <var>predicate</var> will be the value at the time that this operation visits them. Elements that are deleted after traversal begins and before being visited are still visited and are either looked up from the prototype or are <emu-val>undefined</emu-val>.</p>
|
||
|
||
<p>It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="IsCallable" id="_ref_12894"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>predicate</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>If <var>direction</var> is <emu-const>ascending</emu-const>, then<ol><li>Let <var>indices</var> be a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_12895"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of the <emu-xref href="#integer" id="_ref_12896"><a href="notational-conventions.html#integer">integers</a></emu-xref> in the <emu-xref href="#interval" id="_ref_12897"><a href="notational-conventions.html#interval">interval</a></emu-xref> from 0 (inclusive) to <var>len</var> (exclusive), in ascending order.</li></ol></li><li>Else,<ol><li>Let <var>indices</var> be a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_12898"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of the <emu-xref href="#integer" id="_ref_12899"><a href="notational-conventions.html#integer">integers</a></emu-xref> in the <emu-xref href="#interval" id="_ref_12900"><a href="notational-conventions.html#interval">interval</a></emu-xref> from 0 (inclusive) to <var>len</var> (exclusive), in descending order.</li></ol></li><li>For each <emu-xref href="#integer" id="_ref_12901"><a href="notational-conventions.html#integer">integer</a></emu-xref> <var>k</var> of <var>indices</var>, do<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12902"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12903"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>NOTE: If <var>O</var> is a <emu-xref href="#typedarray" id="_ref_12904"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>, the following invocation of <emu-xref aoid="Get" id="_ref_12905"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref> will return a <emu-xref href="#sec-completion-record-specification-type" id="_ref_12906"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion</a></emu-xref>.</li><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_12907"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Let <var>testResult</var> be ? <emu-xref aoid="Call" id="_ref_12908"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>predicate</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_12909"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »).</li><li>If <emu-xref aoid="ToBoolean" id="_ref_12910"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(<var>testResult</var>) is <emu-val>true</emu-val>, return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_12911"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Index]]</var>: <emu-xref aoid="𝔽" id="_ref_12912"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var class="field">[[Value]]</var>: <var>kValue</var> }.</li></ol></li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_12913"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Index]]</var>: <emu-val>-1</emu-val><sub>𝔽</sub>, <var class="field">[[Value]]</var>: <emu-val>undefined</emu-val> }.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.flat" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.13</span> Array.prototype.flat ( [ <var>depth</var> ] )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12914"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>sourceLen</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12915"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>depthNum</var> be 1.</li><li>If <var>depth</var> is not <emu-val>undefined</emu-val>, then<ol><li>Set <var>depthNum</var> to ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_12916"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>depth</var>).</li><li>If <var>depthNum</var> < 0, set <var>depthNum</var> to 0.</li></ol></li><li>Let <var>A</var> be ? <emu-xref aoid="ArraySpeciesCreate" id="_ref_12917"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arrayspeciescreate" class="e-user-code">ArraySpeciesCreate</a></emu-xref>(<var>O</var>, 0).</li><li>Perform ? <emu-xref aoid="FlattenIntoArray" id="_ref_12918"><a href="indexed-collections.html#sec-flattenintoarray" class="e-user-code">FlattenIntoArray</a></emu-xref>(<var>A</var>, <var>O</var>, <var>sourceLen</var>, 0, <var>depthNum</var>).</li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-flattenintoarray" type="abstract operation" aoid="FlattenIntoArray">
|
||
<h1><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> ] ] )</h1>
|
||
<p>The abstract operation FlattenIntoArray takes arguments <var>target</var> (an Object), <var>source</var> (an Object), <var>sourceLen</var> (a non-negative <emu-xref href="#integer" id="_ref_12919"><a href="notational-conventions.html#integer">integer</a></emu-xref>), <var>start</var> (a non-negative <emu-xref href="#integer" id="_ref_12920"><a href="notational-conventions.html#integer">integer</a></emu-xref>), and <var>depth</var> (a non-negative <emu-xref href="#integer" id="_ref_12921"><a href="notational-conventions.html#integer">integer</a></emu-xref> or +∞) and optional arguments <var>mapperFunction</var> (a <emu-xref href="#function-object" id="_ref_12922"><a href="ecmascript-data-types-and-values.html#function-object">function object</a></emu-xref>) and <var>thisArg</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_12923"><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_12924"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a non-negative <emu-xref href="#integer" id="_ref_12925"><a href="notational-conventions.html#integer">integer</a></emu-xref> or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_12926"><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><emu-xref href="#assert" id="_ref_12927"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: If <var>mapperFunction</var> is present, then <emu-xref aoid="IsCallable" id="_ref_12928"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>mapperFunction</var>) is <emu-val>true</emu-val>, <var>thisArg</var> is present, and <var>depth</var> is 1.</li><li>Let <var>targetIndex</var> be <var>start</var>.</li><li>Let <var>sourceIndex</var> be <emu-val>+0</emu-val><sub>𝔽</sub>.</li><li>Repeat, while <emu-xref aoid="ℝ" id="_ref_12929"><a href="notational-conventions.html#%E2%84%9D">ℝ</a></emu-xref>(<var>sourceIndex</var>) < <var>sourceLen</var>,<ol><li>Let <var>P</var> be ! <emu-xref aoid="ToString" id="_ref_12930"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<var>sourceIndex</var>).</li><li>Let <var>exists</var> be ? <emu-xref aoid="HasProperty" id="_ref_12931"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>source</var>, <var>P</var>).</li><li>If <var>exists</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>element</var> be ? <emu-xref aoid="Get" id="_ref_12932"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>source</var>, <var>P</var>).</li><li>If <var>mapperFunction</var> is present, then<ol><li>Set <var>element</var> to ? <emu-xref aoid="Call" id="_ref_12933"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>mapperFunction</var>, <var>thisArg</var>, « <var>element</var>, <var>sourceIndex</var>, <var>source</var> »).</li></ol></li><li>Let <var>shouldFlatten</var> be <emu-val>false</emu-val>.</li><li>If <var>depth</var> > 0, then<ol><li>Set <var>shouldFlatten</var> to ? <emu-xref aoid="IsArray" id="_ref_12934"><a href="abstract-operations.html#sec-isarray">IsArray</a></emu-xref>(<var>element</var>).</li></ol></li><li>If <var>shouldFlatten</var> is <emu-val>true</emu-val>, then<ol><li>If <var>depth</var> = +∞, let <var>newDepth</var> be +∞.</li><li>Else, let <var>newDepth</var> be <var>depth</var> - 1.</li><li>Let <var>elementLen</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12935"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>element</var>).</li><li>Set <var>targetIndex</var> to ? <emu-xref aoid="FlattenIntoArray" id="_ref_12936"><a href="indexed-collections.html#sec-flattenintoarray" class="e-user-code">FlattenIntoArray</a></emu-xref>(<var>target</var>, <var>element</var>, <var>elementLen</var>, <var>targetIndex</var>, <var>newDepth</var>).</li></ol></li><li>Else,<ol><li>If <var>targetIndex</var> ≥ 2<sup>53</sup> - 1, throw a <emu-val>TypeError</emu-val> exception.</li><li>Perform ? <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_12937"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>target</var>, ! <emu-xref aoid="ToString" id="_ref_12938"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12939"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>targetIndex</var>)), <var>element</var>).</li><li>Set <var>targetIndex</var> to <var>targetIndex</var> + 1.</li></ol></li></ol></li><li>Set <var>sourceIndex</var> to <var>sourceIndex</var> + <emu-val>1</emu-val><sub>𝔽</sub>.</li></ol></li><li>Return <var>targetIndex</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.flatmap" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.14</span> Array.prototype.flatMap ( <var>mapperFunction</var> [ , <var>thisArg</var> ] )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12940"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>sourceLen</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12941"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_12942"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>mapperFunction</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>A</var> be ? <emu-xref aoid="ArraySpeciesCreate" id="_ref_12943"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arrayspeciescreate" class="e-user-code">ArraySpeciesCreate</a></emu-xref>(<var>O</var>, 0).</li><li>Perform ? <emu-xref aoid="FlattenIntoArray" id="_ref_12944"><a href="indexed-collections.html#sec-flattenintoarray" class="e-user-code">FlattenIntoArray</a></emu-xref>(<var>A</var>, <var>O</var>, <var>sourceLen</var>, 0, 1, <var>mapperFunction</var>, <var>thisArg</var>).</li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.foreach" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.15</span> Array.prototype.forEach ( <var>callback</var> [ , <var>thisArg</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p><var>callback</var> should be a function that accepts three arguments. <code>forEach</code> calls <var>callback</var> once for each element present in the array, in ascending order. <var>callback</var> is called only for elements of the array which actually exist; it is not called for missing elements of the array.</p>
|
||
<p>If a <var>thisArg</var> parameter is provided, it will be used as the <emu-val>this</emu-val> value for each invocation of <var>callback</var>. If it is not provided, <emu-val>undefined</emu-val> is used instead.</p>
|
||
<p><var>callback</var> is called with three arguments: the value of the element, the index of the element, and the object being traversed.</p>
|
||
<p><code>forEach</code> does not directly mutate the object on which it is called but the object may be mutated by the calls to <var>callback</var>.</p>
|
||
<p>The range of elements processed by <code>forEach</code> is set before the first call to <var>callback</var>. Elements which are appended to the array after the call to <code>forEach</code> begins will not be visited by <var>callback</var>. If existing elements of the array are changed, their value as passed to <var>callback</var> will be the value at the time <code>forEach</code> visits them; elements that are deleted after the call to <code>forEach</code> begins and before being visited are not visited.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12945"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12946"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_12947"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12948"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12949"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_12950"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_12951"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Perform ? <emu-xref aoid="Call" id="_ref_12952"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_12953"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »).</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-val>undefined</emu-val>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.includes" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.16</span> Array.prototype.includes ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>This method compares <var>searchElement</var> to the elements of the array, in ascending order, using the <emu-xref aoid="SameValueZero" id="_ref_12954"><a href="abstract-operations.html#sec-samevaluezero">SameValueZero</a></emu-xref> algorithm, and if found at any position, returns <emu-val>true</emu-val>; otherwise, it returns <emu-val>false</emu-val>.</p>
|
||
<p>The optional second argument <var>fromIndex</var> defaults to <emu-val>+0</emu-val><sub>𝔽</sub> (i.e. the whole array is searched). If it is greater than or equal to the length of the array, <emu-val>false</emu-val> is returned, i.e. the array will not be searched. If it is less than <emu-val>-0</emu-val><sub>𝔽</sub>, it is used as the offset from the end of the array to compute <var>fromIndex</var>. If the computed index is less than or equal to <emu-val>+0</emu-val><sub>𝔽</sub>, the whole array will be searched.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12955"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12956"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <var>len</var> = 0, return <emu-val>false</emu-val>.</li><li>Let <var>n</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_12957"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>fromIndex</var>).</li><li><emu-xref href="#assert" id="_ref_12958"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: If <var>fromIndex</var> is <emu-val>undefined</emu-val>, then <var>n</var> is 0.</li><li>If <var>n</var> = +∞, return <emu-val>false</emu-val>.</li><li>If <var>n</var> = -∞, set <var>n</var> to 0.</li><li>If <var>n</var> ≥ 0, then<ol><li>Let <var>k</var> be <var>n</var>.</li></ol></li><li>Else,<ol><li>Let <var>k</var> be <var>len</var> + <var>n</var>.</li><li>If <var>k</var> < 0, set <var>k</var> to 0.</li></ol></li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>elementK</var> be ? <emu-xref aoid="Get" id="_ref_12959"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_12960"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12961"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>))).</li><li>If <emu-xref aoid="SameValueZero" id="_ref_12962"><a href="abstract-operations.html#sec-samevaluezero">SameValueZero</a></emu-xref>(<var>searchElement</var>, <var>elementK</var>) is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>This method intentionally differs from the similar <code>indexOf</code> method in two ways. First, it uses the <emu-xref aoid="SameValueZero" id="_ref_12963"><a href="abstract-operations.html#sec-samevaluezero">SameValueZero</a></emu-xref> algorithm, instead of <emu-xref aoid="IsStrictlyEqual" id="_ref_12964"><a href="abstract-operations.html#sec-isstrictlyequal">IsStrictlyEqual</a></emu-xref>, allowing it to detect <emu-val>NaN</emu-val> array elements. Second, it does not skip missing array elements, instead treating them as <emu-val>undefined</emu-val>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.indexof" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.17</span> Array.prototype.indexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</h1>
|
||
<p>This method compares <var>searchElement</var> to the elements of the array, in ascending order, using the <emu-xref aoid="IsStrictlyEqual" id="_ref_12965"><a href="abstract-operations.html#sec-isstrictlyequal">IsStrictlyEqual</a></emu-xref> algorithm, and if found at one or more indices, returns the smallest such index; otherwise, it returns <emu-val>-1</emu-val><sub>𝔽</sub>.</p>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>The optional second argument <var>fromIndex</var> defaults to <emu-val>+0</emu-val><sub>𝔽</sub> (i.e. the whole array is searched). If it is greater than or equal to the length of the array, <emu-val>-1</emu-val><sub>𝔽</sub> is returned, i.e. the array will not be searched. If it is less than <emu-val>-0</emu-val><sub>𝔽</sub>, it is used as the offset from the end of the array to compute <var>fromIndex</var>. If the computed index is less than or equal to <emu-val>+0</emu-val><sub>𝔽</sub>, the whole array will be searched.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12966"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12967"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <var>len</var> = 0, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>Let <var>n</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_12968"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>fromIndex</var>).</li><li><emu-xref href="#assert" id="_ref_12969"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: If <var>fromIndex</var> is <emu-val>undefined</emu-val>, then <var>n</var> is 0.</li><li>If <var>n</var> = +∞, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>If <var>n</var> = -∞, set <var>n</var> to 0.</li><li>If <var>n</var> ≥ 0, then<ol><li>Let <var>k</var> be <var>n</var>.</li></ol></li><li>Else,<ol><li>Let <var>k</var> be <var>len</var> + <var>n</var>.</li><li>If <var>k</var> < 0, set <var>k</var> to 0.</li></ol></li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12970"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12971"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_12972"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>elementK</var> be ? <emu-xref aoid="Get" id="_ref_12973"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <emu-xref aoid="IsStrictlyEqual" id="_ref_12974"><a href="abstract-operations.html#sec-isstrictlyequal">IsStrictlyEqual</a></emu-xref>(<var>searchElement</var>, <var>elementK</var>) is <emu-val>true</emu-val>, return <emu-xref aoid="𝔽" id="_ref_12975"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-val>-1</emu-val><sub>𝔽</sub>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.join" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.18</span> Array.prototype.join ( <var>separator</var> )</h1>
|
||
<p>This method converts the elements of the array to Strings, and then concatenates these Strings, separated by occurrences of the <var>separator</var>. If no separator is provided, a single comma is used as the separator.</p>
|
||
<p>It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12976"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12977"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <var>separator</var> is <emu-val>undefined</emu-val>, let <var>sep</var> be <emu-val>","</emu-val>.</li><li>Else, let <var>sep</var> be ? <emu-xref aoid="ToString" id="_ref_12978"><a href="abstract-operations.html#sec-tostring" class="e-user-code">ToString</a></emu-xref>(<var>separator</var>).</li><li>Let <var>R</var> be the empty String.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>If <var>k</var> > 0, set <var>R</var> to the <emu-xref href="#string-concatenation" id="_ref_12979"><a href="ecmascript-data-types-and-values.html#string-concatenation">string-concatenation</a></emu-xref> of <var>R</var> and <var>sep</var>.</li><li>Let <var>element</var> be ? <emu-xref aoid="Get" id="_ref_12980"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_12981"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12982"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>))).</li><li>If <var>element</var> is neither <emu-val>undefined</emu-val> nor <emu-val>null</emu-val>, then<ol><li>Let <var>S</var> be ? <emu-xref aoid="ToString" id="_ref_12983"><a href="abstract-operations.html#sec-tostring" class="e-user-code">ToString</a></emu-xref>(<var>element</var>).</li><li>Set <var>R</var> to the <emu-xref href="#string-concatenation" id="_ref_12984"><a href="ecmascript-data-types-and-values.html#string-concatenation">string-concatenation</a></emu-xref> of <var>R</var> and <var>S</var>.</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>R</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore, it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.keys" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.19</span> Array.prototype.keys ( )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12985"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Return <emu-xref aoid="CreateArrayIterator" id="_ref_12986"><a href="indexed-collections.html#sec-createarrayiterator">CreateArrayIterator</a></emu-xref>(<var>O</var>, <emu-const>key</emu-const>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.lastindexof" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.20</span> Array.prototype.lastIndexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>This method compares <var>searchElement</var> to the elements of the array in descending order using the <emu-xref aoid="IsStrictlyEqual" id="_ref_12987"><a href="abstract-operations.html#sec-isstrictlyequal">IsStrictlyEqual</a></emu-xref> algorithm, and if found at one or more indices, returns the largest such index; otherwise, it returns <emu-val>-1</emu-val><sub>𝔽</sub>.</p>
|
||
<p>The optional second argument <var>fromIndex</var> defaults to the array's length minus one (i.e. the whole array is searched). If it is greater than or equal to the length of the array, the whole array will be searched. If it is less than <emu-val>-0</emu-val><sub>𝔽</sub>, it is used as the offset from the end of the array to compute <var>fromIndex</var>. If the computed index is less than or equal to <emu-val>+0</emu-val><sub>𝔽</sub>, <emu-val>-1</emu-val><sub>𝔽</sub> is returned.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12988"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12989"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <var>len</var> = 0, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>If <var>fromIndex</var> is present, let <var>n</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_12990"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>fromIndex</var>); else let <var>n</var> be <var>len</var> - 1.</li><li>If <var>n</var> = -∞, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>If <var>n</var> ≥ 0, then<ol><li>Let <var>k</var> be <emu-xref aoid="min" id="_ref_12991"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>n</var>, <var>len</var> - 1).</li></ol></li><li>Else,<ol><li>Let <var>k</var> be <var>len</var> + <var>n</var>.</li></ol></li><li>Repeat, while <var>k</var> ≥ 0,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_12992"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_12993"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_12994"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>elementK</var> be ? <emu-xref aoid="Get" id="_ref_12995"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <emu-xref aoid="IsStrictlyEqual" id="_ref_12996"><a href="abstract-operations.html#sec-isstrictlyequal">IsStrictlyEqual</a></emu-xref>(<var>searchElement</var>, <var>elementK</var>) is <emu-val>true</emu-val>, return <emu-xref aoid="𝔽" id="_ref_12997"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> - 1.</li></ol></li><li>Return <emu-val>-1</emu-val><sub>𝔽</sub>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.map" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.21</span> Array.prototype.map ( <var>callback</var> [ , <var>thisArg</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p><var>callback</var> should be a function that accepts three arguments. <code>map</code> calls <var>callback</var> once for each element in the array, in ascending order, and constructs a new Array from the results. <var>callback</var> is called only for elements of the array which actually exist; it is not called for missing elements of the array.</p>
|
||
<p>If a <var>thisArg</var> parameter is provided, it will be used as the <emu-val>this</emu-val> value for each invocation of <var>callback</var>. If it is not provided, <emu-val>undefined</emu-val> is used instead.</p>
|
||
<p><var>callback</var> is called with three arguments: the value of the element, the index of the element, and the object being traversed.</p>
|
||
<p><code>map</code> does not directly mutate the object on which it is called but the object may be mutated by the calls to <var>callback</var>.</p>
|
||
<p>The range of elements processed by <code>map</code> is set before the first call to <var>callback</var>. Elements which are appended to the array after the call to <code>map</code> begins will not be visited by <var>callback</var>. If existing elements of the array are changed, their value as passed to <var>callback</var> will be the value at the time <code>map</code> visits them; elements that are deleted after the call to <code>map</code> begins and before being visited are not visited.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_12998"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_12999"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13000"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>A</var> be ? <emu-xref aoid="ArraySpeciesCreate" id="_ref_13001"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arrayspeciescreate" class="e-user-code">ArraySpeciesCreate</a></emu-xref>(<var>O</var>, <var>len</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13002"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13003"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_13004"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_13005"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Let <var>mappedValue</var> be ? <emu-xref aoid="Call" id="_ref_13006"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13007"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »).</li><li>Perform ? <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13008"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>mappedValue</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.pop" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.22</span> Array.prototype.pop ( )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>This method removes the last element of the array and returns it.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13009"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13010"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <var>len</var> = 0, then<ol><li>Perform ? <emu-xref aoid="Set" id="_ref_13011"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <emu-val>"length"</emu-val>, <emu-val>+0</emu-val><sub>𝔽</sub>, <emu-val>true</emu-val>).</li><li>Return <emu-val>undefined</emu-val>.</li></ol></li><li><emu-xref href="#assert" id="_ref_13012"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>len</var> > 0.</li><li>Let <var>newLen</var> be <emu-xref aoid="𝔽" id="_ref_13013"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var> - 1).</li><li>Let <var>index</var> be ! <emu-xref aoid="ToString" id="_ref_13014"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<var>newLen</var>).</li><li>Let <var>element</var> be ? <emu-xref aoid="Get" id="_ref_13015"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>index</var>).</li><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_13016"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>O</var>, <var>index</var>).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13017"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <emu-val>"length"</emu-val>, <var>newLen</var>, <emu-val>true</emu-val>).</li><li>Return <var>element</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.push" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.23</span> Array.prototype.push ( ...<var>items</var> )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>This method appends the arguments to the end of the array, in the order in which they appear. It returns the new length of the array.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13018"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13019"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>argCount</var> be the number of elements in <var>items</var>.</li><li>If <var>len</var> + <var>argCount</var> > 2<sup>53</sup> - 1, throw a <emu-val>TypeError</emu-val> exception.</li><li>For each element <var>E</var> of <var>items</var>, do<ol><li>Perform ? <emu-xref aoid="Set" id="_ref_13020"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_13021"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13022"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>)), <var>E</var>, <emu-val>true</emu-val>).</li><li>Set <var>len</var> to <var>len</var> + 1.</li></ol></li><li>Perform ? <emu-xref aoid="Set" id="_ref_13023"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_13024"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>), <emu-val>true</emu-val>).</li><li>Return <emu-xref aoid="𝔽" id="_ref_13025"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>).</li></ol></emu-alg>
|
||
<p>The <emu-val>"length"</emu-val> property of this method is <emu-val>1</emu-val><sub>𝔽</sub>.</p>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.reduce" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.24</span> Array.prototype.reduce ( <var>callback</var> [ , <var>initialValue</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p><var>callback</var> should be a function that takes four arguments. <code>reduce</code> calls the callback, as a function, once for each element after the first element present in the array, in ascending order.</p>
|
||
<p><var>callback</var> is called with four arguments: the <var>previousValue</var> (value from the previous call to <var>callback</var>), the <var>currentValue</var> (value of the current element), the <var>currentIndex</var>, and the object being traversed. The first time that callback is called, the <var>previousValue</var> and <var>currentValue</var> can be one of two values. If an <var>initialValue</var> was supplied in the call to <code>reduce</code>, then <var>previousValue</var> will be <var>initialValue</var> and <var>currentValue</var> will be the first value in the array. If no <var>initialValue</var> was supplied, then <var>previousValue</var> will be the first value in the array and <var>currentValue</var> will be the second. It is a <emu-val>TypeError</emu-val> if the array contains no elements and <var>initialValue</var> is not provided.</p>
|
||
<p><code>reduce</code> does not directly mutate the object on which it is called but the object may be mutated by the calls to <var>callback</var>.</p>
|
||
<p>The range of elements processed by <code>reduce</code> is set before the first call to <var>callback</var>. Elements that are appended to the array after the call to <code>reduce</code> begins will not be visited by <var>callback</var>. If existing elements of the array are changed, their value as passed to <var>callback</var> will be the value at the time <code>reduce</code> visits them; elements that are deleted after the call to <code>reduce</code> begins and before being visited are not visited.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13026"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13027"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13028"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>If <var>len</var> = 0 and <var>initialValue</var> is not present, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be 0.</li><li>Let <var>accumulator</var> be <emu-val>undefined</emu-val>.</li><li>If <var>initialValue</var> is present, then<ol><li>Set <var>accumulator</var> to <var>initialValue</var>.</li></ol></li><li>Else,<ol><li>Let <var>kPresent</var> be <emu-val>false</emu-val>.</li><li>Repeat, while <var>kPresent</var> is <emu-val>false</emu-val> and <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13029"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13030"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Set <var>kPresent</var> to ? <emu-xref aoid="HasProperty" id="_ref_13031"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Set <var>accumulator</var> to ? <emu-xref aoid="Get" id="_ref_13032"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>If <var>kPresent</var> is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li></ol></li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13033"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13034"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_13035"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_13036"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Set <var>accumulator</var> to ? <emu-xref aoid="Call" id="_ref_13037"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <emu-val>undefined</emu-val>, « <var>accumulator</var>, <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13038"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »).</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>accumulator</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.reduceright" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.25</span> Array.prototype.reduceRight ( <var>callback</var> [ , <var>initialValue</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p><var>callback</var> should be a function that takes four arguments. <code>reduceRight</code> calls the callback, as a function, once for each element after the first element present in the array, in descending order.</p>
|
||
<p><var>callback</var> is called with four arguments: the <var>previousValue</var> (value from the previous call to <var>callback</var>), the <var>currentValue</var> (value of the current element), the <var>currentIndex</var>, and the object being traversed. The first time the function is called, the <var>previousValue</var> and <var>currentValue</var> can be one of two values. If an <var>initialValue</var> was supplied in the call to <code>reduceRight</code>, then <var>previousValue</var> will be <var>initialValue</var> and <var>currentValue</var> will be the last value in the array. If no <var>initialValue</var> was supplied, then <var>previousValue</var> will be the last value in the array and <var>currentValue</var> will be the second-to-last value. It is a <emu-val>TypeError</emu-val> if the array contains no elements and <var>initialValue</var> is not provided.</p>
|
||
<p><code>reduceRight</code> does not directly mutate the object on which it is called but the object may be mutated by the calls to <var>callback</var>.</p>
|
||
<p>The range of elements processed by <code>reduceRight</code> is set before the first call to <var>callback</var>. Elements that are appended to the array after the call to <code>reduceRight</code> begins will not be visited by <var>callback</var>. If existing elements of the array are changed by <var>callback</var>, their value as passed to <var>callback</var> will be the value at the time <code>reduceRight</code> visits them; elements that are deleted after the call to <code>reduceRight</code> begins and before being visited are not visited.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13039"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13040"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13041"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>If <var>len</var> = 0 and <var>initialValue</var> is not present, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be <var>len</var> - 1.</li><li>Let <var>accumulator</var> be <emu-val>undefined</emu-val>.</li><li>If <var>initialValue</var> is present, then<ol><li>Set <var>accumulator</var> to <var>initialValue</var>.</li></ol></li><li>Else,<ol><li>Let <var>kPresent</var> be <emu-val>false</emu-val>.</li><li>Repeat, while <var>kPresent</var> is <emu-val>false</emu-val> and <var>k</var> ≥ 0,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13042"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13043"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Set <var>kPresent</var> to ? <emu-xref aoid="HasProperty" id="_ref_13044"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Set <var>accumulator</var> to ? <emu-xref aoid="Get" id="_ref_13045"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> - 1.</li></ol></li><li>If <var>kPresent</var> is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li></ol></li><li>Repeat, while <var>k</var> ≥ 0,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13046"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13047"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_13048"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_13049"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Set <var>accumulator</var> to ? <emu-xref aoid="Call" id="_ref_13050"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <emu-val>undefined</emu-val>, « <var>accumulator</var>, <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13051"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »).</li></ol></li><li>Set <var>k</var> to <var>k</var> - 1.</li></ol></li><li>Return <var>accumulator</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.reverse" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.26</span> Array.prototype.reverse ( )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>This method rearranges the elements of the array so as to reverse their order. It returns the reversed array.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13052"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13053"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>middle</var> be <emu-xref aoid="floor" id="_ref_13054"><a href="notational-conventions.html#eqn-floor">floor</a></emu-xref>(<var>len</var> / 2).</li><li>Let <var>lower</var> be 0.</li><li>Repeat, while <var>lower</var> ≠ <var>middle</var>,<ol><li>Let <var>upper</var> be <var>len</var> - <var>lower</var> - 1.</li><li>Let <var>upperP</var> be ! <emu-xref aoid="ToString" id="_ref_13055"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13056"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>upper</var>)).</li><li>Let <var>lowerP</var> be ! <emu-xref aoid="ToString" id="_ref_13057"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13058"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>lower</var>)).</li><li>Let <var>lowerExists</var> be ? <emu-xref aoid="HasProperty" id="_ref_13059"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>lowerP</var>).</li><li>If <var>lowerExists</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>lowerValue</var> be ? <emu-xref aoid="Get" id="_ref_13060"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>lowerP</var>).</li></ol></li><li>Let <var>upperExists</var> be ? <emu-xref aoid="HasProperty" id="_ref_13061"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>upperP</var>).</li><li>If <var>upperExists</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>upperValue</var> be ? <emu-xref aoid="Get" id="_ref_13062"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>upperP</var>).</li></ol></li><li>If <var>lowerExists</var> is <emu-val>true</emu-val> and <var>upperExists</var> is <emu-val>true</emu-val>, then<ol><li>Perform ? <emu-xref aoid="Set" id="_ref_13063"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>lowerP</var>, <var>upperValue</var>, <emu-val>true</emu-val>).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13064"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>upperP</var>, <var>lowerValue</var>, <emu-val>true</emu-val>).</li></ol></li><li>Else if <var>lowerExists</var> is <emu-val>false</emu-val> and <var>upperExists</var> is <emu-val>true</emu-val>, then<ol><li>Perform ? <emu-xref aoid="Set" id="_ref_13065"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>lowerP</var>, <var>upperValue</var>, <emu-val>true</emu-val>).</li><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_13066"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>O</var>, <var>upperP</var>).</li></ol></li><li>Else if <var>lowerExists</var> is <emu-val>true</emu-val> and <var>upperExists</var> is <emu-val>false</emu-val>, then<ol><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_13067"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>O</var>, <var>lowerP</var>).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13068"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>upperP</var>, <var>lowerValue</var>, <emu-val>true</emu-val>).</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_13069"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>lowerExists</var> and <var>upperExists</var> are both <emu-val>false</emu-val>.</li><li>NOTE: No action is required.</li></ol></li><li>Set <var>lower</var> to <var>lower</var> + 1.</li></ol></li><li>Return <var>O</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore, it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.shift" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.27</span> Array.prototype.shift ( )</h1>
|
||
<p>This method removes the first element of the array and returns it.</p>
|
||
<p>It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13070"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13071"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <var>len</var> = 0, then<ol><li>Perform ? <emu-xref aoid="Set" id="_ref_13072"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <emu-val>"length"</emu-val>, <emu-val>+0</emu-val><sub>𝔽</sub>, <emu-val>true</emu-val>).</li><li>Return <emu-val>undefined</emu-val>.</li></ol></li><li>Let <var>first</var> be ? <emu-xref aoid="Get" id="_ref_13073"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <emu-val>"0"</emu-val>).</li><li>Let <var>k</var> be 1.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>from</var> be ! <emu-xref aoid="ToString" id="_ref_13074"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13075"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>to</var> be ! <emu-xref aoid="ToString" id="_ref_13076"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13077"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var> - 1)).</li><li>Let <var>fromPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_13078"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>from</var>).</li><li>If <var>fromPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>fromValue</var> be ? <emu-xref aoid="Get" id="_ref_13079"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>from</var>).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13080"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>to</var>, <var>fromValue</var>, <emu-val>true</emu-val>).</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_13081"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>fromPresent</var> is <emu-val>false</emu-val>.</li><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_13082"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>O</var>, <var>to</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_13083"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_13084"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13085"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var> - 1))).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13086"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_13087"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var> - 1), <emu-val>true</emu-val>).</li><li>Return <var>first</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.slice" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.28</span> Array.prototype.slice ( <var>start</var>, <var>end</var> )</h1>
|
||
<p>This method returns an array containing the elements of the array from element <var>start</var> up to, but not including, element <var>end</var> (or through the end of the array if <var>end</var> is <emu-val>undefined</emu-val>). If <var>start</var> is negative, it is treated as <emu-eqn class="inline"><var>length</var> + <var>start</var></emu-eqn> where <var>length</var> is the length of the array. If <var>end</var> is negative, it is treated as <emu-eqn class="inline"><var>length</var> + <var>end</var></emu-eqn> where <var>length</var> is the length of the array.</p>
|
||
<p>It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13088"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13089"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>relativeStart</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13090"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>start</var>).</li><li>If <var>relativeStart</var> = -∞, let <var>k</var> be 0.</li><li>Else if <var>relativeStart</var> < 0, let <var>k</var> be <emu-xref aoid="max" id="_ref_13091"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeStart</var>, 0).</li><li>Else, let <var>k</var> be <emu-xref aoid="min" id="_ref_13092"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeStart</var>, <var>len</var>).</li><li>If <var>end</var> is <emu-val>undefined</emu-val>, let <var>relativeEnd</var> be <var>len</var>; else let <var>relativeEnd</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13093"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>end</var>).</li><li>If <var>relativeEnd</var> = -∞, let <var>final</var> be 0.</li><li>Else if <var>relativeEnd</var> < 0, let <var>final</var> be <emu-xref aoid="max" id="_ref_13094"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeEnd</var>, 0).</li><li>Else, let <var>final</var> be <emu-xref aoid="min" id="_ref_13095"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeEnd</var>, <var>len</var>).</li><li>Let <var>count</var> be <emu-xref aoid="max" id="_ref_13096"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>final</var> - <var>k</var>, 0).</li><li>Let <var>A</var> be ? <emu-xref aoid="ArraySpeciesCreate" id="_ref_13097"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arrayspeciescreate" class="e-user-code">ArraySpeciesCreate</a></emu-xref>(<var>O</var>, <var>count</var>).</li><li>Let <var>n</var> be 0.</li><li>Repeat, while <var>k</var> < <var>final</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13098"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13099"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_13100"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_13101"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Perform ? <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13102"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_13103"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13104"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>n</var>)), <var>kValue</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li><li>Set <var>n</var> to <var>n</var> + 1.</li></ol></li><li id="step-array-proto-slice-set-length">Perform ? <emu-xref aoid="Set" id="_ref_13105"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>A</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_13106"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>n</var>), <emu-val>true</emu-val>).</li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>The explicit setting of the <emu-val>"length"</emu-val> property in step <emu-xref href="#step-array-proto-slice-set-length" id="_ref_719"><a href="indexed-collections.html#step-array-proto-slice-set-length">15</a></emu-xref> is intended to ensure the length is correct even when <var>A</var> is not a built-in Array.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.some" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.29</span> Array.prototype.some ( <var>callback</var> [ , <var>thisArg</var> ] )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p><var>callback</var> should be a function that accepts three arguments and returns a value that is coercible to a Boolean value. <code>some</code> calls <var>callback</var> once for each element present in the array, in ascending order, until it finds one where <var>callback</var> returns <emu-val>true</emu-val>. If such an element is found, <code>some</code> immediately returns <emu-val>true</emu-val>. Otherwise, <code>some</code> returns <emu-val>false</emu-val>. <var>callback</var> is called only for elements of the array which actually exist; it is not called for missing elements of the array.</p>
|
||
<p>If a <var>thisArg</var> parameter is provided, it will be used as the <emu-val>this</emu-val> value for each invocation of <var>callback</var>. If it is not provided, <emu-val>undefined</emu-val> is used instead.</p>
|
||
<p><var>callback</var> is called with three arguments: the value of the element, the index of the element, and the object being traversed.</p>
|
||
<p><code>some</code> does not directly mutate the object on which it is called but the object may be mutated by the calls to <var>callback</var>.</p>
|
||
<p>The range of elements processed by <code>some</code> is set before the first call to <var>callback</var>. Elements that are appended to the array after the call to <code>some</code> begins will not be visited by <var>callback</var>. If existing elements of the array are changed, their value as passed to <var>callback</var> will be the value at the time that <code>some</code> visits them; elements that are deleted after the call to <code>some</code> begins and before being visited are not visited. <code>some</code> acts like the "exists" quantifier in mathematics. In particular, for an empty array, it returns <emu-val>false</emu-val>.</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13107"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13108"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13109"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13110"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13111"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_13112"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_13113"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Let <var>testResult</var> be <emu-xref aoid="ToBoolean" id="_ref_13114"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Call" id="_ref_13115"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13116"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »)).</li><li>If <var>testResult</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.sort" oldids="sec-sortcompare" type="built-in function"><span id="sec-sortcompare"></span>
|
||
<h1><span class="secnum">23.1.3.30</span> Array.prototype.sort ( <var>comparator</var> )</h1>
|
||
<p>This method sorts the elements of this array. If <var>comparator</var> is not <emu-val>undefined</emu-val>, it should be a function that accepts two arguments <var>x</var> and <var>y</var> and returns a negative Number if <var>x</var> < <var>y</var>, a positive Number if <var>x</var> > <var>y</var>, or a zero otherwise.</p>
|
||
<p>It performs the following steps when called:</p>
|
||
<emu-alg><ol><li id="step-array-sort-comparefn">If <var>comparator</var> is not <emu-val>undefined</emu-val> and <emu-xref aoid="IsCallable" id="_ref_13117"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>comparator</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>obj</var> be ? <emu-xref aoid="ToObject" id="_ref_13118"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li id="step-array-sort-len">Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13119"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>obj</var>).</li><li>Let <var>SortCompare</var> be a new <emu-xref href="#sec-abstract-closure" id="_ref_13120"><a href="ecmascript-data-types-and-values.html#sec-abstract-closure">Abstract Closure</a></emu-xref> with parameters (<var>x</var>, <var>y</var>) that captures <var>comparator</var> and performs the following steps when called:<ol><li>Return ? <emu-xref aoid="CompareArrayElements" id="_ref_13121"><a href="indexed-collections.html#sec-comparearrayelements">CompareArrayElements</a></emu-xref>(<var>x</var>, <var>y</var>, <var>comparator</var>).</li></ol></li><li id="step-array-sortindexedproperties">Let <var>sortedList</var> be ? <emu-xref aoid="SortIndexedProperties" id="_ref_13122"><a href="indexed-collections.html#sec-sortindexedproperties" class="e-user-code">SortIndexedProperties</a></emu-xref>(<var>obj</var>, <var>len</var>, <var>SortCompare</var>, <emu-const>skip-holes</emu-const>).</li><li>Let <var>itemCount</var> be the number of elements in <var>sortedList</var>.</li><li>Let <var>j</var> be 0.</li><li>Repeat, while <var>j</var> < <var>itemCount</var>,<ol><li>Perform ? <emu-xref aoid="Set" id="_ref_13123"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>obj</var>, ! <emu-xref aoid="ToString" id="_ref_13124"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13125"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>j</var>)), <var>sortedList</var>[<var>j</var>], <emu-val>true</emu-val>).</li><li>Set <var>j</var> to <var>j</var> + 1.</li></ol></li><li>NOTE: The call to <emu-xref aoid="SortIndexedProperties" id="_ref_13126"><a href="indexed-collections.html#sec-sortindexedproperties">SortIndexedProperties</a></emu-xref> in step <emu-xref href="#step-array-sortindexedproperties" id="_ref_720"><a href="indexed-collections.html#step-array-sortindexedproperties">5</a></emu-xref> uses <emu-const>skip-holes</emu-const>. The remaining indices are deleted to preserve the number of holes that were detected and excluded from the sort.</li><li>Repeat, while <var>j</var> < <var>len</var>,<ol><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_13127"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>obj</var>, ! <emu-xref aoid="ToString" id="_ref_13128"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13129"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>j</var>))).</li><li>Set <var>j</var> to <var>j</var> + 1.</li></ol></li><li>Return <var>obj</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>Because non-existent property values always compare greater than <emu-val>undefined</emu-val> property values, and <emu-val>undefined</emu-val> always compares greater than any other value (see <emu-xref aoid="CompareArrayElements" id="_ref_13130"><a href="indexed-collections.html#sec-comparearrayelements">CompareArrayElements</a></emu-xref>), <emu-val>undefined</emu-val> property values always sort to the end of the result, followed by non-existent property values.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>Method calls performed by the <emu-xref aoid="ToString" id="_ref_13131"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref> <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_13132"><a href="notational-conventions.html#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref> in steps <emu-xref href="#step-sortcompare-tostring-x" id="_ref_721"><a href="indexed-collections.html#step-sortcompare-tostring-x">5</a></emu-xref> and <emu-xref href="#step-sortcompare-tostring-y" id="_ref_722"><a href="indexed-collections.html#step-sortcompare-tostring-y">6</a></emu-xref> have the potential to cause <var>SortCompare</var> to not behave as a <emu-xref href="#consistent-comparator" id="_ref_13133"><a href="indexed-collections.html#consistent-comparator">consistent comparator</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore, it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
|
||
<emu-clause id="sec-sortindexedproperties" type="abstract operation" aoid="SortIndexedProperties">
|
||
<h1><span class="secnum">23.1.3.30.1</span> SortIndexedProperties ( <var>obj</var>, <var>len</var>, <var>SortCompare</var>, <var>holes</var> )</h1>
|
||
<p>The abstract operation SortIndexedProperties takes arguments <var>obj</var> (an Object), <var>len</var> (a non-negative <emu-xref href="#integer" id="_ref_13134"><a href="notational-conventions.html#integer">integer</a></emu-xref>), <var>SortCompare</var> (an <emu-xref href="#sec-abstract-closure" id="_ref_13135"><a href="ecmascript-data-types-and-values.html#sec-abstract-closure">Abstract Closure</a></emu-xref> with two parameters), and <var>holes</var> (<emu-const>skip-holes</emu-const> or <emu-const>read-through-holes</emu-const>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13136"><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_13137"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-ecmascript-language-types" id="_ref_13138"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language values</a></emu-xref> or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13139"><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>Let <var>items</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_13140"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13141"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13142"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>If <var>holes</var> is <emu-const>skip-holes</emu-const>, then<ol><li>Let <var>kRead</var> be ? <emu-xref aoid="HasProperty" id="_ref_13143"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>obj</var>, <var>Pk</var>).</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_13144"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>holes</var> is <emu-const>read-through-holes</emu-const>.</li><li>Let <var>kRead</var> be <emu-val>true</emu-val>.</li></ol></li><li>If <var>kRead</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_13145"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>obj</var>, <var>Pk</var>).</li><li>Append <var>kValue</var> to <var>items</var>.</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li id="step-array-sort">Sort <var>items</var> using an <emu-xref href="#implementation-defined" id="_ref_13146"><a href="overview.html#implementation-defined">implementation-defined</a></emu-xref> sequence of <span class="e-user-code">calls to <var>SortCompare</var></span>. If any such call returns an <emu-xref href="#sec-completion-record-specification-type" id="_ref_13147"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, stop before performing any further calls to <var>SortCompare</var> and return that <emu-xref href="#sec-completion-record-specification-type" id="_ref_13148"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">Completion Record</a></emu-xref>.</li><li>Return <var>items</var>.</li></ol></emu-alg>
|
||
<p>The <dfn id="sort-order" tabindex="-1">sort order</dfn> is the ordering of <var>items</var> after completion of step <emu-xref href="#step-array-sort" id="_ref_723"><a href="indexed-collections.html#step-array-sort">4</a></emu-xref> of the algorithm above. The <emu-xref href="#sort-order" id="_ref_13149"><a href="indexed-collections.html#sort-order">sort order</a></emu-xref> is <emu-xref href="#implementation-defined" id="_ref_13150"><a href="overview.html#implementation-defined">implementation-defined</a></emu-xref> if <var>SortCompare</var> is not a <emu-xref href="#consistent-comparator" id="_ref_13151"><a href="indexed-collections.html#consistent-comparator">consistent comparator</a></emu-xref> for the elements of <var>items</var>. When SortIndexedProperties is invoked by <emu-xref href="#sec-array.prototype.sort" id="_ref_724"><a href="indexed-collections.html#sec-array.prototype.sort">Array.prototype.sort</a></emu-xref> or <emu-xref href="#sec-array.prototype.tosorted" id="_ref_725"><a href="indexed-collections.html#sec-array.prototype.tosorted">Array.prototype.toSorted</a></emu-xref>, the <emu-xref href="#sort-order" id="_ref_13152"><a href="indexed-collections.html#sort-order">sort order</a></emu-xref> is also <emu-xref href="#implementation-defined" id="_ref_13153"><a href="overview.html#implementation-defined">implementation-defined</a></emu-xref> if <var>comparator</var> is <emu-val>undefined</emu-val>, and all applications of <emu-xref aoid="ToString" id="_ref_13154"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>, to any specific value passed as an argument to <var>SortCompare</var>, do not produce the same result.</p>
|
||
<p>Unless the <emu-xref href="#sort-order" id="_ref_13155"><a href="indexed-collections.html#sort-order">sort order</a></emu-xref> is specified to be <emu-xref href="#implementation-defined" id="_ref_13156"><a href="overview.html#implementation-defined">implementation-defined</a></emu-xref>, it must satisfy all of the following conditions:</p>
|
||
<ul>
|
||
<li>
|
||
There must be some mathematical permutation π of the non-negative <emu-xref href="#integer" id="_ref_13157"><a href="notational-conventions.html#integer">integers</a></emu-xref> less than <var>itemCount</var>, such that for every non-negative <emu-xref href="#integer" id="_ref_13158"><a href="notational-conventions.html#integer">integer</a></emu-xref> <var>j</var> less than <var>itemCount</var>, the element <emu-eqn class="inline">old[<var>j</var>]</emu-eqn> is exactly the same as <emu-eqn class="inline">new[π(<var>j</var>)]</emu-eqn>.
|
||
</li>
|
||
<li>
|
||
Then for all non-negative <emu-xref href="#integer" id="_ref_13159"><a href="notational-conventions.html#integer">integers</a></emu-xref> <var>j</var> and <var>k</var>, each less than <var>itemCount</var>, if <emu-eqn class="inline"><emu-xref aoid="ℝ" id="_ref_13160"><a href="notational-conventions.html#%E2%84%9D">ℝ</a></emu-xref>(<var>SortCompare</var>(old[<var>j</var>], old[<var>k</var>])) < 0</emu-eqn>, then <emu-eqn class="inline">π(<var>j</var>) < π(<var>k</var>)</emu-eqn>.
|
||
</li>
|
||
<li>
|
||
And for all non-negative <emu-xref href="#integer" id="_ref_13161"><a href="notational-conventions.html#integer">integers</a></emu-xref> <var>j</var> and <var>k</var> such that <var>j</var> < <var>k</var> < <var>itemCount</var>, if <emu-eqn class="inline"><emu-xref aoid="ℝ" id="_ref_13162"><a href="notational-conventions.html#%E2%84%9D">ℝ</a></emu-xref>(<var>SortCompare</var>(old[<var>j</var>], old[<var>k</var>])) = 0</emu-eqn>, then <emu-eqn class="inline">π(<var>j</var>) < π(<var>k</var>)</emu-eqn>; i.e., the sort is stable.
|
||
</li>
|
||
</ul>
|
||
<p>Here the notation <emu-eqn class="inline">old[<var>j</var>]</emu-eqn> is used to refer to <emu-eqn class="inline"><var>items</var>[<var>j</var>]</emu-eqn> before step <emu-xref href="#step-array-sort" id="_ref_726"><a href="indexed-collections.html#step-array-sort">4</a></emu-xref> is executed, and the notation <emu-eqn class="inline">new[<var>j</var>]</emu-eqn> to refer to <emu-eqn class="inline"><var>items</var>[<var>j</var>]</emu-eqn> after step <emu-xref href="#step-array-sort" id="_ref_727"><a href="indexed-collections.html#step-array-sort">4</a></emu-xref> has been executed.</p>
|
||
<p>An abstract closure or function <var>comparator</var> is a <dfn id="consistent-comparator" tabindex="-1">consistent comparator</dfn> for a set of values <var>S</var> if all of the requirements below are met for all values <var>a</var>, <var>b</var>, and <var>c</var> (possibly the same value) in the set <var>S</var>: The notation <emu-eqn class="inline"><var>a</var> <<sub>C</sub> <var>b</var></emu-eqn> means <emu-eqn class="inline"><emu-xref aoid="ℝ" id="_ref_13163"><a href="notational-conventions.html#%E2%84%9D">ℝ</a></emu-xref>(<var>comparator</var>(<var>a</var>, <var>b</var>)) < 0</emu-eqn>; <emu-eqn class="inline"><var>a</var> =<sub>C</sub> <var>b</var></emu-eqn> means <emu-eqn class="inline"><emu-xref aoid="ℝ" id="_ref_13164"><a href="notational-conventions.html#%E2%84%9D">ℝ</a></emu-xref>(<var>comparator</var>(<var>a</var>, <var>b</var>)) = 0</emu-eqn>; and <emu-eqn class="inline"><var>a</var> ><sub>C</sub> <var>b</var></emu-eqn> means <emu-eqn class="inline"><emu-xref aoid="ℝ" id="_ref_13165"><a href="notational-conventions.html#%E2%84%9D">ℝ</a></emu-xref>(<var>comparator</var>(<var>a</var>, <var>b</var>)) > 0</emu-eqn>.</p>
|
||
<ul>
|
||
<li>
|
||
Calling <var>comparator</var>(<var>a</var>, <var>b</var>) always returns the same value <var>v</var> when given a specific pair of values <var>a</var> and <var>b</var> as its two arguments. Furthermore, <var>v</var> <emu-xref href="#sec-ecmascript-language-types-number-type" id="_ref_13166"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-number-type">is a Number</a></emu-xref>, and <var>v</var> is not <emu-val>NaN</emu-val>. Note that this implies that exactly one of <var>a</var> <<sub>C</sub> <var>b</var>, <var>a</var> =<sub>C</sub> <var>b</var>, and <var>a</var> ><sub>C</sub> <var>b</var> will be true for a given pair of <var>a</var> and <var>b</var>.
|
||
</li>
|
||
<li>
|
||
Calling <var>comparator</var>(<var>a</var>, <var>b</var>) does not modify <var>obj</var> or any object on <var>obj</var>'s prototype chain.
|
||
</li>
|
||
<li>
|
||
<var>a</var> =<sub>C</sub> <var>a</var> (reflexivity)
|
||
</li>
|
||
<li>
|
||
If <var>a</var> =<sub>C</sub> <var>b</var>, then <var>b</var> =<sub>C</sub> <var>a</var> (symmetry)
|
||
</li>
|
||
<li>
|
||
If <var>a</var> =<sub>C</sub> <var>b</var> and <var>b</var> =<sub>C</sub> <var>c</var>, then <var>a</var> =<sub>C</sub> <var>c</var> (transitivity of =<sub>C</sub>)
|
||
</li>
|
||
<li>
|
||
If <var>a</var> <<sub>C</sub> <var>b</var> and <var>b</var> <<sub>C</sub> <var>c</var>, then <var>a</var> <<sub>C</sub> <var>c</var> (transitivity of <<sub>C</sub>)
|
||
</li>
|
||
<li>
|
||
If <var>a</var> ><sub>C</sub> <var>b</var> and <var>b</var> ><sub>C</sub> <var>c</var>, then <var>a</var> ><sub>C</sub> <var>c</var> (transitivity of ><sub>C</sub>)
|
||
</li>
|
||
</ul>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The above conditions are necessary and sufficient to ensure that <var>comparator</var> divides the set <var>S</var> into equivalence classes and that these equivalence classes are totally ordered.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-comparearrayelements" type="abstract operation" aoid="CompareArrayElements">
|
||
<h1><span class="secnum">23.1.3.30.2</span> CompareArrayElements ( <var>x</var>, <var>y</var>, <var>comparator</var> )</h1>
|
||
<p>The abstract operation CompareArrayElements takes arguments <var>x</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_13167"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>), <var>y</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_13168"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>), and <var>comparator</var> (a <emu-xref href="#function-object" id="_ref_13169"><a href="ecmascript-data-types-and-values.html#function-object">function object</a></emu-xref> or <emu-val>undefined</emu-val>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13170"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a Number or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_13171"><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>x</var> and <var>y</var> are both <emu-val>undefined</emu-val>, return <emu-val>+0</emu-val><sub>𝔽</sub>.</li><li>If <var>x</var> is <emu-val>undefined</emu-val>, return <emu-val>1</emu-val><sub>𝔽</sub>.</li><li>If <var>y</var> is <emu-val>undefined</emu-val>, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>If <var>comparator</var> is not <emu-val>undefined</emu-val>, then<ol><li>Let <var>v</var> be ? <emu-xref aoid="ToNumber" id="_ref_13172"><a href="abstract-operations.html#sec-tonumber" class="e-user-code">ToNumber</a></emu-xref>(? <emu-xref aoid="Call" id="_ref_13173"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>comparator</var>, <emu-val>undefined</emu-val>, « <var>x</var>, <var>y</var> »)).</li><li>If <var>v</var> is <emu-val>NaN</emu-val>, return <emu-val>+0</emu-val><sub>𝔽</sub>.</li><li>Return <var>v</var>.</li></ol></li><li id="step-sortcompare-tostring-x">Let <var>xString</var> be ? <emu-xref aoid="ToString" id="_ref_13174"><a href="abstract-operations.html#sec-tostring" class="e-user-code">ToString</a></emu-xref>(<var>x</var>).</li><li id="step-sortcompare-tostring-y">Let <var>yString</var> be ? <emu-xref aoid="ToString" id="_ref_13175"><a href="abstract-operations.html#sec-tostring" class="e-user-code">ToString</a></emu-xref>(<var>y</var>).</li><li>Let <var>xSmaller</var> be ! <emu-xref aoid="IsLessThan" id="_ref_13176"><a href="abstract-operations.html#sec-islessthan">IsLessThan</a></emu-xref>(<var>xString</var>, <var>yString</var>, <emu-val>true</emu-val>).</li><li>If <var>xSmaller</var> is <emu-val>true</emu-val>, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>Let <var>ySmaller</var> be ! <emu-xref aoid="IsLessThan" id="_ref_13177"><a href="abstract-operations.html#sec-islessthan">IsLessThan</a></emu-xref>(<var>yString</var>, <var>xString</var>, <emu-val>true</emu-val>).</li><li>If <var>ySmaller</var> is <emu-val>true</emu-val>, return <emu-val>1</emu-val><sub>𝔽</sub>.</li><li>Return <emu-val>+0</emu-val><sub>𝔽</sub>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.splice" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.31</span> Array.prototype.splice ( <var>start</var>, <var>deleteCount</var>, ...<var>items</var> )</h1>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>This method deletes the <var>deleteCount</var> elements of the array starting at <emu-xref href="#integer-index" id="_ref_13178"><a href="ecmascript-data-types-and-values.html#integer-index">integer index</a></emu-xref> <var>start</var> and replaces them with the elements of <var>items</var>. It returns an Array containing the deleted elements (if any).</p>
|
||
</div></emu-note>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13179"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13180"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>relativeStart</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13181"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>start</var>).</li><li>If <var>relativeStart</var> = -∞, let <var>actualStart</var> be 0.</li><li>Else if <var>relativeStart</var> < 0, let <var>actualStart</var> be <emu-xref aoid="max" id="_ref_13182"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeStart</var>, 0).</li><li>Else, let <var>actualStart</var> be <emu-xref aoid="min" id="_ref_13183"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeStart</var>, <var>len</var>).</li><li>Let <var>itemCount</var> be the number of elements in <var>items</var>.</li><li>If <var>start</var> is not present, then<ol><li>Let <var>actualDeleteCount</var> be 0.</li></ol></li><li>Else if <var>deleteCount</var> is not present, then<ol><li>Let <var>actualDeleteCount</var> be <var>len</var> - <var>actualStart</var>.</li></ol></li><li>Else,<ol><li>Let <var>dc</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13184"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>deleteCount</var>).</li><li>Let <var>actualDeleteCount</var> be the result of <emu-xref href="#clamping" id="_ref_13185"><a href="notational-conventions.html#clamping">clamping</a></emu-xref> <var>dc</var> between 0 and <var>len</var> - <var>actualStart</var>.</li></ol></li><li>If <var>len</var> + <var>itemCount</var> - <var>actualDeleteCount</var> > 2<sup>53</sup> - 1, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>A</var> be ? <emu-xref aoid="ArraySpeciesCreate" id="_ref_13186"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arrayspeciescreate" class="e-user-code">ArraySpeciesCreate</a></emu-xref>(<var>O</var>, <var>actualDeleteCount</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>actualDeleteCount</var>,<ol><li>Let <var>from</var> be ! <emu-xref aoid="ToString" id="_ref_13187"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13188"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>actualStart</var> + <var>k</var>)).</li><li>If ? <emu-xref aoid="HasProperty" id="_ref_13189"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>from</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>fromValue</var> be ? <emu-xref aoid="Get" id="_ref_13190"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>from</var>).</li><li>Perform ? <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13191"><a href="abstract-operations.html#sec-createdatapropertyorthrow" class="e-user-code">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_13192"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13193"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)), <var>fromValue</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li id="step-array-proto-splice-set-length">Perform ? <emu-xref aoid="Set" id="_ref_13194"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>A</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_13195"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>actualDeleteCount</var>), <emu-val>true</emu-val>).</li><li>If <var>itemCount</var> < <var>actualDeleteCount</var>, then<ol><li>Set <var>k</var> to <var>actualStart</var>.</li><li>Repeat, while <var>k</var> < (<var>len</var> - <var>actualDeleteCount</var>),<ol><li>Let <var>from</var> be ! <emu-xref aoid="ToString" id="_ref_13196"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13197"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var> + <var>actualDeleteCount</var>)).</li><li>Let <var>to</var> be ! <emu-xref aoid="ToString" id="_ref_13198"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13199"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var> + <var>itemCount</var>)).</li><li>If ? <emu-xref aoid="HasProperty" id="_ref_13200"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>from</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>fromValue</var> be ? <emu-xref aoid="Get" id="_ref_13201"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>from</var>).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13202"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>to</var>, <var>fromValue</var>, <emu-val>true</emu-val>).</li></ol></li><li>Else,<ol><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_13203"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>O</var>, <var>to</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Set <var>k</var> to <var>len</var>.</li><li>Repeat, while <var>k</var> > (<var>len</var> - <var>actualDeleteCount</var> + <var>itemCount</var>),<ol><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_13204"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_13205"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13206"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var> - 1))).</li><li>Set <var>k</var> to <var>k</var> - 1.</li></ol></li></ol></li><li>Else if <var>itemCount</var> > <var>actualDeleteCount</var>, then<ol><li>Set <var>k</var> to (<var>len</var> - <var>actualDeleteCount</var>).</li><li>Repeat, while <var>k</var> > <var>actualStart</var>,<ol><li>Let <var>from</var> be ! <emu-xref aoid="ToString" id="_ref_13207"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13208"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var> + <var>actualDeleteCount</var> - 1)).</li><li>Let <var>to</var> be ! <emu-xref aoid="ToString" id="_ref_13209"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13210"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var> + <var>itemCount</var> - 1)).</li><li>If ? <emu-xref aoid="HasProperty" id="_ref_13211"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>from</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>fromValue</var> be ? <emu-xref aoid="Get" id="_ref_13212"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>from</var>).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13213"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>to</var>, <var>fromValue</var>, <emu-val>true</emu-val>).</li></ol></li><li>Else,<ol><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_13214"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>O</var>, <var>to</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> - 1.</li></ol></li></ol></li><li>Set <var>k</var> to <var>actualStart</var>.</li><li>For each element <var>E</var> of <var>items</var>, do<ol><li>Perform ? <emu-xref aoid="Set" id="_ref_13215"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_13216"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13217"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)), <var>E</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li id="step-array-proto-splice-set-length-2">Perform ? <emu-xref aoid="Set" id="_ref_13218"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_13219"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var> - <var>actualDeleteCount</var> + <var>itemCount</var>), <emu-val>true</emu-val>).</li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>The explicit setting of the <emu-val>"length"</emu-val> property in steps <emu-xref href="#step-array-proto-splice-set-length" id="_ref_728"><a href="indexed-collections.html#step-array-proto-splice-set-length">15</a></emu-xref> and <emu-xref href="#step-array-proto-splice-set-length-2" id="_ref_729"><a href="indexed-collections.html#step-array-proto-splice-set-length-2">20</a></emu-xref> is intended to ensure the lengths are correct even when the objects are not built-in Arrays.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.tolocalestring" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.32</span> Array.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</h1>
|
||
<p>An ECMAScript implementation that includes the ECMA-402 Internationalization API must implement this method as specified in the ECMA-402 specification. If an ECMAScript implementation does not include the ECMA-402 API the following specification of this method is used.</p>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>The first edition of ECMA-402 did not include a replacement specification for this method.</p>
|
||
</div></emu-note>
|
||
<p>The meanings of the optional parameters to this method are defined in the ECMA-402 specification; implementations that do not include ECMA-402 support must not use those parameter positions for anything else.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>array</var> be ? <emu-xref aoid="ToObject" id="_ref_13220"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13221"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>array</var>).</li><li>Let <var>separator</var> be the <emu-xref href="#implementation-defined" id="_ref_13222"><a href="overview.html#implementation-defined">implementation-defined</a></emu-xref> list-separator String value appropriate for the <emu-xref href="#host-environment" id="_ref_13223"><a href="overview.html#host-environment">host environment</a></emu-xref>'s current locale (such as <emu-val>", "</emu-val>).</li><li>Let <var>R</var> be the empty String.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>If <var>k</var> > 0, set <var>R</var> to the <emu-xref href="#string-concatenation" id="_ref_13224"><a href="ecmascript-data-types-and-values.html#string-concatenation">string-concatenation</a></emu-xref> of <var>R</var> and <var>separator</var>.</li><li>Let <var>element</var> be ? <emu-xref aoid="Get" id="_ref_13225"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>array</var>, ! <emu-xref aoid="ToString" id="_ref_13226"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13227"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>))).</li><li>If <var>element</var> is neither <emu-val>undefined</emu-val> nor <emu-val>null</emu-val>, then<ol><li>Let <var>S</var> be ? <emu-xref aoid="ToString" id="_ref_13228"><a href="abstract-operations.html#sec-tostring" class="e-user-code">ToString</a></emu-xref>(? <emu-xref aoid="Invoke" id="_ref_13229"><a href="abstract-operations.html#sec-invoke" class="e-user-code">Invoke</a></emu-xref>(<var>element</var>, <emu-val>"toLocaleString"</emu-val>)).</li><li>Set <var>R</var> to the <emu-xref href="#string-concatenation" id="_ref_13230"><a href="ecmascript-data-types-and-values.html#string-concatenation">string-concatenation</a></emu-xref> of <var>R</var> and <var>S</var>.</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>R</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>This method converts the elements of the array to Strings using their <code>toLocaleString</code> methods, and then concatenates these Strings, separated by occurrences of an <emu-xref href="#implementation-defined" id="_ref_13231"><a href="overview.html#implementation-defined">implementation-defined</a></emu-xref> locale-sensitive separator String. This method is analogous to <code>toString</code> except that it is intended to yield a locale-sensitive result corresponding with conventions of the <emu-xref href="#host-environment" id="_ref_13232"><a href="overview.html#host-environment">host environment</a></emu-xref>'s current locale.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.toreversed" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.33</span> Array.prototype.toReversed ( )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13233"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13234"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>A</var> be ? <emu-xref aoid="ArrayCreate" id="_ref_13235"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(<var>len</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>from</var> be ! <emu-xref aoid="ToString" id="_ref_13236"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13237"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var> - <var>k</var> - 1)).</li><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13238"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13239"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>fromValue</var> be ? <emu-xref aoid="Get" id="_ref_13240"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>from</var>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13241"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>fromValue</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.tosorted" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.34</span> Array.prototype.toSorted ( <var>comparator</var> )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>If <var>comparator</var> is not <emu-val>undefined</emu-val> and <emu-xref aoid="IsCallable" id="_ref_13242"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>comparator</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13243"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13244"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>A</var> be ? <emu-xref aoid="ArrayCreate" id="_ref_13245"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(<var>len</var>).</li><li>Let <var>SortCompare</var> be a new <emu-xref href="#sec-abstract-closure" id="_ref_13246"><a href="ecmascript-data-types-and-values.html#sec-abstract-closure">Abstract Closure</a></emu-xref> with parameters (<var>x</var>, <var>y</var>) that captures <var>comparator</var> and performs the following steps when called:<ol><li>Return ? <emu-xref aoid="CompareArrayElements" id="_ref_13247"><a href="indexed-collections.html#sec-comparearrayelements">CompareArrayElements</a></emu-xref>(<var>x</var>, <var>y</var>, <var>comparator</var>).</li></ol></li><li>Let <var>sortedList</var> be ? <emu-xref aoid="SortIndexedProperties" id="_ref_13248"><a href="indexed-collections.html#sec-sortindexedproperties" class="e-user-code">SortIndexedProperties</a></emu-xref>(<var>O</var>, <var>len</var>, <var>SortCompare</var>, <emu-const>read-through-holes</emu-const>).</li><li>Let <var>j</var> be 0.</li><li>Repeat, while <var>j</var> < <var>len</var>,<ol><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13249"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_13250"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13251"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>j</var>)), <var>sortedList</var>[<var>j</var>]).</li><li>Set <var>j</var> to <var>j</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.tospliced" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.35</span> Array.prototype.toSpliced ( <var>start</var>, <var>skipCount</var>, ...<var>items</var> )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13252"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13253"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>relativeStart</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13254"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>start</var>).</li><li>If <var>relativeStart</var> = -∞, let <var>actualStart</var> be 0.</li><li>Else if <var>relativeStart</var> < 0, let <var>actualStart</var> be <emu-xref aoid="max" id="_ref_13255"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeStart</var>, 0).</li><li>Else, let <var>actualStart</var> be <emu-xref aoid="min" id="_ref_13256"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeStart</var>, <var>len</var>).</li><li>Let <var>insertCount</var> be the number of elements in <var>items</var>.</li><li>If <var>start</var> is not present, then<ol><li>Let <var>actualSkipCount</var> be 0.</li></ol></li><li>Else if <var>skipCount</var> is not present, then<ol><li>Let <var>actualSkipCount</var> be <var>len</var> - <var>actualStart</var>.</li></ol></li><li>Else,<ol><li>Let <var>sc</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13257"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>skipCount</var>).</li><li>Let <var>actualSkipCount</var> be the result of <emu-xref href="#clamping" id="_ref_13258"><a href="notational-conventions.html#clamping">clamping</a></emu-xref> <var>sc</var> between 0 and <var>len</var> - <var>actualStart</var>.</li></ol></li><li>Let <var>newLen</var> be <var>len</var> + <var>insertCount</var> - <var>actualSkipCount</var>.</li><li>If <var>newLen</var> > 2<sup>53</sup> - 1, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>A</var> be ? <emu-xref aoid="ArrayCreate" id="_ref_13259"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(<var>newLen</var>).</li><li>Let <var>i</var> be 0.</li><li>Let <var>r</var> be <var>actualStart</var> + <var>actualSkipCount</var>.</li><li>Repeat, while <var>i</var> < <var>actualStart</var>,<ol><li>Let <var>Pi</var> be ! <emu-xref aoid="ToString" id="_ref_13260"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13261"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>i</var>)).</li><li>Let <var>iValue</var> be ? <emu-xref aoid="Get" id="_ref_13262"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pi</var>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13263"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pi</var>, <var>iValue</var>).</li><li>Set <var>i</var> to <var>i</var> + 1.</li></ol></li><li>For each element <var>E</var> of <var>items</var>, do<ol><li>Let <var>Pi</var> be ! <emu-xref aoid="ToString" id="_ref_13264"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13265"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>i</var>)).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13266"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pi</var>, <var>E</var>).</li><li>Set <var>i</var> to <var>i</var> + 1.</li></ol></li><li>Repeat, while <var>i</var> < <var>newLen</var>,<ol><li>Let <var>Pi</var> be ! <emu-xref aoid="ToString" id="_ref_13267"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13268"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>i</var>)).</li><li>Let <var>from</var> be ! <emu-xref aoid="ToString" id="_ref_13269"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13270"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>r</var>)).</li><li>Let <var>fromValue</var> be ? <emu-xref aoid="Get" id="_ref_13271"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>from</var>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13272"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pi</var>, <var>fromValue</var>).</li><li>Set <var>i</var> to <var>i</var> + 1.</li><li>Set <var>r</var> to <var>r</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.tostring" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.36</span> Array.prototype.toString ( )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>array</var> be ? <emu-xref aoid="ToObject" id="_ref_13273"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>func</var> be ? <emu-xref aoid="Get" id="_ref_13274"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>array</var>, <emu-val>"join"</emu-val>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13275"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>func</var>) is <emu-val>false</emu-val>, set <var>func</var> to the intrinsic function %Object.prototype.toString%.</li><li>Return ? <emu-xref aoid="Call" id="_ref_13276"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>func</var>, <var>array</var>).</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.unshift" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.37</span> Array.prototype.unshift ( ...<var>items</var> )</h1>
|
||
<p>This method prepends the arguments to the start of the array, such that their order within the array is the same as the order in which they appear in the argument list.</p>
|
||
<p>It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13277"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13278"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>argCount</var> be the number of elements in <var>items</var>.</li><li>If <var>argCount</var> > 0, then<ol><li>If <var>len</var> + <var>argCount</var> > 2<sup>53</sup> - 1, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be <var>len</var>.</li><li>Repeat, while <var>k</var> > 0,<ol><li>Let <var>from</var> be ! <emu-xref aoid="ToString" id="_ref_13279"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13280"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var> - 1)).</li><li>Let <var>to</var> be ! <emu-xref aoid="ToString" id="_ref_13281"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13282"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var> + <var>argCount</var> - 1)).</li><li>Let <var>fromPresent</var> be ? <emu-xref aoid="HasProperty" id="_ref_13283"><a href="abstract-operations.html#sec-hasproperty" class="e-user-code">HasProperty</a></emu-xref>(<var>O</var>, <var>from</var>).</li><li>If <var>fromPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>fromValue</var> be ? <emu-xref aoid="Get" id="_ref_13284"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>from</var>).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13285"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>to</var>, <var>fromValue</var>, <emu-val>true</emu-val>).</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_13286"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>fromPresent</var> is <emu-val>false</emu-val>.</li><li>Perform ? <emu-xref aoid="DeletePropertyOrThrow" id="_ref_13287"><a href="abstract-operations.html#sec-deletepropertyorthrow" class="e-user-code">DeletePropertyOrThrow</a></emu-xref>(<var>O</var>, <var>to</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> - 1.</li></ol></li><li>Let <var>j</var> be <emu-val>+0</emu-val><sub>𝔽</sub>.</li><li>For each element <var>E</var> of <var>items</var>, do<ol><li>Perform ? <emu-xref aoid="Set" id="_ref_13288"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_13289"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<var>j</var>), <var>E</var>, <emu-val>true</emu-val>).</li><li>Set <var>j</var> to <var>j</var> + <emu-val>1</emu-val><sub>𝔽</sub>.</li></ol></li></ol></li><li>Perform ? <emu-xref aoid="Set" id="_ref_13290"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <emu-val>"length"</emu-val>, <emu-xref aoid="𝔽" id="_ref_13291"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var> + <var>argCount</var>), <emu-val>true</emu-val>).</li><li>Return <emu-xref aoid="𝔽" id="_ref_13292"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var> + <var>argCount</var>).</li></ol></emu-alg>
|
||
<p>The <emu-val>"length"</emu-val> property of this method is <emu-val>1</emu-val><sub>𝔽</sub>.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This method is intentionally generic; it does not require that its <emu-val>this</emu-val> value be an Array. Therefore it can be transferred to other kinds of objects for use as a method.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.values" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.38</span> Array.prototype.values ( )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13293"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Return <emu-xref aoid="CreateArrayIterator" id="_ref_13294"><a href="indexed-collections.html#sec-createarrayiterator">CreateArrayIterator</a></emu-xref>(<var>O</var>, <emu-const>value</emu-const>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array.prototype.with" type="built-in function">
|
||
<h1><span class="secnum">23.1.3.39</span> Array.prototype.with ( <var>index</var>, <var>value</var> )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_13295"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<emu-val>this</emu-val> value).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13296"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>O</var>).</li><li>Let <var>relativeIndex</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13297"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>index</var>).</li><li>If <var>relativeIndex</var> ≥ 0, let <var>actualIndex</var> be <var>relativeIndex</var>.</li><li>Else, let <var>actualIndex</var> be <var>len</var> + <var>relativeIndex</var>.</li><li>If <var>actualIndex</var> ≥ <var>len</var> or <var>actualIndex</var> < 0, throw a <emu-val>RangeError</emu-val> exception.</li><li>Let <var>A</var> be ? <emu-xref aoid="ArrayCreate" id="_ref_13298"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arraycreate">ArrayCreate</a></emu-xref>(<var>len</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13299"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13300"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>If <var>k</var> = <var>actualIndex</var>, let <var>fromValue</var> be <var>value</var>.</li><li>Else, let <var>fromValue</var> be ? <emu-xref aoid="Get" id="_ref_13301"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13302"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>fromValue</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause oldids="sec-array.prototype-@@iterator" id="sec-array.prototype-%symbol.iterator%" type="built-in function"><span id="sec-array.prototype-@@iterator"></span>
|
||
<h1><span class="secnum">23.1.3.40</span> Array.prototype [ %Symbol.iterator% ] ( )</h1>
|
||
<p>The initial value of the <emu-xref href="#sec-well-known-symbols" id="_ref_13303"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.iterator%</a></emu-xref> property is %Array.prototype.values%, defined in <emu-xref href="#sec-array.prototype.values" id="_ref_730"><a href="indexed-collections.html#sec-array.prototype.values">23.1.3.38</a></emu-xref>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause oldids="sec-array.prototype-@@unscopables" id="sec-array.prototype-%symbol.unscopables%"><span id="sec-array.prototype-@@unscopables"></span>
|
||
<h1><span class="secnum">23.1.3.41</span> Array.prototype [ %Symbol.unscopables% ]</h1>
|
||
<p>The initial value of the <emu-xref href="#sec-well-known-symbols" id="_ref_13304"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.unscopables%</a></emu-xref> <emu-xref href="#sec-object-type" id="_ref_13305"><a href="ecmascript-data-types-and-values.html#sec-object-type">data property</a></emu-xref> is an object created by the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>unscopableList</var> be <emu-xref aoid="OrdinaryObjectCreate" id="_ref_13306"><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate">OrdinaryObjectCreate</a></emu-xref>(<emu-val>null</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13307"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"at"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13308"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"copyWithin"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13309"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"entries"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13310"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"fill"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13311"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"find"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13312"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"findIndex"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13313"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"findLast"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13314"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"findLastIndex"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13315"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"flat"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13316"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"flatMap"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13317"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"includes"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13318"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"keys"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13319"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"toReversed"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13320"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"toSorted"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13321"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"toSpliced"</emu-val>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_13322"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>unscopableList</var>, <emu-val>"values"</emu-val>, <emu-val>true</emu-val>).</li><li>Return <var>unscopableList</var>.</li></ol></emu-alg>
|
||
<p>This property has the attributes { <var class="field">[[Writable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Enumerable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Configurable]]</var>: <emu-val>true</emu-val> }.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The own <emu-xref href="#property-name" id="_ref_13323"><a href="ecmascript-data-types-and-values.html#property-name">property names</a></emu-xref> of this object are <emu-xref href="#property-name" id="_ref_13324"><a href="ecmascript-data-types-and-values.html#property-name">property names</a></emu-xref> that were not included as standard properties of <code>Array.prototype</code> prior to the ECMAScript 2015 specification. These names are ignored for <code>with</code> statement binding purposes in order to preserve the behaviour of existing code that might use one of these names as a binding in an outer scope that is shadowed by a <code>with</code> statement whose binding object is an Array.</p>
|
||
<p>The reason that <emu-val>"with"</emu-val> is not included in the <var>unscopableList</var> is because it is already a <emu-xref href="#sec-keywords-and-reserved-words" id="_ref_731"><a href="ecmascript-language-lexical-grammar.html#sec-keywords-and-reserved-words">reserved word</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-properties-of-array-instances">
|
||
<h1><span class="secnum">23.1.4</span> Properties of Array Instances</h1>
|
||
<p>Array instances are <emu-xref href="#array-exotic-object" id="_ref_13325"><a href="ordinary-and-exotic-objects-behaviours.html#array-exotic-object">Array exotic objects</a></emu-xref> and have the internal methods specified for such objects. Array instances inherit properties from the <emu-xref href="#sec-properties-of-the-array-prototype-object" id="_ref_13326"><a href="indexed-collections.html#sec-properties-of-the-array-prototype-object">Array prototype object</a></emu-xref>.</p>
|
||
<p>Array instances have a <emu-val>"length"</emu-val> property, and a set of enumerable properties with <emu-xref href="#array-index" id="_ref_13327"><a href="ecmascript-data-types-and-values.html#array-index">array index</a></emu-xref> names.</p>
|
||
|
||
<emu-clause id="sec-properties-of-array-instances-length">
|
||
<h1><span class="secnum">23.1.4.1</span> length</h1>
|
||
<p>The <emu-val>"length"</emu-val> property of an Array instance is a <emu-xref href="#sec-object-type" id="_ref_13328"><a href="ecmascript-data-types-and-values.html#sec-object-type">data property</a></emu-xref> whose value is always numerically greater than the name of every configurable own property whose name is an <emu-xref href="#array-index" id="_ref_13329"><a href="ecmascript-data-types-and-values.html#array-index">array index</a></emu-xref>.</p>
|
||
<p>The <emu-val>"length"</emu-val> property initially has the attributes { <var class="field">[[Writable]]</var>: <emu-val>true</emu-val>, <var class="field">[[Enumerable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Configurable]]</var>: <emu-val>false</emu-val> }.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Reducing the value of the <emu-val>"length"</emu-val> property has the side-effect of deleting own array elements whose <emu-xref href="#array-index" id="_ref_13330"><a href="ecmascript-data-types-and-values.html#array-index">array index</a></emu-xref> is between the old and new length values. However, non-configurable properties can not be deleted. Attempting to set the <emu-val>"length"</emu-val> property of an Array to a value that is numerically less than or equal to the largest numeric own <emu-xref href="#property-name" id="_ref_13331"><a href="ecmascript-data-types-and-values.html#property-name">property name</a></emu-xref> of an existing non-configurable <emu-xref href="#array-index" id="_ref_732"><a href="ecmascript-data-types-and-values.html#array-index">array-indexed</a></emu-xref> property of the array will result in the length being set to a numeric value that is one greater than that non-configurable numeric own <emu-xref href="#property-name" id="_ref_13332"><a href="ecmascript-data-types-and-values.html#property-name">property name</a></emu-xref>. See <emu-xref href="#sec-array-exotic-objects-defineownproperty-p-desc" id="_ref_733"><a href="ordinary-and-exotic-objects-behaviours.html#sec-array-exotic-objects-defineownproperty-p-desc">10.4.2.1</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-array-iterator-objects">
|
||
<h1><span class="secnum">23.1.5</span> Array Iterator Objects</h1>
|
||
<p>An <dfn variants="Array Iterators,Array Iterator object,Array Iterator objects" tabindex="-1">Array Iterator</dfn> is an object that represents a specific iteration over some specific Array instance object. There is not a named <emu-xref href="#constructor" id="_ref_13333"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> for Array Iterator objects. Instead, Array Iterator objects are created by calling certain methods of Array instance objects.</p>
|
||
|
||
<emu-clause id="sec-createarrayiterator" type="abstract operation" aoid="CreateArrayIterator">
|
||
<h1><span class="secnum">23.1.5.1</span> CreateArrayIterator ( <var>array</var>, <var>kind</var> )</h1>
|
||
<p>The abstract operation CreateArrayIterator takes arguments <var>array</var> (an Object) and <var>kind</var> (<emu-const>key+value</emu-const>, <emu-const>key</emu-const>, or <emu-const>value</emu-const>) and returns an Object. It is used to create <emu-xref href="#sec-iterator-interface" id="_ref_13334"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator objects</a></emu-xref> for Array methods that return such <emu-xref href="#sec-iterator-interface" id="_ref_13335"><a href="control-abstraction-objects.html#sec-iterator-interface">iterators</a></emu-xref>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>iterator</var> be <emu-xref aoid="OrdinaryObjectCreate" id="_ref_13336"><a href="ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate">OrdinaryObjectCreate</a></emu-xref>(<emu-xref href="#sec-%arrayiteratorprototype%-object" id="_ref_13337"><a href="indexed-collections.html#sec-%arrayiteratorprototype%-object">%ArrayIteratorPrototype%</a></emu-xref>, « <var class="field">[[IteratedArrayLike]]</var>, <var class="field">[[ArrayLikeNextIndex]]</var>, <var class="field">[[ArrayLikeIterationKind]]</var> »).</li><li>Set <var>iterator</var>.<var class="field">[[IteratedArrayLike]]</var> to <var>array</var>.</li><li>Set <var>iterator</var>.<var class="field">[[ArrayLikeNextIndex]]</var> to 0.</li><li>Set <var>iterator</var>.<var class="field">[[ArrayLikeIterationKind]]</var> to <var>kind</var>.</li><li>Return <var>iterator</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%arrayiteratorprototype%-object">
|
||
<h1><span class="secnum">23.1.5.2</span> The %ArrayIteratorPrototype% Object</h1>
|
||
<p>The <dfn tabindex="-1">%ArrayIteratorPrototype%</dfn> object:</p>
|
||
<ul>
|
||
<li>has properties that are inherited by all <emu-xref href="#sec-array-iterator-objects" id="_ref_13338"><a href="indexed-collections.html#sec-array-iterator-objects">Array Iterator objects</a></emu-xref>.</li>
|
||
<li>is an <emu-xref href="#ordinary-object" id="_ref_13339"><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_13340"><a href="control-abstraction-objects.html#sec-%iterator.prototype%-object">%Iterator.prototype%</a></emu-xref>.</li>
|
||
<li>has the following properties:</li>
|
||
</ul>
|
||
|
||
<emu-clause id="sec-%arrayiteratorprototype%.next" type="built-in function">
|
||
<h1><span class="secnum">23.1.5.2.1</span> %ArrayIteratorPrototype%.next ( )</h1>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>If <var>O</var> <emu-xref href="#sec-object-type" id="_ref_13341"><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>If <var>O</var> does not have all of the internal slots of an <emu-xref href="#sec-array-iterator-objects" id="_ref_13342"><a href="indexed-collections.html#sec-array-iterator-objects">Array Iterator</a></emu-xref> Instance (<emu-xref href="#sec-properties-of-array-iterator-instances" id="_ref_734"><a href="indexed-collections.html#sec-properties-of-array-iterator-instances">23.1.5.3</a></emu-xref>), throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>array</var> be <var>O</var>.<var class="field">[[IteratedArrayLike]]</var>.</li><li>If <var>array</var> is <emu-val>undefined</emu-val>, return <emu-xref aoid="CreateIteratorResultObject" id="_ref_13343"><a href="abstract-operations.html#sec-createiterresultobject">CreateIteratorResultObject</a></emu-xref>(<emu-val>undefined</emu-val>, <emu-val>true</emu-val>).</li><li>Let <var>index</var> be <var>O</var>.<var class="field">[[ArrayLikeNextIndex]]</var>.</li><li>Let <var>kind</var> be <var>O</var>.<var class="field">[[ArrayLikeIterationKind]]</var>.</li><li>If <var>array</var> has a <var class="field">[[TypedArrayName]]</var> internal slot, then<ol><li>Let <var>taRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13344"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>array</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13345"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13346"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li></ol></li><li>Else,<ol><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13347"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>array</var>).</li></ol></li><li>If <var>index</var> ≥ <var>len</var>, then<ol><li>Set <var>O</var>.<var class="field">[[IteratedArrayLike]]</var> to <emu-val>undefined</emu-val>.</li><li>Return <emu-xref aoid="CreateIteratorResultObject" id="_ref_13348"><a href="abstract-operations.html#sec-createiterresultobject">CreateIteratorResultObject</a></emu-xref>(<emu-val>undefined</emu-val>, <emu-val>true</emu-val>).</li></ol></li><li>Set <var>O</var>.<var class="field">[[ArrayLikeNextIndex]]</var> to <var>index</var> + 1.</li><li>Let <var>indexNumber</var> be <emu-xref aoid="𝔽" id="_ref_13349"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>index</var>).</li><li>If <var>kind</var> is <emu-const>key</emu-const>, then<ol><li>Let <var>result</var> be <var>indexNumber</var>.</li></ol></li><li>Else,<ol><li>Let <var>elementKey</var> be ! <emu-xref aoid="ToString" id="_ref_13350"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<var>indexNumber</var>).</li><li>Let <var>elementValue</var> be ? <emu-xref aoid="Get" id="_ref_13351"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>array</var>, <var>elementKey</var>).</li><li>If <var>kind</var> is <emu-const>value</emu-const>, then<ol><li>Let <var>result</var> be <var>elementValue</var>.</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_13352"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>kind</var> is <emu-const>key+value</emu-const>.</li><li>Let <var>result</var> be <emu-xref aoid="CreateArrayFromList" id="_ref_13353"><a href="abstract-operations.html#sec-createarrayfromlist">CreateArrayFromList</a></emu-xref>(« <var>indexNumber</var>, <var>elementValue</var> »).</li></ol></li></ol></li><li>Return <emu-xref aoid="CreateIteratorResultObject" id="_ref_13354"><a href="abstract-operations.html#sec-createiterresultobject">CreateIteratorResultObject</a></emu-xref>(<var>result</var>, <emu-val>false</emu-val>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause oldids="sec-%arrayiteratorprototype%-@@tostringtag" id="sec-%arrayiteratorprototype%-%symbol.tostringtag%"><span id="sec-%arrayiteratorprototype%-@@tostringtag"></span>
|
||
<h1><span class="secnum">23.1.5.2.2</span> %ArrayIteratorPrototype% [ %Symbol.toStringTag% ]</h1>
|
||
<p>The initial value of the <emu-xref href="#sec-well-known-symbols" id="_ref_13355"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.toStringTag%</a></emu-xref> property is the String value <emu-val>"Array Iterator"</emu-val>.</p>
|
||
<p>This property has the attributes { <var class="field">[[Writable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Enumerable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Configurable]]</var>: <emu-val>true</emu-val> }.</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-properties-of-array-iterator-instances">
|
||
<h1><span class="secnum">23.1.5.3</span> Properties of Array Iterator Instances</h1>
|
||
<p><emu-xref href="#sec-array-iterator-objects" id="_ref_13356"><a href="indexed-collections.html#sec-array-iterator-objects">Array Iterator</a></emu-xref> instances are <emu-xref href="#ordinary-object" id="_ref_13357"><a href="ecmascript-data-types-and-values.html#ordinary-object">ordinary objects</a></emu-xref> that inherit properties from the <emu-xref href="#sec-%arrayiteratorprototype%-object" id="_ref_13358"><a href="indexed-collections.html#sec-%arrayiteratorprototype%-object">%ArrayIteratorPrototype%</a></emu-xref> intrinsic object. <emu-xref href="#sec-array-iterator-objects" id="_ref_13359"><a href="indexed-collections.html#sec-array-iterator-objects">Array Iterator</a></emu-xref> instances are initially created with the internal slots listed in <emu-xref href="#table-internal-slots-of-array-iterator-instances" id="_ref_735"><a href="indexed-collections.html#table-internal-slots-of-array-iterator-instances">Table 69</a></emu-xref>.</p>
|
||
<emu-table id="table-internal-slots-of-array-iterator-instances" caption="Internal Slots of Array Iterator Instances" oldids="table-48"><figure><figcaption>Table 69: Internal Slots of <emu-xref href="#sec-array-iterator-objects" id="_ref_13360"><a href="indexed-collections.html#sec-array-iterator-objects">Array Iterator</a></emu-xref> Instances</figcaption><span id="table-48"></span>
|
||
<table>
|
||
<tbody><tr>
|
||
<th>
|
||
Internal Slot
|
||
</th>
|
||
<th>
|
||
Type
|
||
</th>
|
||
<th>
|
||
Description
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<var class="field">[[IteratedArrayLike]]</var>
|
||
</td>
|
||
<td>
|
||
an Object or <emu-val>undefined</emu-val>
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#sec-lengthofarraylike" id="_ref_13361"><a href="abstract-operations.html#sec-lengthofarraylike">array-like object</a></emu-xref> that is being iterated.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<var class="field">[[ArrayLikeNextIndex]]</var>
|
||
</td>
|
||
<td>
|
||
a non-negative <emu-xref href="#integer" id="_ref_13362"><a href="notational-conventions.html#integer">integer</a></emu-xref>
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#integer-index" id="_ref_13363"><a href="ecmascript-data-types-and-values.html#integer-index">integer index</a></emu-xref> of the next element to be examined by this <emu-xref href="#sec-iterator-interface" id="_ref_13364"><a href="control-abstraction-objects.html#sec-iterator-interface">iterator</a></emu-xref>.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<var class="field">[[ArrayLikeIterationKind]]</var>
|
||
</td>
|
||
<td>
|
||
<emu-const>key+value</emu-const>, <emu-const>key</emu-const>, or <emu-const>value</emu-const>
|
||
</td>
|
||
<td>
|
||
A value that identifies what is returned for each element of the iteration.
|
||
</td>
|
||
</tr>
|
||
</tbody></table>
|
||
</figure></emu-table>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-typedarray-objects">
|
||
<h1><span class="secnum">23.2</span> TypedArray Objects</h1>
|
||
<p>A <var>TypedArray</var> presents an array-like view of an underlying binary data buffer (<emu-xref href="#sec-arraybuffer-objects" id="_ref_736"><a href="structured-data.html#sec-arraybuffer-objects">25.1</a></emu-xref>). A <dfn variants="TypedArray element types" tabindex="-1">TypedArray element type</dfn> is the underlying binary scalar data type that all elements of a <var>TypedArray</var> instance have. There is a distinct <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13365"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>, listed in <emu-xref href="#table-the-typedarray-constructors" id="_ref_737"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref>, for each of the supported element types. Each <emu-xref href="#constructor" id="_ref_13366"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> in <emu-xref href="#table-the-typedarray-constructors" id="_ref_738"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref> has a corresponding distinct prototype object.</p>
|
||
<emu-table id="table-the-typedarray-constructors" caption="The TypedArray Constructors" oldids="table-49"><figure><figcaption>Table 70: The <emu-xref href="#typedarray" id="_ref_13367"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> <emu-xref href="#constructor" id="_ref_13368"><a href="ecmascript-data-types-and-values.html#constructor">Constructors</a></emu-xref></figcaption><span id="table-49"></span>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>
|
||
<emu-xref href="#constructor" id="_ref_13369"><a href="ecmascript-data-types-and-values.html#constructor">Constructor</a></emu-xref> Name and Intrinsic
|
||
</th>
|
||
<th>
|
||
Element Type
|
||
</th>
|
||
<th>
|
||
Element Size
|
||
</th>
|
||
<th>
|
||
Conversion Operation
|
||
</th>
|
||
<th>
|
||
Description
|
||
</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody><tr>
|
||
<td>
|
||
Int8Array<br>
|
||
<dfn tabindex="-1">%Int8Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>int8</emu-const>
|
||
</td>
|
||
<td>
|
||
1
|
||
</td>
|
||
<td>
|
||
<emu-xref aoid="ToInt8" id="_ref_13370"><a href="abstract-operations.html#sec-toint8">ToInt8</a></emu-xref>
|
||
</td>
|
||
<td>
|
||
8-bit two's complement signed <emu-xref href="#integer" id="_ref_13371"><a href="notational-conventions.html#integer">integer</a></emu-xref>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Uint8Array<br>
|
||
<dfn tabindex="-1">%Uint8Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>uint8</emu-const>
|
||
</td>
|
||
<td>
|
||
1
|
||
</td>
|
||
<td>
|
||
<emu-xref aoid="ToUint8" id="_ref_13372"><a href="abstract-operations.html#sec-touint8">ToUint8</a></emu-xref>
|
||
</td>
|
||
<td>
|
||
8-bit unsigned <emu-xref href="#integer" id="_ref_13373"><a href="notational-conventions.html#integer">integer</a></emu-xref>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Uint8ClampedArray<br>
|
||
<dfn tabindex="-1">%Uint8ClampedArray%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>uint8clamped</emu-const>
|
||
</td>
|
||
<td>
|
||
1
|
||
</td>
|
||
<td>
|
||
<emu-xref aoid="ToUint8Clamp" id="_ref_13374"><a href="abstract-operations.html#sec-touint8clamp">ToUint8Clamp</a></emu-xref>
|
||
</td>
|
||
<td>
|
||
8-bit unsigned <emu-xref href="#integer" id="_ref_13375"><a href="notational-conventions.html#integer">integer</a></emu-xref> (clamped conversion)
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Int16Array<br>
|
||
<dfn tabindex="-1">%Int16Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>int16</emu-const>
|
||
</td>
|
||
<td>
|
||
2
|
||
</td>
|
||
<td>
|
||
<emu-xref aoid="ToInt16" id="_ref_13376"><a href="abstract-operations.html#sec-toint16">ToInt16</a></emu-xref>
|
||
</td>
|
||
<td>
|
||
16-bit two's complement signed <emu-xref href="#integer" id="_ref_13377"><a href="notational-conventions.html#integer">integer</a></emu-xref>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Uint16Array<br>
|
||
<dfn tabindex="-1">%Uint16Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>uint16</emu-const>
|
||
</td>
|
||
<td>
|
||
2
|
||
</td>
|
||
<td>
|
||
<emu-xref aoid="ToUint16" id="_ref_13378"><a href="abstract-operations.html#sec-touint16">ToUint16</a></emu-xref>
|
||
</td>
|
||
<td>
|
||
16-bit unsigned <emu-xref href="#integer" id="_ref_13379"><a href="notational-conventions.html#integer">integer</a></emu-xref>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Int32Array<br>
|
||
<dfn tabindex="-1">%Int32Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>int32</emu-const>
|
||
</td>
|
||
<td>
|
||
4
|
||
</td>
|
||
<td>
|
||
<emu-xref aoid="ToInt32" id="_ref_13380"><a href="abstract-operations.html#sec-toint32">ToInt32</a></emu-xref>
|
||
</td>
|
||
<td>
|
||
32-bit two's complement signed <emu-xref href="#integer" id="_ref_13381"><a href="notational-conventions.html#integer">integer</a></emu-xref>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Uint32Array<br>
|
||
<dfn tabindex="-1">%Uint32Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>uint32</emu-const>
|
||
</td>
|
||
<td>
|
||
4
|
||
</td>
|
||
<td>
|
||
<emu-xref aoid="ToUint32" id="_ref_13382"><a href="abstract-operations.html#sec-touint32">ToUint32</a></emu-xref>
|
||
</td>
|
||
<td>
|
||
32-bit unsigned <emu-xref href="#integer" id="_ref_13383"><a href="notational-conventions.html#integer">integer</a></emu-xref>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
BigInt64Array<br>
|
||
<dfn tabindex="-1">%BigInt64Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>bigint64</emu-const>
|
||
</td>
|
||
<td>
|
||
8
|
||
</td>
|
||
<td>
|
||
<emu-xref aoid="ToBigInt64" id="_ref_13384"><a href="abstract-operations.html#sec-tobigint64">ToBigInt64</a></emu-xref>
|
||
</td>
|
||
<td>
|
||
64-bit two's complement signed <emu-xref href="#integer" id="_ref_13385"><a href="notational-conventions.html#integer">integer</a></emu-xref>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
BigUint64Array<br>
|
||
<dfn tabindex="-1">%BigUint64Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>biguint64</emu-const>
|
||
</td>
|
||
<td>
|
||
8
|
||
</td>
|
||
<td>
|
||
<emu-xref aoid="ToBigUint64" id="_ref_13386"><a href="abstract-operations.html#sec-tobiguint64">ToBigUint64</a></emu-xref>
|
||
</td>
|
||
<td>
|
||
64-bit unsigned <emu-xref href="#integer" id="_ref_13387"><a href="notational-conventions.html#integer">integer</a></emu-xref>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Float16Array<br>
|
||
<dfn tabindex="-1">%Float16Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>float16</emu-const>
|
||
</td>
|
||
<td>
|
||
2
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
16-bit IEEE floating point
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Float32Array<br>
|
||
<dfn tabindex="-1">%Float32Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>float32</emu-const>
|
||
</td>
|
||
<td>
|
||
4
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
32-bit IEEE floating point
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Float64Array<br>
|
||
<dfn tabindex="-1">%Float64Array%</dfn>
|
||
</td>
|
||
<td>
|
||
<emu-const>float64</emu-const>
|
||
</td>
|
||
<td>
|
||
8
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
64-bit IEEE floating point
|
||
</td>
|
||
</tr>
|
||
</tbody></table>
|
||
</figure></emu-table>
|
||
<p>In the definitions below, references to <var>TypedArray</var> should be replaced with the appropriate <emu-xref href="#constructor" id="_ref_13388"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> name from the above table.</p>
|
||
|
||
<emu-clause id="sec-%typedarray%-intrinsic-object">
|
||
<h1><span class="secnum">23.2.1</span> The %TypedArray% Intrinsic Object</h1>
|
||
<p>The <dfn tabindex="-1">%TypedArray%</dfn> intrinsic object:</p>
|
||
<ul>
|
||
<li>is a <emu-xref href="#constructor" id="_ref_13389"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> <emu-xref href="#function-object" id="_ref_13390"><a href="ecmascript-data-types-and-values.html#function-object">function object</a></emu-xref> that all of the <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13391"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> objects inherit from.</li>
|
||
<li>along with its corresponding prototype object, provides common properties that are inherited by all <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13392"><a href="ecmascript-data-types-and-values.html#constructor">constructors</a></emu-xref> and their instances.</li>
|
||
<li>does not have a global name or appear as a property of the <emu-xref href="#sec-global-object" id="_ref_13393"><a href="global-object.html#sec-global-object">global object</a></emu-xref>.</li>
|
||
<li>acts as the abstract superclass of the various <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13394"><a href="ecmascript-data-types-and-values.html#constructor">constructors</a></emu-xref>.</li>
|
||
<li>will throw an error when invoked, because it is an abstract class <emu-xref href="#constructor" id="_ref_13395"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>. The <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13396"><a href="ecmascript-data-types-and-values.html#constructor">constructors</a></emu-xref> do not perform a <code>super</code> call to it.</li>
|
||
</ul>
|
||
|
||
<emu-clause id="sec-%typedarray%" type="built-in function">
|
||
<h1><span class="secnum">23.2.1.1</span> %TypedArray% ( )</h1>
|
||
<p>This function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Throw a <emu-val>TypeError</emu-val> exception.</li></ol></emu-alg>
|
||
<p>The <emu-val>"length"</emu-val> property of this function is <emu-val>+0</emu-val><sub>𝔽</sub>.</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-properties-of-the-%typedarray%-intrinsic-object">
|
||
<h1><span class="secnum">23.2.2</span> Properties of the %TypedArray% Intrinsic Object</h1>
|
||
<p>The <emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13397"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref> intrinsic object:</p>
|
||
<ul>
|
||
<li>has a <var class="field">[[Prototype]]</var> internal slot whose value is <emu-xref href="#sec-properties-of-the-function-prototype-object" id="_ref_13398"><a href="fundamental-objects.html#sec-properties-of-the-function-prototype-object">%Function.prototype%</a></emu-xref>.</li>
|
||
<li>has a <emu-val>"name"</emu-val> property whose value is <emu-val>"TypedArray"</emu-val>.</li>
|
||
<li>has the following properties:</li>
|
||
</ul>
|
||
|
||
<emu-clause id="sec-%typedarray%.from" type="built-in function">
|
||
<h1><span class="secnum">23.2.2.1</span> %TypedArray%.from ( <var>source</var> [ , <var>mapper</var> [ , <var>thisArg</var> ] ] )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>C</var> be the <emu-val>this</emu-val> value.</li><li>If <emu-xref aoid="IsConstructor" id="_ref_13399"><a href="abstract-operations.html#sec-isconstructor">IsConstructor</a></emu-xref>(<var>C</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>If <var>mapper</var> is <emu-val>undefined</emu-val>, then<ol><li>Let <var>mapping</var> be <emu-val>false</emu-val>.</li></ol></li><li>Else,<ol><li>If <emu-xref aoid="IsCallable" id="_ref_13400"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>mapper</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>mapping</var> be <emu-val>true</emu-val>.</li></ol></li><li>Let <var>usingIterator</var> be ? <emu-xref aoid="GetMethod" id="_ref_13401"><a href="abstract-operations.html#sec-getmethod" class="e-user-code">GetMethod</a></emu-xref>(<var>source</var>, <emu-xref href="#sec-well-known-symbols" id="_ref_13402"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.iterator%</a></emu-xref>).</li><li>If <var>usingIterator</var> is not <emu-val>undefined</emu-val>, then<ol><li>Let <var>values</var> be ? <emu-xref aoid="IteratorToList" id="_ref_13403"><a href="abstract-operations.html#sec-iteratortolist" class="e-user-code">IteratorToList</a></emu-xref>(? <emu-xref aoid="GetIteratorFromMethod" id="_ref_13404"><a href="abstract-operations.html#sec-getiteratorfrommethod" class="e-user-code">GetIteratorFromMethod</a></emu-xref>(<var>source</var>, <var>usingIterator</var>)).</li><li>Let <var>len</var> be the number of elements in <var>values</var>.</li><li>Let <var>targetObj</var> be ? <emu-xref aoid="TypedArrayCreateFromConstructor" id="_ref_13405"><a href="indexed-collections.html#sec-typedarraycreatefromconstructor" class="e-user-code">TypedArrayCreateFromConstructor</a></emu-xref>(<var>C</var>, « <emu-xref aoid="𝔽" id="_ref_13406"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>) »).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13407"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13408"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be the first element of <var>values</var>.</li><li>Remove the first element from <var>values</var>.</li><li>If <var>mapping</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>mappedValue</var> be ? <emu-xref aoid="Call" id="_ref_13409"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>mapper</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13410"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>) »).</li></ol></li><li>Else,<ol><li>Let <var>mappedValue</var> be <var>kValue</var>.</li></ol></li><li>Perform ? <emu-xref aoid="Set" id="_ref_13411"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>targetObj</var>, <var>Pk</var>, <var>mappedValue</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li><emu-xref href="#assert" id="_ref_13412"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>values</var> is now an empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_13413"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return <var>targetObj</var>.</li></ol></li><li>NOTE: <var>source</var> is not an <emu-xref href="#sec-iterable-interface" id="_ref_13414"><a href="control-abstraction-objects.html#sec-iterable-interface">iterable object</a></emu-xref>, so assume it is already an <emu-xref href="#sec-lengthofarraylike" id="_ref_13415"><a href="abstract-operations.html#sec-lengthofarraylike">array-like object</a></emu-xref>.</li><li>Let <var>arrayLike</var> be ! <emu-xref aoid="ToObject" id="_ref_13416"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<var>source</var>).</li><li>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13417"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>arrayLike</var>).</li><li>Let <var>targetObj</var> be ? <emu-xref aoid="TypedArrayCreateFromConstructor" id="_ref_13418"><a href="indexed-collections.html#sec-typedarraycreatefromconstructor" class="e-user-code">TypedArrayCreateFromConstructor</a></emu-xref>(<var>C</var>, « <emu-xref aoid="𝔽" id="_ref_13419"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>) »).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13420"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13421"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_13422"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>arrayLike</var>, <var>Pk</var>).</li><li>If <var>mapping</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>mappedValue</var> be ? <emu-xref aoid="Call" id="_ref_13423"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>mapper</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13424"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>) »).</li></ol></li><li>Else,<ol><li>Let <var>mappedValue</var> be <var>kValue</var>.</li></ol></li><li>Perform ? <emu-xref aoid="Set" id="_ref_13425"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>targetObj</var>, <var>Pk</var>, <var>mappedValue</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>targetObj</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.of" type="built-in function">
|
||
<h1><span class="secnum">23.2.2.2</span> %TypedArray%.of ( ...<var>items</var> )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>len</var> be the number of elements in <var>items</var>.</li><li>Let <var>C</var> be the <emu-val>this</emu-val> value.</li><li>If <emu-xref aoid="IsConstructor" id="_ref_13426"><a href="abstract-operations.html#sec-isconstructor">IsConstructor</a></emu-xref>(<var>C</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>newObj</var> be ? <emu-xref aoid="TypedArrayCreateFromConstructor" id="_ref_13427"><a href="indexed-collections.html#sec-typedarraycreatefromconstructor" class="e-user-code">TypedArrayCreateFromConstructor</a></emu-xref>(<var>C</var>, « <emu-xref aoid="𝔽" id="_ref_13428"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>) »).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>kValue</var> be <var>items</var>[<var>k</var>].</li><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13429"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13430"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13431"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>newObj</var>, <var>Pk</var>, <var>kValue</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>newObj</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype">
|
||
<h1><span class="secnum">23.2.2.3</span> %TypedArray%.prototype</h1>
|
||
<p>The initial value of <emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13432"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref><code>.prototype</code> is the <emu-xref href="#sec-properties-of-the-%typedarrayprototype%-object" id="_ref_13433"><a href="indexed-collections.html#sec-properties-of-the-%typedarrayprototype%-object">%TypedArray% prototype object</a></emu-xref>.</p>
|
||
<p>This property has the attributes { <var class="field">[[Writable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Enumerable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Configurable]]</var>: <emu-val>false</emu-val> }.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause oldids="sec-get-%typedarray%-@@species" id="sec-get-%typedarray%-%symbol.species%" type="built-in function"><span id="sec-get-%typedarray%-@@species"></span>
|
||
<h1><span class="secnum">23.2.2.4</span> get %TypedArray% [ %Symbol.species% ]</h1>
|
||
<p><emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13434"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref><code>[%Symbol.species%]</code> is an <emu-xref href="#sec-object-type" id="_ref_13435"><a href="ecmascript-data-types-and-values.html#sec-object-type">accessor property</a></emu-xref> whose set accessor function is <emu-val>undefined</emu-val>. Its get accessor function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Return the <emu-val>this</emu-val> value.</li></ol></emu-alg>
|
||
<p>The value of the <emu-val>"name"</emu-val> property of this function is <emu-val>"get [Symbol.species]"</emu-val>.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p><emu-xref href="#sec-properties-of-the-%typedarrayprototype%-object" id="_ref_13436"><a href="indexed-collections.html#sec-properties-of-the-%typedarrayprototype%-object">%TypedArray.prototype%</a></emu-xref> methods normally use their <emu-val>this</emu-val> value's <emu-xref href="#constructor" id="_ref_13437"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> to create a derived object. However, a subclass <emu-xref href="#constructor" id="_ref_13438"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> may over-ride that default behaviour by redefining its <emu-xref href="#sec-well-known-symbols" id="_ref_13439"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.species%</a></emu-xref> property.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-properties-of-the-%typedarrayprototype%-object">
|
||
<h1><span class="secnum">23.2.3</span> Properties of the %TypedArray% Prototype Object</h1>
|
||
<p>The <dfn tabindex="-1">%TypedArray% prototype object</dfn>:</p>
|
||
<ul>
|
||
<li>has a <var class="field">[[Prototype]]</var> internal slot whose value is <emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_13440"><a href="fundamental-objects.html#sec-properties-of-the-object-prototype-object">%Object.prototype%</a></emu-xref>.</li>
|
||
<li>is <dfn tabindex="-1">%TypedArray.prototype%</dfn>.</li>
|
||
<li>is an <emu-xref href="#ordinary-object" id="_ref_13441"><a href="ecmascript-data-types-and-values.html#ordinary-object">ordinary object</a></emu-xref>.</li>
|
||
<li>does not have a <var class="field">[[ViewedArrayBuffer]]</var> or any other of the internal slots that are specific to <var>TypedArray</var> instance objects.</li>
|
||
</ul>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.at" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.1</span> %TypedArray%.prototype.at ( <var>index</var> )</h1>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13442"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13443"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>relativeIndex</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13444"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>index</var>).</li><li>If <var>relativeIndex</var> ≥ 0, then<ol><li>Let <var>k</var> be <var>relativeIndex</var>.</li></ol></li><li>Else,<ol><li>Let <var>k</var> be <var>len</var> + <var>relativeIndex</var>.</li></ol></li><li>If <var>k</var> < 0 or <var>k</var> ≥ <var>len</var>, return <emu-val>undefined</emu-val>.</li><li>Return ! <emu-xref aoid="Get" id="_ref_13445"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_13446"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13447"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>))).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-get-%typedarray%.prototype.buffer" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.2</span> get %TypedArray%.prototype.buffer</h1>
|
||
<p><emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13448"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref><code>.prototype.buffer</code> is an <emu-xref href="#sec-object-type" id="_ref_13449"><a href="ecmascript-data-types-and-values.html#sec-object-type">accessor property</a></emu-xref> whose set accessor function is <emu-val>undefined</emu-val>. Its get accessor function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="RequireInternalSlot" id="_ref_13450"><a href="ordinary-and-exotic-objects-behaviours.html#sec-requireinternalslot">RequireInternalSlot</a></emu-xref>(<var>O</var>, <var class="field">[[TypedArrayName]]</var>).</li><li><emu-xref href="#assert" id="_ref_13451"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>O</var> has a <var class="field">[[ViewedArrayBuffer]]</var> internal slot.</li><li>Let <var>buffer</var> be <var>O</var>.<var class="field">[[ViewedArrayBuffer]]</var>.</li><li>Return <var>buffer</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-get-%typedarray%.prototype.bytelength" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.3</span> get %TypedArray%.prototype.byteLength</h1>
|
||
<p><emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13452"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref><code>.prototype.byteLength</code> is an <emu-xref href="#sec-object-type" id="_ref_13453"><a href="ecmascript-data-types-and-values.html#sec-object-type">accessor property</a></emu-xref> whose set accessor function is <emu-val>undefined</emu-val>. Its get accessor function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="RequireInternalSlot" id="_ref_13454"><a href="ordinary-and-exotic-objects-behaviours.html#sec-requireinternalslot">RequireInternalSlot</a></emu-xref>(<var>O</var>, <var class="field">[[TypedArrayName]]</var>).</li><li><emu-xref href="#assert" id="_ref_13455"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>O</var> has a <var class="field">[[ViewedArrayBuffer]]</var> internal slot.</li><li>Let <var>taRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13456"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13457"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, return <emu-val>+0</emu-val><sub>𝔽</sub>.</li><li>Let <var>size</var> be <emu-xref aoid="TypedArrayByteLength" id="_ref_13458"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraybytelength">TypedArrayByteLength</a></emu-xref>(<var>taRecord</var>).</li><li>Return <emu-xref aoid="𝔽" id="_ref_13459"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>size</var>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-get-%typedarray%.prototype.byteoffset" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.4</span> get %TypedArray%.prototype.byteOffset</h1>
|
||
<p><emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13460"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref><code>.prototype.byteOffset</code> is an <emu-xref href="#sec-object-type" id="_ref_13461"><a href="ecmascript-data-types-and-values.html#sec-object-type">accessor property</a></emu-xref> whose set accessor function is <emu-val>undefined</emu-val>. Its get accessor function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="RequireInternalSlot" id="_ref_13462"><a href="ordinary-and-exotic-objects-behaviours.html#sec-requireinternalslot">RequireInternalSlot</a></emu-xref>(<var>O</var>, <var class="field">[[TypedArrayName]]</var>).</li><li><emu-xref href="#assert" id="_ref_13463"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>O</var> has a <var class="field">[[ViewedArrayBuffer]]</var> internal slot.</li><li>Let <var>taRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13464"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13465"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, return <emu-val>+0</emu-val><sub>𝔽</sub>.</li><li>Let <var>offset</var> be <var>O</var>.<var class="field">[[ByteOffset]]</var>.</li><li>Return <emu-xref aoid="𝔽" id="_ref_13466"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>offset</var>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.constructor">
|
||
<h1><span class="secnum">23.2.3.5</span> %TypedArray%.prototype.constructor</h1>
|
||
<p>The initial value of <emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13467"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref><code>.prototype.constructor</code> is <emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13468"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.copywithin" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.6</span> %TypedArray%.prototype.copyWithin ( <var>target</var>, <var>start</var> [ , <var>end</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.copyWithin</code> as defined in <emu-xref href="#sec-array.prototype.copywithin" id="_ref_739"><a href="indexed-collections.html#sec-array.prototype.copywithin">23.1.3.4</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13469"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13470"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>relativeTarget</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13471"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>target</var>).</li><li>If <var>relativeTarget</var> = -∞, let <var>targetIndex</var> be 0.</li><li>Else if <var>relativeTarget</var> < 0, let <var>targetIndex</var> be <emu-xref aoid="max" id="_ref_13472"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeTarget</var>, 0).</li><li>Else, let <var>targetIndex</var> be <emu-xref aoid="min" id="_ref_13473"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeTarget</var>, <var>len</var>).</li><li>Let <var>relativeStart</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13474"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>start</var>).</li><li>If <var>relativeStart</var> = -∞, let <var>startIndex</var> be 0.</li><li>Else if <var>relativeStart</var> < 0, let <var>startIndex</var> be <emu-xref aoid="max" id="_ref_13475"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeStart</var>, 0).</li><li>Else, let <var>startIndex</var> be <emu-xref aoid="min" id="_ref_13476"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeStart</var>, <var>len</var>).</li><li>If <var>end</var> is <emu-val>undefined</emu-val>, let <var>relativeEnd</var> be <var>len</var>; else let <var>relativeEnd</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13477"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>end</var>).</li><li>If <var>relativeEnd</var> = -∞, let <var>endIndex</var> be 0.</li><li>Else if <var>relativeEnd</var> < 0, let <var>endIndex</var> be <emu-xref aoid="max" id="_ref_13478"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeEnd</var>, 0).</li><li>Else, let <var>endIndex</var> be <emu-xref aoid="min" id="_ref_13479"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeEnd</var>, <var>len</var>).</li><li>Let <var>count</var> be <emu-xref aoid="min" id="_ref_13480"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>endIndex</var> - <var>startIndex</var>, <var>len</var> - <var>targetIndex</var>).</li><li>If <var>count</var> > 0, then<ol><li>NOTE: The copying must be performed in a manner that preserves the bit-level encoding of the source data.</li><li>Let <var>buffer</var> be <var>O</var>.<var class="field">[[ViewedArrayBuffer]]</var>.</li><li>Set <var>taRecord</var> to <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13481"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13482"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Set <var>len</var> to <emu-xref aoid="TypedArrayLength" id="_ref_13483"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>NOTE: Side-effects of the above steps may have reduced the size of <var>O</var>, in which case copying should proceed with the longest still-applicable prefix.</li><li>Set <var>count</var> to <emu-xref aoid="min" id="_ref_13484"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>count</var>, <var>len</var> - <var>startIndex</var>, <var>len</var> - <var>targetIndex</var>).</li><li>Let <var>elementSize</var> be <emu-xref aoid="TypedArrayElementSize" id="_ref_13485"><a href="indexed-collections.html#sec-typedarrayelementsize">TypedArrayElementSize</a></emu-xref>(<var>O</var>).</li><li>Let <var>byteOffset</var> be <var>O</var>.<var class="field">[[ByteOffset]]</var>.</li><li>Let <var>toByteIndex</var> be (<var>targetIndex</var> × <var>elementSize</var>) + <var>byteOffset</var>.</li><li>Let <var>fromByteIndex</var> be (<var>startIndex</var> × <var>elementSize</var>) + <var>byteOffset</var>.</li><li>Let <var>countBytes</var> be <var>count</var> × <var>elementSize</var>.</li><li>If <var>fromByteIndex</var> < <var>toByteIndex</var> and <var>toByteIndex</var> < <var>fromByteIndex</var> + <var>countBytes</var>, then<ol><li>Let <var>direction</var> be -1.</li><li>Set <var>fromByteIndex</var> to <var>fromByteIndex</var> + <var>countBytes</var> - 1.</li><li>Set <var>toByteIndex</var> to <var>toByteIndex</var> + <var>countBytes</var> - 1.</li></ol></li><li>Else,<ol><li>Let <var>direction</var> be 1.</li></ol></li><li>Repeat, while <var>countBytes</var> > 0,<ol><li>Let <var>value</var> be <emu-xref aoid="GetValueFromBuffer" id="_ref_13486"><a href="structured-data.html#sec-getvaluefrombuffer">GetValueFromBuffer</a></emu-xref>(<var>buffer</var>, <var>fromByteIndex</var>, <emu-const>uint8</emu-const>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Perform <emu-xref aoid="SetValueInBuffer" id="_ref_13487"><a href="structured-data.html#sec-setvalueinbuffer">SetValueInBuffer</a></emu-xref>(<var>buffer</var>, <var>toByteIndex</var>, <emu-const>uint8</emu-const>, <var>value</var>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Set <var>fromByteIndex</var> to <var>fromByteIndex</var> + <var>direction</var>.</li><li>Set <var>toByteIndex</var> to <var>toByteIndex</var> + <var>direction</var>.</li><li>Set <var>countBytes</var> to <var>countBytes</var> - 1.</li></ol></li></ol></li><li>Return <var>O</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.entries" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.7</span> %TypedArray%.prototype.entries ( )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="ValidateTypedArray" id="_ref_13488"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Return <emu-xref aoid="CreateArrayIterator" id="_ref_13489"><a href="indexed-collections.html#sec-createarrayiterator">CreateArrayIterator</a></emu-xref>(<var>O</var>, <emu-const>key+value</emu-const>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.every" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.8</span> %TypedArray%.prototype.every ( <var>callback</var> [ , <var>thisArg</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.every</code> as defined in <emu-xref href="#sec-array.prototype.every" id="_ref_740"><a href="indexed-collections.html#sec-array.prototype.every">23.1.3.6</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13490"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13491"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13492"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13493"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13494"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ! <emu-xref aoid="Get" id="_ref_13495"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Let <var>testResult</var> be <emu-xref aoid="ToBoolean" id="_ref_13496"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Call" id="_ref_13497"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13498"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »)).</li><li>If <var>testResult</var> is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-val>true</emu-val>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.fill" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.9</span> %TypedArray%.prototype.fill ( <var>value</var> [ , <var>start</var> [ , <var>end</var> ] ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.fill</code> as defined in <emu-xref href="#sec-array.prototype.fill" id="_ref_741"><a href="indexed-collections.html#sec-array.prototype.fill">23.1.3.7</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13499"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13500"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <var>O</var>.<var class="field">[[ContentType]]</var> is <emu-const>bigint</emu-const>, set <var>value</var> to ? <emu-xref aoid="ToBigInt" id="_ref_13501"><a href="abstract-operations.html#sec-tobigint" class="e-user-code">ToBigInt</a></emu-xref>(<var>value</var>).</li><li>Else, set <var>value</var> to ? <emu-xref aoid="ToNumber" id="_ref_13502"><a href="abstract-operations.html#sec-tonumber" class="e-user-code">ToNumber</a></emu-xref>(<var>value</var>).</li><li>Let <var>relativeStart</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13503"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>start</var>).</li><li>If <var>relativeStart</var> = -∞, let <var>startIndex</var> be 0.</li><li>Else if <var>relativeStart</var> < 0, let <var>startIndex</var> be <emu-xref aoid="max" id="_ref_13504"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeStart</var>, 0).</li><li>Else, let <var>startIndex</var> be <emu-xref aoid="min" id="_ref_13505"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeStart</var>, <var>len</var>).</li><li>If <var>end</var> is <emu-val>undefined</emu-val>, let <var>relativeEnd</var> be <var>len</var>; else let <var>relativeEnd</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13506"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>end</var>).</li><li>If <var>relativeEnd</var> = -∞, let <var>endIndex</var> be 0.</li><li>Else if <var>relativeEnd</var> < 0, let <var>endIndex</var> be <emu-xref aoid="max" id="_ref_13507"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>len</var> + <var>relativeEnd</var>, 0).</li><li>Else, let <var>endIndex</var> be <emu-xref aoid="min" id="_ref_13508"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeEnd</var>, <var>len</var>).</li><li>Set <var>taRecord</var> to <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13509"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13510"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Set <var>len</var> to <emu-xref aoid="TypedArrayLength" id="_ref_13511"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Set <var>endIndex</var> to <emu-xref aoid="min" id="_ref_13512"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>endIndex</var>, <var>len</var>).</li><li>Let <var>k</var> be <var>startIndex</var>.</li><li>Repeat, while <var>k</var> < <var>endIndex</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13513"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13514"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Perform ! <emu-xref aoid="Set" id="_ref_13515"><a href="abstract-operations.html#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>O</var>, <var>Pk</var>, <var>value</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>O</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.filter" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.10</span> %TypedArray%.prototype.filter ( <var>callback</var> [ , <var>thisArg</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.filter</code> as defined in <emu-xref href="#sec-array.prototype.filter" id="_ref_742"><a href="indexed-collections.html#sec-array.prototype.filter">23.1.3.8</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13516"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13517"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13518"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>kept</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_13519"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>captured</var> be 0.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13520"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13521"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ! <emu-xref aoid="Get" id="_ref_13522"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Let <var>selected</var> be <emu-xref aoid="ToBoolean" id="_ref_13523"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Call" id="_ref_13524"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13525"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »)).</li><li>If <var>selected</var> is <emu-val>true</emu-val>, then<ol><li>Append <var>kValue</var> to <var>kept</var>.</li><li>Set <var>captured</var> to <var>captured</var> + 1.</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Let <var>A</var> be ? <emu-xref aoid="TypedArraySpeciesCreate" id="_ref_13526"><a href="indexed-collections.html#typedarray-species-create" class="e-user-code">TypedArraySpeciesCreate</a></emu-xref>(<var>O</var>, « <emu-xref aoid="𝔽" id="_ref_13527"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>captured</var>) »).</li><li>Let <var>n</var> be 0.</li><li>For each element <var>e</var> of <var>kept</var>, do<ol><li>Perform ! <emu-xref aoid="Set" id="_ref_13528"><a href="abstract-operations.html#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_13529"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13530"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>n</var>)), <var>e</var>, <emu-val>true</emu-val>).</li><li>Set <var>n</var> to <var>n</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.find" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.11</span> %TypedArray%.prototype.find ( <var>predicate</var> [ , <var>thisArg</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.find</code> as defined in <emu-xref href="#sec-array.prototype.find" id="_ref_743"><a href="indexed-collections.html#sec-array.prototype.find">23.1.3.9</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13531"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13532"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>findRec</var> be ? <emu-xref aoid="FindViaPredicate" id="_ref_13533"><a href="indexed-collections.html#sec-findviapredicate" class="e-user-code">FindViaPredicate</a></emu-xref>(<var>O</var>, <var>len</var>, <emu-const>ascending</emu-const>, <var>predicate</var>, <var>thisArg</var>).</li><li>Return <var>findRec</var>.<var class="field">[[Value]]</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.findindex" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.12</span> %TypedArray%.prototype.findIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.findIndex</code> as defined in <emu-xref href="#sec-array.prototype.findindex" id="_ref_744"><a href="indexed-collections.html#sec-array.prototype.findindex">23.1.3.10</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13534"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13535"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>findRec</var> be ? <emu-xref aoid="FindViaPredicate" id="_ref_13536"><a href="indexed-collections.html#sec-findviapredicate" class="e-user-code">FindViaPredicate</a></emu-xref>(<var>O</var>, <var>len</var>, <emu-const>ascending</emu-const>, <var>predicate</var>, <var>thisArg</var>).</li><li>Return <var>findRec</var>.<var class="field">[[Index]]</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.findlast" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.13</span> %TypedArray%.prototype.findLast ( <var>predicate</var> [ , <var>thisArg</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.findLast</code> as defined in <emu-xref href="#sec-array.prototype.findlast" id="_ref_745"><a href="indexed-collections.html#sec-array.prototype.findlast">23.1.3.11</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13537"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13538"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>findRec</var> be ? <emu-xref aoid="FindViaPredicate" id="_ref_13539"><a href="indexed-collections.html#sec-findviapredicate" class="e-user-code">FindViaPredicate</a></emu-xref>(<var>O</var>, <var>len</var>, <emu-const>descending</emu-const>, <var>predicate</var>, <var>thisArg</var>).</li><li>Return <var>findRec</var>.<var class="field">[[Value]]</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.findlastindex" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.14</span> %TypedArray%.prototype.findLastIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.findLastIndex</code> as defined in <emu-xref href="#sec-array.prototype.findlastindex" id="_ref_746"><a href="indexed-collections.html#sec-array.prototype.findlastindex">23.1.3.12</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13540"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13541"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>findRec</var> be ? <emu-xref aoid="FindViaPredicate" id="_ref_13542"><a href="indexed-collections.html#sec-findviapredicate" class="e-user-code">FindViaPredicate</a></emu-xref>(<var>O</var>, <var>len</var>, <emu-const>descending</emu-const>, <var>predicate</var>, <var>thisArg</var>).</li><li>Return <var>findRec</var>.<var class="field">[[Index]]</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.foreach" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.15</span> %TypedArray%.prototype.forEach ( <var>callback</var> [ , <var>thisArg</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.forEach</code> as defined in <emu-xref href="#sec-array.prototype.foreach" id="_ref_747"><a href="indexed-collections.html#sec-array.prototype.foreach">23.1.3.15</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13543"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13544"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13545"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13546"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13547"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ! <emu-xref aoid="Get" id="_ref_13548"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Perform ? <emu-xref aoid="Call" id="_ref_13549"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13550"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-val>undefined</emu-val>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.includes" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.16</span> %TypedArray%.prototype.includes ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.includes</code> as defined in <emu-xref href="#sec-array.prototype.includes" id="_ref_748"><a href="indexed-collections.html#sec-array.prototype.includes">23.1.3.16</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13551"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13552"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <var>len</var> = 0, return <emu-val>false</emu-val>.</li><li>Let <var>n</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13553"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>fromIndex</var>).</li><li><emu-xref href="#assert" id="_ref_13554"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: If <var>fromIndex</var> is <emu-val>undefined</emu-val>, then <var>n</var> is 0.</li><li>If <var>n</var> = +∞, return <emu-val>false</emu-val>.</li><li>If <var>n</var> = -∞, set <var>n</var> to 0.</li><li>If <var>n</var> ≥ 0, then<ol><li>Let <var>k</var> be <var>n</var>.</li></ol></li><li>Else,<ol><li>Let <var>k</var> be <var>len</var> + <var>n</var>.</li><li>If <var>k</var> < 0, set <var>k</var> to 0.</li></ol></li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>elementK</var> be ! <emu-xref aoid="Get" id="_ref_13555"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_13556"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13557"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>))).</li><li>If <emu-xref aoid="SameValueZero" id="_ref_13558"><a href="abstract-operations.html#sec-samevaluezero">SameValueZero</a></emu-xref>(<var>searchElement</var>, <var>elementK</var>) is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.indexof" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.17</span> %TypedArray%.prototype.indexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.indexOf</code> as defined in <emu-xref href="#sec-array.prototype.indexof" id="_ref_749"><a href="indexed-collections.html#sec-array.prototype.indexof">23.1.3.17</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13559"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13560"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <var>len</var> = 0, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>Let <var>n</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13561"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>fromIndex</var>).</li><li><emu-xref href="#assert" id="_ref_13562"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: If <var>fromIndex</var> is <emu-val>undefined</emu-val>, then <var>n</var> is 0.</li><li>If <var>n</var> = +∞, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>If <var>n</var> = -∞, set <var>n</var> to 0.</li><li>If <var>n</var> ≥ 0, then<ol><li>Let <var>k</var> be <var>n</var>.</li></ol></li><li>Else,<ol><li>Let <var>k</var> be <var>len</var> + <var>n</var>.</li><li>If <var>k</var> < 0, set <var>k</var> to 0.</li></ol></li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13563"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13564"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ! <emu-xref aoid="HasProperty" id="_ref_13565"><a href="abstract-operations.html#sec-hasproperty">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>elementK</var> be ! <emu-xref aoid="Get" id="_ref_13566"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <emu-xref aoid="IsStrictlyEqual" id="_ref_13567"><a href="abstract-operations.html#sec-isstrictlyequal">IsStrictlyEqual</a></emu-xref>(<var>searchElement</var>, <var>elementK</var>) is <emu-val>true</emu-val>, return <emu-xref aoid="𝔽" id="_ref_13568"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-val>-1</emu-val><sub>𝔽</sub>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.join" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.18</span> %TypedArray%.prototype.join ( <var>separator</var> )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.join</code> as defined in <emu-xref href="#sec-array.prototype.join" id="_ref_750"><a href="indexed-collections.html#sec-array.prototype.join">23.1.3.18</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13569"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13570"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <var>separator</var> is <emu-val>undefined</emu-val>, let <var>sep</var> be <emu-val>","</emu-val>.</li><li>Else, let <var>sep</var> be ? <emu-xref aoid="ToString" id="_ref_13571"><a href="abstract-operations.html#sec-tostring" class="e-user-code">ToString</a></emu-xref>(<var>separator</var>).</li><li>Let <var>R</var> be the empty String.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>If <var>k</var> > 0, set <var>R</var> to the <emu-xref href="#string-concatenation" id="_ref_13572"><a href="ecmascript-data-types-and-values.html#string-concatenation">string-concatenation</a></emu-xref> of <var>R</var> and <var>sep</var>.</li><li>Let <var>element</var> be ! <emu-xref aoid="Get" id="_ref_13573"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, ! <emu-xref aoid="ToString" id="_ref_13574"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13575"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>))).</li><li>If <var>element</var> is not <emu-val>undefined</emu-val>, then<ol><li>Let <var>S</var> be ! <emu-xref aoid="ToString" id="_ref_13576"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<var>element</var>).</li><li>Set <var>R</var> to the <emu-xref href="#string-concatenation" id="_ref_13577"><a href="ecmascript-data-types-and-values.html#string-concatenation">string-concatenation</a></emu-xref> of <var>R</var> and <var>S</var>.</li></ol></li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>R</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.keys" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.19</span> %TypedArray%.prototype.keys ( )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="ValidateTypedArray" id="_ref_13578"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Return <emu-xref aoid="CreateArrayIterator" id="_ref_13579"><a href="indexed-collections.html#sec-createarrayiterator">CreateArrayIterator</a></emu-xref>(<var>O</var>, <emu-const>key</emu-const>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.lastindexof" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.20</span> %TypedArray%.prototype.lastIndexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.lastIndexOf</code> as defined in <emu-xref href="#sec-array.prototype.lastindexof" id="_ref_751"><a href="indexed-collections.html#sec-array.prototype.lastindexof">23.1.3.20</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13580"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13581"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <var>len</var> = 0, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>If <var>fromIndex</var> is present, let <var>n</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13582"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>fromIndex</var>); else let <var>n</var> be <var>len</var> - 1.</li><li>If <var>n</var> = -∞, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>If <var>n</var> ≥ 0, then<ol><li>Let <var>k</var> be <emu-xref aoid="min" id="_ref_13583"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>n</var>, <var>len</var> - 1).</li></ol></li><li>Else,<ol><li>Let <var>k</var> be <var>len</var> + <var>n</var>.</li></ol></li><li>Repeat, while <var>k</var> ≥ 0,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13584"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13585"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kPresent</var> be ! <emu-xref aoid="HasProperty" id="_ref_13586"><a href="abstract-operations.html#sec-hasproperty">HasProperty</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <var>kPresent</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>elementK</var> be ! <emu-xref aoid="Get" id="_ref_13587"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>If <emu-xref aoid="IsStrictlyEqual" id="_ref_13588"><a href="abstract-operations.html#sec-isstrictlyequal">IsStrictlyEqual</a></emu-xref>(<var>searchElement</var>, <var>elementK</var>) is <emu-val>true</emu-val>, return <emu-xref aoid="𝔽" id="_ref_13589"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>).</li></ol></li><li>Set <var>k</var> to <var>k</var> - 1.</li></ol></li><li>Return <emu-val>-1</emu-val><sub>𝔽</sub>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-get-%typedarray%.prototype.length" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.21</span> get %TypedArray%.prototype.length</h1>
|
||
<p><emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13590"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref><code>.prototype.length</code> is an <emu-xref href="#sec-object-type" id="_ref_13591"><a href="ecmascript-data-types-and-values.html#sec-object-type">accessor property</a></emu-xref> whose set accessor function is <emu-val>undefined</emu-val>. Its get accessor function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="RequireInternalSlot" id="_ref_13592"><a href="ordinary-and-exotic-objects-behaviours.html#sec-requireinternalslot">RequireInternalSlot</a></emu-xref>(<var>O</var>, <var class="field">[[TypedArrayName]]</var>).</li><li><emu-xref href="#assert" id="_ref_13593"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>O</var> has <var class="field">[[ViewedArrayBuffer]]</var> and <var class="field">[[ArrayLength]]</var> internal slots.</li><li>Let <var>taRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13594"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13595"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, return <emu-val>+0</emu-val><sub>𝔽</sub>.</li><li>Let <var>length</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13596"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Return <emu-xref aoid="𝔽" id="_ref_13597"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>length</var>).</li></ol></emu-alg>
|
||
<p>This function is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.map" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.22</span> %TypedArray%.prototype.map ( <var>callback</var> [ , <var>thisArg</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.map</code> as defined in <emu-xref href="#sec-array.prototype.map" id="_ref_752"><a href="indexed-collections.html#sec-array.prototype.map">23.1.3.21</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13598"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13599"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13600"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>A</var> be ? <emu-xref aoid="TypedArraySpeciesCreate" id="_ref_13601"><a href="indexed-collections.html#typedarray-species-create" class="e-user-code">TypedArraySpeciesCreate</a></emu-xref>(<var>O</var>, « <emu-xref aoid="𝔽" id="_ref_13602"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var>) »).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13603"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13604"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ! <emu-xref aoid="Get" id="_ref_13605"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Let <var>mappedValue</var> be ? <emu-xref aoid="Call" id="_ref_13606"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13607"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13608"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>mappedValue</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.reduce" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.23</span> %TypedArray%.prototype.reduce ( <var>callback</var> [ , <var>initialValue</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.reduce</code> as defined in <emu-xref href="#sec-array.prototype.reduce" id="_ref_753"><a href="indexed-collections.html#sec-array.prototype.reduce">23.1.3.24</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13609"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13610"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13611"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>If <var>len</var> = 0 and <var>initialValue</var> is not present, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be 0.</li><li>Let <var>accumulator</var> be <emu-val>undefined</emu-val>.</li><li>If <var>initialValue</var> is present, then<ol><li>Set <var>accumulator</var> to <var>initialValue</var>.</li></ol></li><li>Else,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13612"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13613"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Set <var>accumulator</var> to ! <emu-xref aoid="Get" id="_ref_13614"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13615"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13616"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ! <emu-xref aoid="Get" id="_ref_13617"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Set <var>accumulator</var> to ? <emu-xref aoid="Call" id="_ref_13618"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <emu-val>undefined</emu-val>, « <var>accumulator</var>, <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13619"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>accumulator</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.reduceright" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.24</span> %TypedArray%.prototype.reduceRight ( <var>callback</var> [ , <var>initialValue</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.reduceRight</code> as defined in <emu-xref href="#sec-array.prototype.reduceright" id="_ref_754"><a href="indexed-collections.html#sec-array.prototype.reduceright">23.1.3.25</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13620"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13621"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13622"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>If <var>len</var> = 0 and <var>initialValue</var> is not present, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be <var>len</var> - 1.</li><li>Let <var>accumulator</var> be <emu-val>undefined</emu-val>.</li><li>If <var>initialValue</var> is present, then<ol><li>Set <var>accumulator</var> to <var>initialValue</var>.</li></ol></li><li>Else,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13623"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13624"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Set <var>accumulator</var> to ! <emu-xref aoid="Get" id="_ref_13625"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Set <var>k</var> to <var>k</var> - 1.</li></ol></li><li>Repeat, while <var>k</var> ≥ 0,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13626"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13627"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ! <emu-xref aoid="Get" id="_ref_13628"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Set <var>accumulator</var> to ? <emu-xref aoid="Call" id="_ref_13629"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <emu-val>undefined</emu-val>, « <var>accumulator</var>, <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13630"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »).</li><li>Set <var>k</var> to <var>k</var> - 1.</li></ol></li><li>Return <var>accumulator</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.reverse" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.25</span> %TypedArray%.prototype.reverse ( )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.reverse</code> as defined in <emu-xref href="#sec-array.prototype.reverse" id="_ref_755"><a href="indexed-collections.html#sec-array.prototype.reverse">23.1.3.26</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13631"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13632"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>middle</var> be <emu-xref aoid="floor" id="_ref_13633"><a href="notational-conventions.html#eqn-floor">floor</a></emu-xref>(<var>len</var> / 2).</li><li>Let <var>lower</var> be 0.</li><li>Repeat, while <var>lower</var> ≠ <var>middle</var>,<ol><li>Let <var>upper</var> be <var>len</var> - <var>lower</var> - 1.</li><li>Let <var>upperP</var> be ! <emu-xref aoid="ToString" id="_ref_13634"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13635"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>upper</var>)).</li><li>Let <var>lowerP</var> be ! <emu-xref aoid="ToString" id="_ref_13636"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13637"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>lower</var>)).</li><li>Let <var>lowerValue</var> be ! <emu-xref aoid="Get" id="_ref_13638"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>lowerP</var>).</li><li>Let <var>upperValue</var> be ! <emu-xref aoid="Get" id="_ref_13639"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>upperP</var>).</li><li>Perform ! <emu-xref aoid="Set" id="_ref_13640"><a href="abstract-operations.html#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>O</var>, <var>lowerP</var>, <var>upperValue</var>, <emu-val>true</emu-val>).</li><li>Perform ! <emu-xref aoid="Set" id="_ref_13641"><a href="abstract-operations.html#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>O</var>, <var>upperP</var>, <var>lowerValue</var>, <emu-val>true</emu-val>).</li><li>Set <var>lower</var> to <var>lower</var> + 1.</li></ol></li><li>Return <var>O</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.set" oldids="sec-%typedarray%.prototype.set-overloaded-offset" type="built-in function"><span id="sec-%typedarray%.prototype.set-overloaded-offset"></span>
|
||
<h1><span class="secnum">23.2.3.26</span> %TypedArray%.prototype.set ( <var>source</var> [ , <var>offset</var> ] )</h1>
|
||
<p>This method sets multiple values in this <var>TypedArray</var>, reading the values from <var>source</var>. The details differ based upon the type of <var>source</var>. The optional <var>offset</var> value indicates the first element index in this <var>TypedArray</var> where values are written. If omitted, it is assumed to be 0.</p>
|
||
<p>It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>target</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="RequireInternalSlot" id="_ref_13642"><a href="ordinary-and-exotic-objects-behaviours.html#sec-requireinternalslot">RequireInternalSlot</a></emu-xref>(<var>target</var>, <var class="field">[[TypedArrayName]]</var>).</li><li><emu-xref href="#assert" id="_ref_13643"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>target</var> has a <var class="field">[[ViewedArrayBuffer]]</var> internal slot.</li><li>Let <var>targetOffset</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13644"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>offset</var>).</li><li>If <var>targetOffset</var> < 0, throw a <emu-val>RangeError</emu-val> exception.</li><li>If <var>source</var> <emu-xref href="#sec-object-type" id="_ref_13645"><a href="ecmascript-data-types-and-values.html#sec-object-type">is an Object</a></emu-xref> that has a <var class="field">[[TypedArrayName]]</var> internal slot, then<ol><li>Perform ? <emu-xref aoid="SetTypedArrayFromTypedArray" id="_ref_13646"><a href="indexed-collections.html#sec-settypedarrayfromtypedarray">SetTypedArrayFromTypedArray</a></emu-xref>(<var>target</var>, <var>targetOffset</var>, <var>source</var>).</li></ol></li><li>Else,<ol><li>Perform ? <emu-xref aoid="SetTypedArrayFromArrayLike" id="_ref_13647"><a href="indexed-collections.html#sec-settypedarrayfromarraylike" class="e-user-code">SetTypedArrayFromArrayLike</a></emu-xref>(<var>target</var>, <var>targetOffset</var>, <var>source</var>).</li></ol></li><li>Return <emu-val>undefined</emu-val>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
|
||
<emu-clause id="sec-settypedarrayfromarraylike" type="abstract operation" oldids="sec-%typedarray%.prototype.set-array-offset" aoid="SetTypedArrayFromArrayLike"><span id="sec-%typedarray%.prototype.set-array-offset"></span>
|
||
<h1><span class="secnum">23.2.3.26.1</span> SetTypedArrayFromArrayLike ( <var>target</var>, <var>targetOffset</var>, <var>source</var> )</h1>
|
||
<p>The abstract operation SetTypedArrayFromArrayLike takes arguments <var>target</var> (a <emu-xref href="#typedarray" id="_ref_13648"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>), <var>targetOffset</var> (a non-negative <emu-xref href="#integer" id="_ref_13649"><a href="notational-conventions.html#integer">integer</a></emu-xref> or +∞), and <var>source</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_13650"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>, but not a <emu-xref href="#typedarray" id="_ref_13651"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13652"><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_13653"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>. It sets multiple values in <var>target</var>, starting at index <var>targetOffset</var>, reading the values from <var>source</var>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>targetRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13654"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>target</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13655"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>targetRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>targetLength</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13656"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>targetRecord</var>).</li><li>Let <var>src</var> be ? <emu-xref aoid="ToObject" id="_ref_13657"><a href="abstract-operations.html#sec-toobject">ToObject</a></emu-xref>(<var>source</var>).</li><li>Let <var>srcLength</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13658"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>src</var>).</li><li>If <var>targetOffset</var> = +∞, throw a <emu-val>RangeError</emu-val> exception.</li><li>If <var>srcLength</var> + <var>targetOffset</var> > <var>targetLength</var>, throw a <emu-val>RangeError</emu-val> exception.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>srcLength</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13659"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13660"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>value</var> be ? <emu-xref aoid="Get" id="_ref_13661"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>src</var>, <var>Pk</var>).</li><li>Let <var>targetIndex</var> be <emu-xref aoid="𝔽" id="_ref_13662"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>targetOffset</var> + <var>k</var>).</li><li>Perform ? <emu-xref aoid="TypedArraySetElement" id="_ref_13663"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraysetelement" class="e-user-code">TypedArraySetElement</a></emu-xref>(<var>target</var>, <var>targetIndex</var>, <var>value</var>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-settypedarrayfromtypedarray" type="abstract operation" oldids="sec-%typedarray%.prototype.set-typedarray-offset" aoid="SetTypedArrayFromTypedArray"><span id="sec-%typedarray%.prototype.set-typedarray-offset"></span>
|
||
<h1><span class="secnum">23.2.3.26.2</span> SetTypedArrayFromTypedArray ( <var>target</var>, <var>targetOffset</var>, <var>source</var> )</h1>
|
||
<p>The abstract operation SetTypedArrayFromTypedArray takes arguments <var>target</var> (a <emu-xref href="#typedarray" id="_ref_13664"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>), <var>targetOffset</var> (a non-negative <emu-xref href="#integer" id="_ref_13665"><a href="notational-conventions.html#integer">integer</a></emu-xref> or +∞), and <var>source</var> (a <emu-xref href="#typedarray" id="_ref_13666"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13667"><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_13668"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>. It sets multiple values in <var>target</var>, starting at index <var>targetOffset</var>, reading the values from <var>source</var>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>targetBuffer</var> be <var>target</var>.<var class="field">[[ViewedArrayBuffer]]</var>.</li><li>Let <var>targetRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13669"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>target</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13670"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>targetRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>targetLength</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13671"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>targetRecord</var>).</li><li>Let <var>srcBuffer</var> be <var>source</var>.<var class="field">[[ViewedArrayBuffer]]</var>.</li><li>Let <var>srcRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13672"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>source</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13673"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>srcRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>srcLength</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13674"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>srcRecord</var>).</li><li>Let <var>targetType</var> be <emu-xref aoid="TypedArrayElementType" id="_ref_13675"><a href="indexed-collections.html#sec-typedarrayelementtype">TypedArrayElementType</a></emu-xref>(<var>target</var>).</li><li>Let <var>targetElementSize</var> be <emu-xref aoid="TypedArrayElementSize" id="_ref_13676"><a href="indexed-collections.html#sec-typedarrayelementsize">TypedArrayElementSize</a></emu-xref>(<var>target</var>).</li><li>Let <var>targetByteOffset</var> be <var>target</var>.<var class="field">[[ByteOffset]]</var>.</li><li>Let <var>srcType</var> be <emu-xref aoid="TypedArrayElementType" id="_ref_13677"><a href="indexed-collections.html#sec-typedarrayelementtype">TypedArrayElementType</a></emu-xref>(<var>source</var>).</li><li>Let <var>srcElementSize</var> be <emu-xref aoid="TypedArrayElementSize" id="_ref_13678"><a href="indexed-collections.html#sec-typedarrayelementsize">TypedArrayElementSize</a></emu-xref>(<var>source</var>).</li><li>Let <var>srcByteOffset</var> be <var>source</var>.<var class="field">[[ByteOffset]]</var>.</li><li>If <var>targetOffset</var> = +∞, throw a <emu-val>RangeError</emu-val> exception.</li><li>If <var>srcLength</var> + <var>targetOffset</var> > <var>targetLength</var>, throw a <emu-val>RangeError</emu-val> exception.</li><li>If <var>target</var>.<var class="field">[[ContentType]]</var> is not <var>source</var>.<var class="field">[[ContentType]]</var>, throw a <emu-val>TypeError</emu-val> exception.</li><li>If <emu-xref aoid="IsSharedArrayBuffer" id="_ref_13679"><a href="structured-data.html#sec-issharedarraybuffer">IsSharedArrayBuffer</a></emu-xref>(<var>srcBuffer</var>) is <emu-val>true</emu-val>, <emu-xref aoid="IsSharedArrayBuffer" id="_ref_13680"><a href="structured-data.html#sec-issharedarraybuffer">IsSharedArrayBuffer</a></emu-xref>(<var>targetBuffer</var>) is <emu-val>true</emu-val>, and <var>srcBuffer</var>.<var class="field">[[ArrayBufferData]]</var> is <var>targetBuffer</var>.<var class="field">[[ArrayBufferData]]</var>, let <var>sameSharedArrayBuffer</var> be <emu-val>true</emu-val>; else let <var>sameSharedArrayBuffer</var> be <emu-val>false</emu-val>.</li><li>If <emu-xref aoid="SameValue" id="_ref_13681"><a href="abstract-operations.html#sec-samevalue">SameValue</a></emu-xref>(<var>srcBuffer</var>, <var>targetBuffer</var>) is <emu-val>true</emu-val> or <var>sameSharedArrayBuffer</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>srcByteLength</var> be <emu-xref aoid="TypedArrayByteLength" id="_ref_13682"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraybytelength">TypedArrayByteLength</a></emu-xref>(<var>srcRecord</var>).</li><li>Set <var>srcBuffer</var> to ? <emu-xref aoid="CloneArrayBuffer" id="_ref_13683"><a href="structured-data.html#sec-clonearraybuffer">CloneArrayBuffer</a></emu-xref>(<var>srcBuffer</var>, <var>srcByteOffset</var>, <var>srcByteLength</var>).</li><li>Let <var>srcByteIndex</var> be 0.</li></ol></li><li>Else,<ol><li>Let <var>srcByteIndex</var> be <var>srcByteOffset</var>.</li></ol></li><li>Let <var>targetByteIndex</var> be (<var>targetOffset</var> × <var>targetElementSize</var>) + <var>targetByteOffset</var>.</li><li>Let <var>limit</var> be <var>targetByteIndex</var> + (<var>targetElementSize</var> × <var>srcLength</var>).</li><li>If <var>srcType</var> is <var>targetType</var>, then<ol><li>NOTE: The transfer must be performed in a manner that preserves the bit-level encoding of the source data.</li><li>Repeat, while <var>targetByteIndex</var> < <var>limit</var>,<ol><li>Let <var>value</var> be <emu-xref aoid="GetValueFromBuffer" id="_ref_13684"><a href="structured-data.html#sec-getvaluefrombuffer">GetValueFromBuffer</a></emu-xref>(<var>srcBuffer</var>, <var>srcByteIndex</var>, <emu-const>uint8</emu-const>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Perform <emu-xref aoid="SetValueInBuffer" id="_ref_13685"><a href="structured-data.html#sec-setvalueinbuffer">SetValueInBuffer</a></emu-xref>(<var>targetBuffer</var>, <var>targetByteIndex</var>, <emu-const>uint8</emu-const>, <var>value</var>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Set <var>srcByteIndex</var> to <var>srcByteIndex</var> + 1.</li><li>Set <var>targetByteIndex</var> to <var>targetByteIndex</var> + 1.</li></ol></li></ol></li><li>Else,<ol><li>Repeat, while <var>targetByteIndex</var> < <var>limit</var>,<ol><li>Let <var>value</var> be <emu-xref aoid="GetValueFromBuffer" id="_ref_13686"><a href="structured-data.html#sec-getvaluefrombuffer">GetValueFromBuffer</a></emu-xref>(<var>srcBuffer</var>, <var>srcByteIndex</var>, <var>srcType</var>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Perform <emu-xref aoid="SetValueInBuffer" id="_ref_13687"><a href="structured-data.html#sec-setvalueinbuffer">SetValueInBuffer</a></emu-xref>(<var>targetBuffer</var>, <var>targetByteIndex</var>, <var>targetType</var>, <var>value</var>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Set <var>srcByteIndex</var> to <var>srcByteIndex</var> + <var>srcElementSize</var>.</li><li>Set <var>targetByteIndex</var> to <var>targetByteIndex</var> + <var>targetElementSize</var>.</li></ol></li></ol></li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.slice" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.27</span> %TypedArray%.prototype.slice ( <var>start</var>, <var>end</var> )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.slice</code> as defined in <emu-xref href="#sec-array.prototype.slice" id="_ref_756"><a href="indexed-collections.html#sec-array.prototype.slice">23.1.3.28</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13688"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>srcArrayLength</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13689"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>relativeStart</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13690"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>start</var>).</li><li>If <var>relativeStart</var> = -∞, let <var>startIndex</var> be 0.</li><li>Else if <var>relativeStart</var> < 0, let <var>startIndex</var> be <emu-xref aoid="max" id="_ref_13691"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>srcArrayLength</var> + <var>relativeStart</var>, 0).</li><li>Else, let <var>startIndex</var> be <emu-xref aoid="min" id="_ref_13692"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeStart</var>, <var>srcArrayLength</var>).</li><li>If <var>end</var> is <emu-val>undefined</emu-val>, let <var>relativeEnd</var> be <var>srcArrayLength</var>; else let <var>relativeEnd</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13693"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>end</var>).</li><li>If <var>relativeEnd</var> = -∞, let <var>endIndex</var> be 0.</li><li>Else if <var>relativeEnd</var> < 0, let <var>endIndex</var> be <emu-xref aoid="max" id="_ref_13694"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>srcArrayLength</var> + <var>relativeEnd</var>, 0).</li><li>Else, let <var>endIndex</var> be <emu-xref aoid="min" id="_ref_13695"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeEnd</var>, <var>srcArrayLength</var>).</li><li>Let <var>countBytes</var> be <emu-xref aoid="max" id="_ref_13696"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>endIndex</var> - <var>startIndex</var>, 0).</li><li>Let <var>A</var> be ? <emu-xref aoid="TypedArraySpeciesCreate" id="_ref_13697"><a href="indexed-collections.html#typedarray-species-create" class="e-user-code">TypedArraySpeciesCreate</a></emu-xref>(<var>O</var>, « <emu-xref aoid="𝔽" id="_ref_13698"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>countBytes</var>) »).</li><li>If <var>countBytes</var> > 0, then<ol><li>Set <var>taRecord</var> to <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13699"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13700"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Set <var>endIndex</var> to <emu-xref aoid="min" id="_ref_13701"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>endIndex</var>, <emu-xref aoid="TypedArrayLength" id="_ref_13702"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>)).</li><li>Set <var>countBytes</var> to <emu-xref aoid="max" id="_ref_13703"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>endIndex</var> - <var>startIndex</var>, 0).</li><li>Let <var>srcType</var> be <emu-xref aoid="TypedArrayElementType" id="_ref_13704"><a href="indexed-collections.html#sec-typedarrayelementtype">TypedArrayElementType</a></emu-xref>(<var>O</var>).</li><li>Let <var>targetType</var> be <emu-xref aoid="TypedArrayElementType" id="_ref_13705"><a href="indexed-collections.html#sec-typedarrayelementtype">TypedArrayElementType</a></emu-xref>(<var>A</var>).</li><li>If <var>srcType</var> is <var>targetType</var>, then<ol><li>NOTE: The transfer must be performed in a manner that preserves the bit-level encoding of the source data.</li><li>Let <var>srcBuffer</var> be <var>O</var>.<var class="field">[[ViewedArrayBuffer]]</var>.</li><li>Let <var>targetBuffer</var> be <var>A</var>.<var class="field">[[ViewedArrayBuffer]]</var>.</li><li>Let <var>elementSize</var> be <emu-xref aoid="TypedArrayElementSize" id="_ref_13706"><a href="indexed-collections.html#sec-typedarrayelementsize">TypedArrayElementSize</a></emu-xref>(<var>O</var>).</li><li>Let <var>srcByteOffset</var> be <var>O</var>.<var class="field">[[ByteOffset]]</var>.</li><li>Let <var>srcByteIndex</var> be (<var>startIndex</var> × <var>elementSize</var>) + <var>srcByteOffset</var>.</li><li>Let <var>targetByteIndex</var> be <var>A</var>.<var class="field">[[ByteOffset]]</var>.</li><li>Let <var>endByteIndex</var> be <var>targetByteIndex</var> + (<var>countBytes</var> × <var>elementSize</var>).</li><li>Repeat, while <var>targetByteIndex</var> < <var>endByteIndex</var>,<ol><li>Let <var>value</var> be <emu-xref aoid="GetValueFromBuffer" id="_ref_13707"><a href="structured-data.html#sec-getvaluefrombuffer">GetValueFromBuffer</a></emu-xref>(<var>srcBuffer</var>, <var>srcByteIndex</var>, <emu-const>uint8</emu-const>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Perform <emu-xref aoid="SetValueInBuffer" id="_ref_13708"><a href="structured-data.html#sec-setvalueinbuffer">SetValueInBuffer</a></emu-xref>(<var>targetBuffer</var>, <var>targetByteIndex</var>, <emu-const>uint8</emu-const>, <var>value</var>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Set <var>srcByteIndex</var> to <var>srcByteIndex</var> + 1.</li><li>Set <var>targetByteIndex</var> to <var>targetByteIndex</var> + 1.</li></ol></li></ol></li><li>Else,<ol><li>Let <var>n</var> be 0.</li><li>Let <var>k</var> be <var>startIndex</var>.</li><li>Repeat, while <var>k</var> < <var>endIndex</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13709"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13710"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ! <emu-xref aoid="Get" id="_ref_13711"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Perform ! <emu-xref aoid="Set" id="_ref_13712"><a href="abstract-operations.html#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_13713"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13714"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>n</var>)), <var>kValue</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li><li>Set <var>n</var> to <var>n</var> + 1.</li></ol></li></ol></li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.some" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.28</span> %TypedArray%.prototype.some ( <var>callback</var> [ , <var>thisArg</var> ] )</h1>
|
||
<p>The interpretation and use of the arguments of this method are the same as for <code>Array.prototype.some</code> as defined in <emu-xref href="#sec-array.prototype.some" id="_ref_757"><a href="indexed-collections.html#sec-array.prototype.some">23.1.3.29</a></emu-xref>.</p>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13715"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13716"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_13717"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>callback</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13718"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13719"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ! <emu-xref aoid="Get" id="_ref_13720"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Let <var>testResult</var> be <emu-xref aoid="ToBoolean" id="_ref_13721"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Call" id="_ref_13722"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>callback</var>, <var>thisArg</var>, « <var>kValue</var>, <emu-xref aoid="𝔽" id="_ref_13723"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>), <var>O</var> »)).</li><li>If <var>testResult</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-val>false</emu-val>.</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.sort" oldids="sec-typedarraysortcompare" type="built-in function"><span id="sec-typedarraysortcompare"></span>
|
||
<h1><span class="secnum">23.2.3.29</span> %TypedArray%.prototype.sort ( <var>comparator</var> )</h1>
|
||
<p>This is a distinct method that, except as described below, implements the same requirements as those of <code>Array.prototype.sort</code> as defined in <emu-xref href="#sec-array.prototype.sort" id="_ref_758"><a href="indexed-collections.html#sec-array.prototype.sort">23.1.3.30</a></emu-xref>. The implementation of this method may be optimized with the knowledge that the <emu-val>this</emu-val> value is an object that has a fixed length and whose <emu-xref href="#integer-index" id="_ref_13724"><a href="ecmascript-data-types-and-values.html#integer-index">integer-indexed</a></emu-xref> properties are not sparse.</p>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
<p>It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>If <var>comparator</var> is not <emu-val>undefined</emu-val> and <emu-xref aoid="IsCallable" id="_ref_13725"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>comparator</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>obj</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13726"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>obj</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13727"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>NOTE: The following closure performs a numeric comparison rather than the string comparison used in <emu-xref href="#sec-array.prototype.sort" id="_ref_759"><a href="indexed-collections.html#sec-array.prototype.sort">23.1.3.30</a></emu-xref>.</li><li>Let <var>SortCompare</var> be a new <emu-xref href="#sec-abstract-closure" id="_ref_13728"><a href="ecmascript-data-types-and-values.html#sec-abstract-closure">Abstract Closure</a></emu-xref> with parameters (<var>x</var>, <var>y</var>) that captures <var>comparator</var> and performs the following steps when called:<ol><li>Return ? <emu-xref aoid="CompareTypedArrayElements" id="_ref_13729"><a href="indexed-collections.html#sec-comparetypedarrayelements">CompareTypedArrayElements</a></emu-xref>(<var>x</var>, <var>y</var>, <var>comparator</var>).</li></ol></li><li>Let <var>sortedList</var> be ? <emu-xref aoid="SortIndexedProperties" id="_ref_13730"><a href="indexed-collections.html#sec-sortindexedproperties" class="e-user-code">SortIndexedProperties</a></emu-xref>(<var>obj</var>, <var>len</var>, <var>SortCompare</var>, <emu-const>read-through-holes</emu-const>).</li><li>Let <var>j</var> be 0.</li><li>Repeat, while <var>j</var> < <var>len</var>,<ol><li>Perform ! <emu-xref aoid="Set" id="_ref_13731"><a href="abstract-operations.html#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>obj</var>, ! <emu-xref aoid="ToString" id="_ref_13732"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13733"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>j</var>)), <var>sortedList</var>[<var>j</var>], <emu-val>true</emu-val>).</li><li>Set <var>j</var> to <var>j</var> + 1.</li></ol></li><li>Return <var>obj</var>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Because <emu-val>NaN</emu-val> always compares greater than any other value (see <emu-xref aoid="CompareTypedArrayElements" id="_ref_13734"><a href="indexed-collections.html#sec-comparetypedarrayelements">CompareTypedArrayElements</a></emu-xref>), <emu-val>NaN</emu-val> property values always sort to the end of the result when <var>comparator</var> is not provided.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.subarray" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.30</span> %TypedArray%.prototype.subarray ( <var>start</var>, <var>end</var> )</h1>
|
||
<p>This method returns a new <var>TypedArray</var> whose element type is the element type of this <var>TypedArray</var> and whose ArrayBuffer is the ArrayBuffer of this <var>TypedArray</var>, referencing the elements in the <emu-xref href="#interval" id="_ref_13735"><a href="notational-conventions.html#interval">interval</a></emu-xref> from <var>start</var> (inclusive) to <var>end</var> (exclusive). If either <var>start</var> or <var>end</var> is negative, it refers to an index from the end of the array, as opposed to from the beginning.</p>
|
||
<p>It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="RequireInternalSlot" id="_ref_13736"><a href="ordinary-and-exotic-objects-behaviours.html#sec-requireinternalslot">RequireInternalSlot</a></emu-xref>(<var>O</var>, <var class="field">[[TypedArrayName]]</var>).</li><li><emu-xref href="#assert" id="_ref_13737"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>O</var> has a <var class="field">[[ViewedArrayBuffer]]</var> internal slot.</li><li>Let <var>buffer</var> be <var>O</var>.<var class="field">[[ViewedArrayBuffer]]</var>.</li><li>Let <var>srcRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13738"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13739"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>srcRecord</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>srcLength</var> be 0.</li></ol></li><li>Else,<ol><li>Let <var>srcLength</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13740"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>srcRecord</var>).</li></ol></li><li>Let <var>relativeStart</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13741"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>start</var>).</li><li>If <var>relativeStart</var> = -∞, let <var>startIndex</var> be 0.</li><li>Else if <var>relativeStart</var> < 0, let <var>startIndex</var> be <emu-xref aoid="max" id="_ref_13742"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>srcLength</var> + <var>relativeStart</var>, 0).</li><li>Else, let <var>startIndex</var> be <emu-xref aoid="min" id="_ref_13743"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeStart</var>, <var>srcLength</var>).</li><li>Let <var>elementSize</var> be <emu-xref aoid="TypedArrayElementSize" id="_ref_13744"><a href="indexed-collections.html#sec-typedarrayelementsize">TypedArrayElementSize</a></emu-xref>(<var>O</var>).</li><li>Let <var>srcByteOffset</var> be <var>O</var>.<var class="field">[[ByteOffset]]</var>.</li><li>Let <var>beginByteOffset</var> be <var>srcByteOffset</var> + (<var>startIndex</var> × <var>elementSize</var>).</li><li>If <var>O</var>.<var class="field">[[ArrayLength]]</var> is <emu-const>auto</emu-const> and <var>end</var> is <emu-val>undefined</emu-val>, then<ol><li>Let <var>argumentsList</var> be « <var>buffer</var>, <emu-xref aoid="𝔽" id="_ref_13745"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>beginByteOffset</var>) ».</li></ol></li><li>Else,<ol><li>If <var>end</var> is <emu-val>undefined</emu-val>, let <var>relativeEnd</var> be <var>srcLength</var>; else let <var>relativeEnd</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13746"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>end</var>).</li><li>If <var>relativeEnd</var> = -∞, let <var>endIndex</var> be 0.</li><li>Else if <var>relativeEnd</var> < 0, let <var>endIndex</var> be <emu-xref aoid="max" id="_ref_13747"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>srcLength</var> + <var>relativeEnd</var>, 0).</li><li>Else, let <var>endIndex</var> be <emu-xref aoid="min" id="_ref_13748"><a href="notational-conventions.html#eqn-min">min</a></emu-xref>(<var>relativeEnd</var>, <var>srcLength</var>).</li><li>Let <var>newLength</var> be <emu-xref aoid="max" id="_ref_13749"><a href="notational-conventions.html#eqn-max">max</a></emu-xref>(<var>endIndex</var> - <var>startIndex</var>, 0).</li><li>Let <var>argumentsList</var> be « <var>buffer</var>, <emu-xref aoid="𝔽" id="_ref_13750"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>beginByteOffset</var>), <emu-xref aoid="𝔽" id="_ref_13751"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>newLength</var>) ».</li></ol></li><li>Return ? <emu-xref aoid="TypedArraySpeciesCreate" id="_ref_13752"><a href="indexed-collections.html#typedarray-species-create" class="e-user-code">TypedArraySpeciesCreate</a></emu-xref>(<var>O</var>, <var>argumentsList</var>).</li></ol></emu-alg>
|
||
<p>This method is not generic. The <emu-val>this</emu-val> value must be an object with a <var class="field">[[TypedArrayName]]</var> internal slot.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.tolocalestring" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.31</span> %TypedArray%.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</h1>
|
||
<p>This is a distinct method that implements the same algorithm as <code>Array.prototype.toLocaleString</code> as defined in <emu-xref href="#sec-array.prototype.tolocalestring" id="_ref_760"><a href="indexed-collections.html#sec-array.prototype.tolocalestring">23.1.3.32</a></emu-xref> except that <emu-xref aoid="TypedArrayLength" id="_ref_13753"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref> is called in place of performing a <var class="field">[[Get]]</var> of <emu-val>"length"</emu-val>. The implementation of the algorithm may be optimized with the knowledge that the <emu-val>this</emu-val> value has a fixed length when the underlying buffer is not resizable and whose <emu-xref href="#integer-index" id="_ref_13754"><a href="ecmascript-data-types-and-values.html#integer-index">integer-indexed</a></emu-xref> properties are not sparse. However, such optimization must not introduce any observable changes in the specified behaviour of the algorithm.</p>
|
||
<p>This method is not generic. <emu-xref aoid="ValidateTypedArray" id="_ref_13755"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref> is called with the <emu-val>this</emu-val> value and <emu-const>seq-cst</emu-const> as arguments prior to evaluating the algorithm. If its result is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_13756"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref> that exception is thrown instead of evaluating the algorithm.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>If the ECMAScript implementation includes the ECMA-402 Internationalization API this method is based upon the algorithm for <code>Array.prototype.toLocaleString</code> that is in the ECMA-402 specification.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.toreversed" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.32</span> %TypedArray%.prototype.toReversed ( )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13757"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13758"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>A</var> be ? <emu-xref aoid="TypedArrayCreateSameType" id="_ref_13759"><a href="indexed-collections.html#sec-typedarray-create-same-type">TypedArrayCreateSameType</a></emu-xref>(<var>O</var>, <var>len</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>from</var> be ! <emu-xref aoid="ToString" id="_ref_13760"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13761"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>len</var> - <var>k</var> - 1)).</li><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13762"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13763"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>fromValue</var> be ! <emu-xref aoid="Get" id="_ref_13764"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>from</var>).</li><li>Perform ! <emu-xref aoid="Set" id="_ref_13765"><a href="abstract-operations.html#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>fromValue</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.tosorted" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.33</span> %TypedArray%.prototype.toSorted ( <var>comparator</var> )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>If <var>comparator</var> is not <emu-val>undefined</emu-val> and <emu-xref aoid="IsCallable" id="_ref_13766"><a href="abstract-operations.html#sec-iscallable">IsCallable</a></emu-xref>(<var>comparator</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13767"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13768"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>A</var> be ? <emu-xref aoid="TypedArrayCreateSameType" id="_ref_13769"><a href="indexed-collections.html#sec-typedarray-create-same-type">TypedArrayCreateSameType</a></emu-xref>(<var>O</var>, <var>len</var>).</li><li>NOTE: The following closure performs a numeric comparison rather than the string comparison used in <emu-xref href="#sec-array.prototype.tosorted" id="_ref_761"><a href="indexed-collections.html#sec-array.prototype.tosorted">23.1.3.34</a></emu-xref>.</li><li>Let <var>SortCompare</var> be a new <emu-xref href="#sec-abstract-closure" id="_ref_13770"><a href="ecmascript-data-types-and-values.html#sec-abstract-closure">Abstract Closure</a></emu-xref> with parameters (<var>x</var>, <var>y</var>) that captures <var>comparator</var> and performs the following steps when called:<ol><li>Return ? <emu-xref aoid="CompareTypedArrayElements" id="_ref_13771"><a href="indexed-collections.html#sec-comparetypedarrayelements">CompareTypedArrayElements</a></emu-xref>(<var>x</var>, <var>y</var>, <var>comparator</var>).</li></ol></li><li>Let <var>sortedList</var> be ? <emu-xref aoid="SortIndexedProperties" id="_ref_13772"><a href="indexed-collections.html#sec-sortindexedproperties" class="e-user-code">SortIndexedProperties</a></emu-xref>(<var>O</var>, <var>len</var>, <var>SortCompare</var>, <emu-const>read-through-holes</emu-const>).</li><li>Let <var>j</var> be 0.</li><li>Repeat, while <var>j</var> < <var>len</var>,<ol><li>Perform ! <emu-xref aoid="Set" id="_ref_13773"><a href="abstract-operations.html#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>A</var>, ! <emu-xref aoid="ToString" id="_ref_13774"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13775"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>j</var>)), <var>sortedList</var>[<var>j</var>], <emu-val>true</emu-val>).</li><li>Set <var>j</var> to <var>j</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.tostring" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.34</span> %TypedArray%.prototype.toString ( )</h1>
|
||
<p>The initial value of the <emu-val>"toString"</emu-val> property is %Array.prototype.toString%, defined in <emu-xref href="#sec-array.prototype.tostring" id="_ref_762"><a href="indexed-collections.html#sec-array.prototype.tostring">23.1.3.36</a></emu-xref>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.values" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.35</span> %TypedArray%.prototype.values ( )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="ValidateTypedArray" id="_ref_13776"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Return <emu-xref aoid="CreateArrayIterator" id="_ref_13777"><a href="indexed-collections.html#sec-createarrayiterator">CreateArrayIterator</a></emu-xref>(<var>O</var>, <emu-const>value</emu-const>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-%typedarray%.prototype.with" type="built-in function">
|
||
<h1><span class="secnum">23.2.3.36</span> %TypedArray%.prototype.with ( <var>index</var>, <var>value</var> )</h1>
|
||
<p>This method performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13778"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>O</var>, <emu-const>seq-cst</emu-const>).</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13779"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>relativeIndex</var> be ? <emu-xref aoid="ToIntegerOrInfinity" id="_ref_13780"><a href="abstract-operations.html#sec-tointegerorinfinity" class="e-user-code">ToIntegerOrInfinity</a></emu-xref>(<var>index</var>).</li><li>If <var>relativeIndex</var> ≥ 0, let <var>actualIndex</var> be <var>relativeIndex</var>.</li><li>Else, let <var>actualIndex</var> be <var>len</var> + <var>relativeIndex</var>.</li><li>If <var>O</var>.<var class="field">[[ContentType]]</var> is <emu-const>bigint</emu-const>, let <var>numericValue</var> be ? <emu-xref aoid="ToBigInt" id="_ref_13781"><a href="abstract-operations.html#sec-tobigint" class="e-user-code">ToBigInt</a></emu-xref>(<var>value</var>).</li><li>Else, let <var>numericValue</var> be ? <emu-xref aoid="ToNumber" id="_ref_13782"><a href="abstract-operations.html#sec-tonumber" class="e-user-code">ToNumber</a></emu-xref>(<var>value</var>).</li><li>If <emu-xref aoid="IsValidIntegerIndex" id="_ref_13783"><a href="ordinary-and-exotic-objects-behaviours.html#sec-isvalidintegerindex">IsValidIntegerIndex</a></emu-xref>(<var>O</var>, <emu-xref aoid="𝔽" id="_ref_13784"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>actualIndex</var>)) is <emu-val>false</emu-val>, throw a <emu-val>RangeError</emu-val> exception.</li><li>Let <var>A</var> be ? <emu-xref aoid="TypedArrayCreateSameType" id="_ref_13785"><a href="indexed-collections.html#sec-typedarray-create-same-type">TypedArrayCreateSameType</a></emu-xref>(<var>O</var>, <var>len</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13786"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13787"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>If <var>k</var> = <var>actualIndex</var>, let <var>fromValue</var> be <var>numericValue</var>.</li><li>Else, let <var>fromValue</var> be ! <emu-xref aoid="Get" id="_ref_13788"><a href="abstract-operations.html#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>Pk</var>).</li><li>Perform ! <emu-xref aoid="Set" id="_ref_13789"><a href="abstract-operations.html#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>A</var>, <var>Pk</var>, <var>fromValue</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <var>A</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause oldids="sec-%typedarray%.prototype-@@iterator" id="sec-%typedarray%.prototype-%symbol.iterator%" type="built-in function"><span id="sec-%typedarray%.prototype-@@iterator"></span>
|
||
<h1><span class="secnum">23.2.3.37</span> %TypedArray%.prototype [ %Symbol.iterator% ] ( )</h1>
|
||
<p>The initial value of the <emu-xref href="#sec-well-known-symbols" id="_ref_13790"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.iterator%</a></emu-xref> property is %TypedArray.prototype.values%, defined in <emu-xref href="#sec-%typedarray%.prototype.values" id="_ref_763"><a href="indexed-collections.html#sec-%typedarray%.prototype.values">23.2.3.35</a></emu-xref>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause oldids="sec-get-%typedarray%.prototype-@@tostringtag" id="sec-get-%typedarray%.prototype-%symbol.tostringtag%" type="built-in function"><span id="sec-get-%typedarray%.prototype-@@tostringtag"></span>
|
||
<h1><span class="secnum">23.2.3.38</span> get %TypedArray%.prototype [ %Symbol.toStringTag% ]</h1>
|
||
<p><emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13791"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref><code>.prototype[%Symbol.toStringTag%]</code> is an <emu-xref href="#sec-object-type" id="_ref_13792"><a href="ecmascript-data-types-and-values.html#sec-object-type">accessor property</a></emu-xref> whose set accessor function is <emu-val>undefined</emu-val>. Its get accessor function performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>If <var>O</var> <emu-xref href="#sec-object-type" id="_ref_13793"><a href="ecmascript-data-types-and-values.html#sec-object-type">is not an Object</a></emu-xref>, return <emu-val>undefined</emu-val>.</li><li>If <var>O</var> does not have a <var class="field">[[TypedArrayName]]</var> internal slot, return <emu-val>undefined</emu-val>.</li><li>Let <var>name</var> be <var>O</var>.<var class="field">[[TypedArrayName]]</var>.</li><li><emu-xref href="#assert" id="_ref_13794"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>name</var> <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_13795"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-string-type">is a String</a></emu-xref>.</li><li>Return <var>name</var>.</li></ol></emu-alg>
|
||
<p>This property has the attributes { <var class="field">[[Enumerable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Configurable]]</var>: <emu-val>true</emu-val> }.</p>
|
||
<p>The initial value of the <emu-val>"name"</emu-val> property of this function is <emu-val>"get [Symbol.toStringTag]"</emu-val>.</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-abstract-operations-for-typedarray-objects">
|
||
<h1><span class="secnum">23.2.4</span> Abstract Operations for TypedArray Objects</h1>
|
||
|
||
<emu-clause id="sec-typedarraycreatefromconstructor" oldids="typedarray-create" type="abstract operation" aoid="TypedArrayCreateFromConstructor"><span id="typedarray-create"></span>
|
||
<h1><span class="secnum">23.2.4.1</span> TypedArrayCreateFromConstructor ( <var>constructor</var>, <var>argumentList</var> )</h1>
|
||
<p>The abstract operation TypedArrayCreateFromConstructor takes arguments <var>constructor</var> (a <emu-xref href="#constructor" id="_ref_13796"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>) and <var>argumentList</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_13797"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-ecmascript-language-types" id="_ref_13798"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language values</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13799"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a <emu-xref href="#typedarray" id="_ref_13800"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13801"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>. It is used to specify the creation of a new <emu-xref href="#typedarray" id="_ref_13802"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> using a <emu-xref href="#constructor" id="_ref_13803"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> function. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>newTypedArray</var> be ? <emu-xref aoid="Construct" id="_ref_13804"><a href="abstract-operations.html#sec-construct" class="e-user-code">Construct</a></emu-xref>(<var>constructor</var>, <var>argumentList</var>).</li><li>Let <var>taRecord</var> be ? <emu-xref aoid="ValidateTypedArray" id="_ref_13805"><a href="indexed-collections.html#sec-validatetypedarray">ValidateTypedArray</a></emu-xref>(<var>newTypedArray</var>, <emu-const>seq-cst</emu-const>).</li><li><emu-xref href="#assert" id="_ref_13806"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>newTypedArray</var> has all the internal slots mentioned in <emu-xref href="#sec-properties-of-typedarray-instances" title="" id="_ref_764"><a href="indexed-collections.html#sec-properties-of-typedarray-instances">Properties of <var>TypedArray</var> Instances</a></emu-xref>.</li><li>If the number of elements in <var>argumentList</var> is 1 and <var>argumentList</var>[0] <emu-xref href="#sec-ecmascript-language-types-number-type" id="_ref_13807"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-number-type">is a Number</a></emu-xref>, then<ol><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13808"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>length</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13809"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>If <var>length</var> < <emu-xref aoid="ℝ" id="_ref_13810"><a href="notational-conventions.html#%E2%84%9D">ℝ</a></emu-xref>(<var>argumentList</var>[0]), throw a <emu-val>TypeError</emu-val> exception.</li></ol></li><li>Return <var>newTypedArray</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-typedarray-create-same-type" type="abstract operation" aoid="TypedArrayCreateSameType">
|
||
<h1><span class="secnum">23.2.4.2</span> TypedArrayCreateSameType ( <var>exemplar</var>, <var>length</var> )</h1>
|
||
<p>The abstract operation TypedArrayCreateSameType takes arguments <var>exemplar</var> (a <emu-xref href="#typedarray" id="_ref_13811"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and <var>length</var> (a non-negative <emu-xref href="#integer" id="_ref_13812"><a href="notational-conventions.html#integer">integer</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13813"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a <emu-xref href="#typedarray" id="_ref_13814"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13815"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>. It is used to specify the creation of a new <emu-xref href="#typedarray" id="_ref_13816"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> using a <emu-xref href="#constructor" id="_ref_13817"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> function that is derived from <var>exemplar</var>. Unlike <emu-xref aoid="TypedArraySpeciesCreate" id="_ref_13818"><a href="indexed-collections.html#typedarray-species-create">TypedArraySpeciesCreate</a></emu-xref>, which can construct custom <emu-xref href="#typedarray" id="_ref_13819"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> subclasses through the use of <emu-xref href="#sec-well-known-symbols" id="_ref_13820"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.species%</a></emu-xref>, this operation always uses one of the built-in <emu-xref href="#typedarray" id="_ref_13821"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> <emu-xref href="#constructor" id="_ref_13822"><a href="ecmascript-data-types-and-values.html#constructor">constructors</a></emu-xref>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>constructor</var> be the intrinsic object associated with the <emu-xref href="#constructor" id="_ref_13823"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> name <var>exemplar</var>.<var class="field">[[TypedArrayName]]</var> in <emu-xref href="#table-the-typedarray-constructors" id="_ref_765"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref>.</li><li>Let <var>result</var> be ? <emu-xref aoid="TypedArrayCreateFromConstructor" id="_ref_13824"><a href="indexed-collections.html#sec-typedarraycreatefromconstructor">TypedArrayCreateFromConstructor</a></emu-xref>(<var>constructor</var>, « <emu-xref aoid="𝔽" id="_ref_13825"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>length</var>) »).</li><li><emu-xref href="#assert" id="_ref_13826"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>result</var> has <var class="field">[[TypedArrayName]]</var> and <var class="field">[[ContentType]]</var> internal slots.</li><li><emu-xref href="#assert" id="_ref_13827"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>result</var>.<var class="field">[[ContentType]]</var> is <var>exemplar</var>.<var class="field">[[ContentType]]</var>.</li><li>Return <var>result</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="typedarray-species-create" type="abstract operation" aoid="TypedArraySpeciesCreate">
|
||
<h1><span class="secnum">23.2.4.3</span> TypedArraySpeciesCreate ( <var>exemplar</var>, <var>argumentList</var> )</h1>
|
||
<p>The abstract operation TypedArraySpeciesCreate takes arguments <var>exemplar</var> (a <emu-xref href="#typedarray" id="_ref_13828"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and <var>argumentList</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_13829"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-ecmascript-language-types" id="_ref_13830"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language values</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13831"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a <emu-xref href="#typedarray" id="_ref_13832"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13833"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>. It is used to specify the creation of a new <emu-xref href="#typedarray" id="_ref_13834"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> using a <emu-xref href="#constructor" id="_ref_13835"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> function that is derived from <var>exemplar</var>. Unlike <emu-xref aoid="ArraySpeciesCreate" id="_ref_13836"><a href="ordinary-and-exotic-objects-behaviours.html#sec-arrayspeciescreate">ArraySpeciesCreate</a></emu-xref>, which can create non-Array objects through the use of <emu-xref href="#sec-well-known-symbols" id="_ref_13837"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.species%</a></emu-xref>, this operation enforces that the <emu-xref href="#constructor" id="_ref_13838"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> function creates an actual <emu-xref href="#typedarray" id="_ref_13839"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>defaultConstructor</var> be the intrinsic object associated with the <emu-xref href="#constructor" id="_ref_13840"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> name <var>exemplar</var>.<var class="field">[[TypedArrayName]]</var> in <emu-xref href="#table-the-typedarray-constructors" id="_ref_766"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref>.</li><li>Let <var>constructor</var> be ? <emu-xref aoid="SpeciesConstructor" id="_ref_13841"><a href="abstract-operations.html#sec-speciesconstructor" class="e-user-code">SpeciesConstructor</a></emu-xref>(<var>exemplar</var>, <var>defaultConstructor</var>).</li><li>Let <var>result</var> be ? <emu-xref aoid="TypedArrayCreateFromConstructor" id="_ref_13842"><a href="indexed-collections.html#sec-typedarraycreatefromconstructor" class="e-user-code">TypedArrayCreateFromConstructor</a></emu-xref>(<var>constructor</var>, <var>argumentList</var>).</li><li>If <var>result</var>.<var class="field">[[ContentType]]</var> is not <var>exemplar</var>.<var class="field">[[ContentType]]</var>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <var>result</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-validatetypedarray" type="abstract operation" aoid="ValidateTypedArray">
|
||
<h1><span class="secnum">23.2.4.4</span> ValidateTypedArray ( <var>O</var>, <var>order</var> )</h1>
|
||
<p>The abstract operation ValidateTypedArray takes arguments <var>O</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_13843"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>) and <var>order</var> (<emu-const>seq-cst</emu-const> or <emu-const>unordered</emu-const>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13844"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a <emu-xref href="#sec-typedarray-with-buffer-witness-records" id="_ref_13845"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarray-with-buffer-witness-records">TypedArray With Buffer Witness Record</a></emu-xref> or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13846"><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>Perform ? <emu-xref aoid="RequireInternalSlot" id="_ref_13847"><a href="ordinary-and-exotic-objects-behaviours.html#sec-requireinternalslot">RequireInternalSlot</a></emu-xref>(<var>O</var>, <var class="field">[[TypedArrayName]]</var>).</li><li><emu-xref href="#assert" id="_ref_13848"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>O</var> has a <var class="field">[[ViewedArrayBuffer]]</var> internal slot.</li><li>Let <var>taRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13849"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>O</var>, <var>order</var>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13850"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <var>taRecord</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-typedarrayelementsize" type="abstract operation" aoid="TypedArrayElementSize">
|
||
<h1><span class="secnum">23.2.4.5</span> TypedArrayElementSize ( <var>O</var> )</h1>
|
||
<p>The abstract operation TypedArrayElementSize takes argument <var>O</var> (a <emu-xref href="#typedarray" id="_ref_13851"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and returns a non-negative <emu-xref href="#integer" id="_ref_13852"><a href="notational-conventions.html#integer">integer</a></emu-xref>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Return the Element Size value specified in <emu-xref href="#table-the-typedarray-constructors" id="_ref_767"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref> for <var>O</var>.<var class="field">[[TypedArrayName]]</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-typedarrayelementtype" type="abstract operation" aoid="TypedArrayElementType">
|
||
<h1><span class="secnum">23.2.4.6</span> TypedArrayElementType ( <var>O</var> )</h1>
|
||
<p>The abstract operation TypedArrayElementType takes argument <var>O</var> (a <emu-xref href="#typedarray" id="_ref_13853"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and returns a <emu-xref href="#sec-typedarray-objects" id="_ref_13854"><a href="indexed-collections.html#sec-typedarray-objects">TypedArray element type</a></emu-xref>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Return the Element Type value specified in <emu-xref href="#table-the-typedarray-constructors" id="_ref_768"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref> for <var>O</var>.<var class="field">[[TypedArrayName]]</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-comparetypedarrayelements" type="abstract operation" aoid="CompareTypedArrayElements">
|
||
<h1><span class="secnum">23.2.4.7</span> CompareTypedArrayElements ( <var>x</var>, <var>y</var>, <var>comparator</var> )</h1>
|
||
<p>The abstract operation CompareTypedArrayElements takes arguments <var>x</var> (a Number or a BigInt), <var>y</var> (a Number or a BigInt), and <var>comparator</var> (a <emu-xref href="#function-object" id="_ref_13855"><a href="ecmascript-data-types-and-values.html#function-object">function object</a></emu-xref> or <emu-val>undefined</emu-val>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13856"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a Number or an <emu-xref href="#sec-completion-record-specification-type" id="_ref_13857"><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><emu-xref href="#assert" id="_ref_13858"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>x</var> <emu-xref href="#sec-ecmascript-language-types-number-type" id="_ref_13859"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-number-type">is a Number</a></emu-xref> and <var>y</var> <emu-xref href="#sec-ecmascript-language-types-number-type" id="_ref_13860"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-number-type">is a Number</a></emu-xref>, or <var>x</var> <emu-xref href="#sec-ecmascript-language-types-bigint-type" id="_ref_13861"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-bigint-type">is a BigInt</a></emu-xref> and <var>y</var> <emu-xref href="#sec-ecmascript-language-types-bigint-type" id="_ref_13862"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-bigint-type">is a BigInt</a></emu-xref>.</li><li>If <var>comparator</var> is not <emu-val>undefined</emu-val>, then<ol><li>Let <var>v</var> be ? <emu-xref aoid="ToNumber" id="_ref_13863"><a href="abstract-operations.html#sec-tonumber" class="e-user-code">ToNumber</a></emu-xref>(? <emu-xref aoid="Call" id="_ref_13864"><a href="abstract-operations.html#sec-call" class="e-user-code">Call</a></emu-xref>(<var>comparator</var>, <emu-val>undefined</emu-val>, « <var>x</var>, <var>y</var> »)).</li><li>If <var>v</var> is <emu-val>NaN</emu-val>, return <emu-val>+0</emu-val><sub>𝔽</sub>.</li><li>Return <var>v</var>.</li></ol></li><li>If <var>x</var> and <var>y</var> are both <emu-val>NaN</emu-val>, return <emu-val>+0</emu-val><sub>𝔽</sub>.</li><li>If <var>x</var> is <emu-val>NaN</emu-val>, return <emu-val>1</emu-val><sub>𝔽</sub>.</li><li>If <var>y</var> is <emu-val>NaN</emu-val>, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>If <var>x</var> < <var>y</var>, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>If <var>x</var> > <var>y</var>, return <emu-val>1</emu-val><sub>𝔽</sub>.</li><li>If <var>x</var> is <emu-val>-0</emu-val><sub>𝔽</sub> and <var>y</var> is <emu-val>+0</emu-val><sub>𝔽</sub>, return <emu-val>-1</emu-val><sub>𝔽</sub>.</li><li>If <var>x</var> is <emu-val>+0</emu-val><sub>𝔽</sub> and <var>y</var> is <emu-val>-0</emu-val><sub>𝔽</sub>, return <emu-val>1</emu-val><sub>𝔽</sub>.</li><li>Return <emu-val>+0</emu-val><sub>𝔽</sub>.</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
This performs a numeric comparison rather than the string comparison used in <emu-xref href="#sec-comparearrayelements" id="_ref_769"><a href="indexed-collections.html#sec-comparearrayelements">23.1.3.30.2</a></emu-xref>.
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-typedarray-constructors">
|
||
<h1><span class="secnum">23.2.5</span> The <var>TypedArray</var> Constructors</h1>
|
||
<p>Each <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13865"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>:</p>
|
||
<ul>
|
||
<li>is an intrinsic object that has the structure described below, differing only in the name used as the <emu-xref href="#constructor" id="_ref_13866"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> name instead of <var>TypedArray</var>, in <emu-xref href="#table-the-typedarray-constructors" id="_ref_770"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref>, except where otherwise noted.</li>
|
||
<li>is a function whose behaviour differs based upon the number and types of its arguments. The actual behaviour of a call of <var>TypedArray</var> depends upon the number and kind of arguments that are passed to it.</li>
|
||
<li>is not intended to be called as a function and will throw an exception when called in that manner.</li>
|
||
<li>may be used as the value of an <code>extends</code> clause of a class definition. Subclass <emu-xref href="#constructor" id="_ref_13867"><a href="ecmascript-data-types-and-values.html#constructor">constructors</a></emu-xref> that intend to inherit the specified <var>TypedArray</var> behaviour must include a <code>super</code> call to the <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13868"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> to create and initialize the subclass instance with the internal state necessary to support the <emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13869"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref><code>.prototype</code> built-in methods.</li>
|
||
</ul>
|
||
|
||
<emu-clause id="sec-typedarray" oldids="sec-typedarray-length,sec-typedarray-object" type="built-in function"><span id="sec-typedarray-object"></span><span id="sec-typedarray-length"></span>
|
||
<h1><span class="secnum">23.2.5.1</span> <var>TypedArray</var> ( ...<var>args</var> )</h1>
|
||
<p>Each <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13870"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> performs the following steps when called:</p>
|
||
<emu-alg><ol><li>If NewTarget is <emu-val>undefined</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>constructorName</var> be the String value of the <emu-xref href="#constructor" id="_ref_13871"><a href="ecmascript-data-types-and-values.html#constructor">Constructor</a></emu-xref> Name value specified in <emu-xref href="#table-the-typedarray-constructors" id="_ref_771"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref> for this <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13872"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>.</li><li>Let <var>proto</var> be <code>"%<var>TypedArray</var>.prototype%"</code>.</li><li>Let <var>numberOfArgs</var> be the number of elements in <var>args</var>.</li><li>If <var>numberOfArgs</var> = 0, return ? <emu-xref aoid="AllocateTypedArray" id="_ref_13873"><a href="indexed-collections.html#sec-allocatetypedarray" class="e-user-code">AllocateTypedArray</a></emu-xref>(<var>constructorName</var>, NewTarget, <var>proto</var>, 0).</li><li>Let <var>firstArgument</var> be <var>args</var>[0].</li><li>If <var>firstArgument</var> <emu-xref href="#sec-object-type" id="_ref_13874"><a href="ecmascript-data-types-and-values.html#sec-object-type">is an Object</a></emu-xref>, then<ol><li>Let <var>O</var> be ? <emu-xref aoid="AllocateTypedArray" id="_ref_13875"><a href="indexed-collections.html#sec-allocatetypedarray" class="e-user-code">AllocateTypedArray</a></emu-xref>(<var>constructorName</var>, NewTarget, <var>proto</var>).</li><li>If <var>firstArgument</var> has a <var class="field">[[TypedArrayName]]</var> internal slot, then<ol><li>Perform ? <emu-xref aoid="InitializeTypedArrayFromTypedArray" id="_ref_13876"><a href="indexed-collections.html#sec-initializetypedarrayfromtypedarray">InitializeTypedArrayFromTypedArray</a></emu-xref>(<var>O</var>, <var>firstArgument</var>).</li></ol></li><li>Else if <var>firstArgument</var> has an <var class="field">[[ArrayBufferData]]</var> internal slot, then<ol><li>If <var>numberOfArgs</var> > 1, let <var>byteOffset</var> be <var>args</var>[1]; else let <var>byteOffset</var> be <emu-val>undefined</emu-val>.</li><li>If <var>numberOfArgs</var> > 2, let <var>length</var> be <var>args</var>[2]; else let <var>length</var> be <emu-val>undefined</emu-val>.</li><li>Perform ? <emu-xref aoid="InitializeTypedArrayFromArrayBuffer" id="_ref_13877"><a href="indexed-collections.html#sec-initializetypedarrayfromarraybuffer" class="e-user-code">InitializeTypedArrayFromArrayBuffer</a></emu-xref>(<var>O</var>, <var>firstArgument</var>, <var>byteOffset</var>, <var>length</var>).</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_13878"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>firstArgument</var> <emu-xref href="#sec-object-type" id="_ref_13879"><a href="ecmascript-data-types-and-values.html#sec-object-type">is an Object</a></emu-xref> and <var>firstArgument</var> does not have either a <var class="field">[[TypedArrayName]]</var> or an <var class="field">[[ArrayBufferData]]</var> internal slot.</li><li>Let <var>usingIterator</var> be ? <emu-xref aoid="GetMethod" id="_ref_13880"><a href="abstract-operations.html#sec-getmethod" class="e-user-code">GetMethod</a></emu-xref>(<var>firstArgument</var>, <emu-xref href="#sec-well-known-symbols" id="_ref_13881"><a href="ecmascript-data-types-and-values.html#sec-well-known-symbols">%Symbol.iterator%</a></emu-xref>).</li><li>If <var>usingIterator</var> is not <emu-val>undefined</emu-val>, then<ol><li>Let <var>values</var> be ? <emu-xref aoid="IteratorToList" id="_ref_13882"><a href="abstract-operations.html#sec-iteratortolist" class="e-user-code">IteratorToList</a></emu-xref>(? <emu-xref aoid="GetIteratorFromMethod" id="_ref_13883"><a href="abstract-operations.html#sec-getiteratorfrommethod" class="e-user-code">GetIteratorFromMethod</a></emu-xref>(<var>firstArgument</var>, <var>usingIterator</var>)).</li><li>Perform ? <emu-xref aoid="InitializeTypedArrayFromList" id="_ref_13884"><a href="indexed-collections.html#sec-initializetypedarrayfromlist" class="e-user-code">InitializeTypedArrayFromList</a></emu-xref>(<var>O</var>, <var>values</var>).</li></ol></li><li>Else,<ol><li>NOTE: <var>firstArgument</var> is not an <emu-xref href="#sec-iterable-interface" id="_ref_13885"><a href="control-abstraction-objects.html#sec-iterable-interface">iterable object</a></emu-xref>, so assume it is already an <emu-xref href="#sec-lengthofarraylike" id="_ref_13886"><a href="abstract-operations.html#sec-lengthofarraylike">array-like object</a></emu-xref>.</li><li>Perform ? <emu-xref aoid="InitializeTypedArrayFromArrayLike" id="_ref_13887"><a href="indexed-collections.html#sec-initializetypedarrayfromarraylike" class="e-user-code">InitializeTypedArrayFromArrayLike</a></emu-xref>(<var>O</var>, <var>firstArgument</var>).</li></ol></li></ol></li><li>Return <var>O</var>.</li></ol></li><li><emu-xref href="#assert" id="_ref_13888"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>firstArgument</var> <emu-xref href="#sec-object-type" id="_ref_13889"><a href="ecmascript-data-types-and-values.html#sec-object-type">is not an Object</a></emu-xref>.</li><li>Let <var>elementLength</var> be ? <emu-xref aoid="ToIndex" id="_ref_13890"><a href="abstract-operations.html#sec-toindex" class="e-user-code">ToIndex</a></emu-xref>(<var>firstArgument</var>).</li><li>Return ? <emu-xref aoid="AllocateTypedArray" id="_ref_13891"><a href="indexed-collections.html#sec-allocatetypedarray" class="e-user-code">AllocateTypedArray</a></emu-xref>(<var>constructorName</var>, NewTarget, <var>proto</var>, <var>elementLength</var>).</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-allocatetypedarray" type="abstract operation" aoid="AllocateTypedArray">
|
||
<h1><span class="secnum">23.2.5.1.1</span> AllocateTypedArray ( <var>constructorName</var>, <var>newTarget</var>, <var>defaultProto</var> [ , <var>length</var> ] )</h1>
|
||
<p>The abstract operation AllocateTypedArray takes arguments <var>constructorName</var> (a String which is the name of a <emu-xref href="#typedarray" id="_ref_13892"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> <emu-xref href="#constructor" id="_ref_13893"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> in <emu-xref href="#table-the-typedarray-constructors" id="_ref_772"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref>), <var>newTarget</var> (a <emu-xref href="#constructor" id="_ref_13894"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>), and <var>defaultProto</var> (a String) and optional argument <var>length</var> (a non-negative <emu-xref href="#integer" id="_ref_13895"><a href="notational-conventions.html#integer">integer</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13896"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">normal completion containing</a></emu-xref> a <emu-xref href="#typedarray" id="_ref_13897"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13898"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>. It is used to validate and create an instance of a <emu-xref href="#typedarray" id="_ref_13899"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> <emu-xref href="#constructor" id="_ref_13900"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>. If the <var>length</var> argument is passed, an ArrayBuffer of that length is also allocated and associated with the new <emu-xref href="#typedarray" id="_ref_13901"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> instance. AllocateTypedArray provides common semantics that is used by <var>TypedArray</var>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>proto</var> be ? <emu-xref aoid="GetPrototypeFromConstructor" id="_ref_13902"><a href="ordinary-and-exotic-objects-behaviours.html#sec-getprototypefromconstructor" class="e-user-code">GetPrototypeFromConstructor</a></emu-xref>(<var>newTarget</var>, <var>defaultProto</var>).</li><li>Let <var>obj</var> be <emu-xref aoid="TypedArrayCreate" id="_ref_13903"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraycreate">TypedArrayCreate</a></emu-xref>(<var>proto</var>).</li><li><emu-xref href="#assert" id="_ref_13904"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>obj</var>.<var class="field">[[ViewedArrayBuffer]]</var> is <emu-val>undefined</emu-val>.</li><li>Set <var>obj</var>.<var class="field">[[TypedArrayName]]</var> to <var>constructorName</var>.</li><li>If <var>constructorName</var> is either <emu-val>"BigInt64Array"</emu-val> or <emu-val>"BigUint64Array"</emu-val>, set <var>obj</var>.<var class="field">[[ContentType]]</var> to <emu-const>bigint</emu-const>.</li><li>Else, set <var>obj</var>.<var class="field">[[ContentType]]</var> to <emu-const>number</emu-const>.</li><li>If <var>length</var> is not present, then<ol><li>Set <var>obj</var>.<var class="field">[[ByteLength]]</var> to 0.</li><li>Set <var>obj</var>.<var class="field">[[ByteOffset]]</var> to 0.</li><li>Set <var>obj</var>.<var class="field">[[ArrayLength]]</var> to 0.</li></ol></li><li>Else,<ol><li>Perform ? <emu-xref aoid="AllocateTypedArrayBuffer" id="_ref_13905"><a href="indexed-collections.html#sec-allocatetypedarraybuffer">AllocateTypedArrayBuffer</a></emu-xref>(<var>obj</var>, <var>length</var>).</li></ol></li><li>Return <var>obj</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-initializetypedarrayfromtypedarray" type="abstract operation" oldids="sec-typedarray-typedarray" aoid="InitializeTypedArrayFromTypedArray"><span id="sec-typedarray-typedarray"></span>
|
||
<h1><span class="secnum">23.2.5.1.2</span> InitializeTypedArrayFromTypedArray ( <var>O</var>, <var>srcArray</var> )</h1>
|
||
<p>The abstract operation InitializeTypedArrayFromTypedArray takes arguments <var>O</var> (a <emu-xref href="#typedarray" id="_ref_13906"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and <var>srcArray</var> (a <emu-xref href="#typedarray" id="_ref_13907"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13908"><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_13909"><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>Let <var>srcData</var> be <var>srcArray</var>.<var class="field">[[ViewedArrayBuffer]]</var>.</li><li>Let <var>elementType</var> be <emu-xref aoid="TypedArrayElementType" id="_ref_13910"><a href="indexed-collections.html#sec-typedarrayelementtype">TypedArrayElementType</a></emu-xref>(<var>O</var>).</li><li>Let <var>elementSize</var> be <emu-xref aoid="TypedArrayElementSize" id="_ref_13911"><a href="indexed-collections.html#sec-typedarrayelementsize">TypedArrayElementSize</a></emu-xref>(<var>O</var>).</li><li>Let <var>srcType</var> be <emu-xref aoid="TypedArrayElementType" id="_ref_13912"><a href="indexed-collections.html#sec-typedarrayelementtype">TypedArrayElementType</a></emu-xref>(<var>srcArray</var>).</li><li>Let <var>srcElementSize</var> be <emu-xref aoid="TypedArrayElementSize" id="_ref_13913"><a href="indexed-collections.html#sec-typedarrayelementsize">TypedArrayElementSize</a></emu-xref>(<var>srcArray</var>).</li><li>Let <var>srcByteOffset</var> be <var>srcArray</var>.<var class="field">[[ByteOffset]]</var>.</li><li>Let <var>srcRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13914"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>srcArray</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13915"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>srcRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>elementLength</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13916"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>srcRecord</var>).</li><li>Let <var>byteLength</var> be <var>elementSize</var> × <var>elementLength</var>.</li><li>If <var>elementType</var> is <var>srcType</var>, then<ol><li>Let <var>data</var> be ? <emu-xref aoid="CloneArrayBuffer" id="_ref_13917"><a href="structured-data.html#sec-clonearraybuffer">CloneArrayBuffer</a></emu-xref>(<var>srcData</var>, <var>srcByteOffset</var>, <var>byteLength</var>).</li></ol></li><li>Else,<ol><li>Let <var>data</var> be ? <emu-xref aoid="AllocateArrayBuffer" id="_ref_13918"><a href="structured-data.html#sec-allocatearraybuffer">AllocateArrayBuffer</a></emu-xref>(<emu-xref href="#sec-arraybuffer-constructor" id="_ref_13919"><a href="structured-data.html#sec-arraybuffer-constructor">%ArrayBuffer%</a></emu-xref>, <var>byteLength</var>).</li><li>If <var>srcArray</var>.<var class="field">[[ContentType]]</var> is not <var>O</var>.<var class="field">[[ContentType]]</var>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>srcByteIndex</var> be <var>srcByteOffset</var>.</li><li>Let <var>targetByteIndex</var> be 0.</li><li>Let <var>count</var> be <var>elementLength</var>.</li><li>Repeat, while <var>count</var> > 0,<ol><li>Let <var>value</var> be <emu-xref aoid="GetValueFromBuffer" id="_ref_13920"><a href="structured-data.html#sec-getvaluefrombuffer">GetValueFromBuffer</a></emu-xref>(<var>srcData</var>, <var>srcByteIndex</var>, <var>srcType</var>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Perform <emu-xref aoid="SetValueInBuffer" id="_ref_13921"><a href="structured-data.html#sec-setvalueinbuffer">SetValueInBuffer</a></emu-xref>(<var>data</var>, <var>targetByteIndex</var>, <var>elementType</var>, <var>value</var>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Set <var>srcByteIndex</var> to <var>srcByteIndex</var> + <var>srcElementSize</var>.</li><li>Set <var>targetByteIndex</var> to <var>targetByteIndex</var> + <var>elementSize</var>.</li><li>Set <var>count</var> to <var>count</var> - 1.</li></ol></li></ol></li><li>Set <var>O</var>.<var class="field">[[ViewedArrayBuffer]]</var> to <var>data</var>.</li><li>Set <var>O</var>.<var class="field">[[ByteLength]]</var> to <var>byteLength</var>.</li><li>Set <var>O</var>.<var class="field">[[ByteOffset]]</var> to 0.</li><li>Set <var>O</var>.<var class="field">[[ArrayLength]]</var> to <var>elementLength</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-initializetypedarrayfromarraybuffer" type="abstract operation" oldids="sec-typedarray-buffer-byteoffset-length" aoid="InitializeTypedArrayFromArrayBuffer"><span id="sec-typedarray-buffer-byteoffset-length"></span>
|
||
<h1><span class="secnum">23.2.5.1.3</span> InitializeTypedArrayFromArrayBuffer ( <var>O</var>, <var>buffer</var>, <var>byteOffset</var>, <var>length</var> )</h1>
|
||
<p>The abstract operation InitializeTypedArrayFromArrayBuffer takes arguments <var>O</var> (a <emu-xref href="#typedarray" id="_ref_13922"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>), <var>buffer</var> (an ArrayBuffer or a SharedArrayBuffer), <var>byteOffset</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_13923"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>), and <var>length</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_13924"><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_13925"><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_13926"><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>Let <var>elementSize</var> be <emu-xref aoid="TypedArrayElementSize" id="_ref_13927"><a href="indexed-collections.html#sec-typedarrayelementsize">TypedArrayElementSize</a></emu-xref>(<var>O</var>).</li><li>Let <var>offset</var> be ? <emu-xref aoid="ToIndex" id="_ref_13928"><a href="abstract-operations.html#sec-toindex" class="e-user-code">ToIndex</a></emu-xref>(<var>byteOffset</var>).</li><li>If <var>offset</var> <emu-xref aoid="modulo" id="_ref_13929"><a href="notational-conventions.html#eqn-modulo">modulo</a></emu-xref> <var>elementSize</var> ≠ 0, throw a <emu-val>RangeError</emu-val> exception.</li><li>Let <var>bufferIsFixedLength</var> be <emu-xref aoid="IsFixedLengthArrayBuffer" id="_ref_13930"><a href="structured-data.html#sec-isfixedlengtharraybuffer">IsFixedLengthArrayBuffer</a></emu-xref>(<var>buffer</var>).</li><li>If <var>length</var> is not <emu-val>undefined</emu-val>, then<ol><li>Let <var>newLength</var> be ? <emu-xref aoid="ToIndex" id="_ref_13931"><a href="abstract-operations.html#sec-toindex" class="e-user-code">ToIndex</a></emu-xref>(<var>length</var>).</li></ol></li><li>If <emu-xref aoid="IsDetachedBuffer" id="_ref_13932"><a href="structured-data.html#sec-isdetachedbuffer">IsDetachedBuffer</a></emu-xref>(<var>buffer</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>bufferByteLength</var> be <emu-xref aoid="ArrayBufferByteLength" id="_ref_13933"><a href="structured-data.html#sec-arraybufferbytelength">ArrayBufferByteLength</a></emu-xref>(<var>buffer</var>, <emu-const>seq-cst</emu-const>).</li><li>If <var>length</var> is <emu-val>undefined</emu-val> and <var>bufferIsFixedLength</var> is <emu-val>false</emu-val>, then<ol><li>If <var>offset</var> > <var>bufferByteLength</var>, throw a <emu-val>RangeError</emu-val> exception.</li><li>Set <var>O</var>.<var class="field">[[ByteLength]]</var> to <emu-const>auto</emu-const>.</li><li>Set <var>O</var>.<var class="field">[[ArrayLength]]</var> to <emu-const>auto</emu-const>.</li></ol></li><li>Else,<ol><li>If <var>length</var> is <emu-val>undefined</emu-val>, then<ol><li>If <var>bufferByteLength</var> <emu-xref aoid="modulo" id="_ref_13934"><a href="notational-conventions.html#eqn-modulo">modulo</a></emu-xref> <var>elementSize</var> ≠ 0, throw a <emu-val>RangeError</emu-val> exception.</li><li>Let <var>newByteLength</var> be <var>bufferByteLength</var> - <var>offset</var>.</li><li>If <var>newByteLength</var> < 0, throw a <emu-val>RangeError</emu-val> exception.</li></ol></li><li>Else,<ol><li>Let <var>newByteLength</var> be <var>newLength</var> × <var>elementSize</var>.</li><li>If <var>offset</var> + <var>newByteLength</var> > <var>bufferByteLength</var>, throw a <emu-val>RangeError</emu-val> exception.</li></ol></li><li>Set <var>O</var>.<var class="field">[[ByteLength]]</var> to <var>newByteLength</var>.</li><li>Set <var>O</var>.<var class="field">[[ArrayLength]]</var> to <var>newByteLength</var> / <var>elementSize</var>.</li></ol></li><li>Set <var>O</var>.<var class="field">[[ViewedArrayBuffer]]</var> to <var>buffer</var>.</li><li>Set <var>O</var>.<var class="field">[[ByteOffset]]</var> to <var>offset</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-initializetypedarrayfromlist" type="abstract operation" aoid="InitializeTypedArrayFromList">
|
||
<h1><span class="secnum">23.2.5.1.4</span> InitializeTypedArrayFromList ( <var>O</var>, <var>values</var> )</h1>
|
||
<p>The abstract operation InitializeTypedArrayFromList takes arguments <var>O</var> (a <emu-xref href="#typedarray" id="_ref_13935"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and <var>values</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_13936"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-ecmascript-language-types" id="_ref_13937"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types">ECMAScript language values</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13938"><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_13939"><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>Let <var>len</var> be the number of elements in <var>values</var>.</li><li>Perform ? <emu-xref aoid="AllocateTypedArrayBuffer" id="_ref_13940"><a href="indexed-collections.html#sec-allocatetypedarraybuffer">AllocateTypedArrayBuffer</a></emu-xref>(<var>O</var>, <var>len</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13941"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13942"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be the first element of <var>values</var>.</li><li>Remove the first element from <var>values</var>.</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13943"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>Pk</var>, <var>kValue</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li><emu-xref href="#assert" id="_ref_13944"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>values</var> is now an empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_13945"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-initializetypedarrayfromarraylike" type="abstract operation" aoid="InitializeTypedArrayFromArrayLike">
|
||
<h1><span class="secnum">23.2.5.1.5</span> InitializeTypedArrayFromArrayLike ( <var>O</var>, <var>arrayLike</var> )</h1>
|
||
<p>The abstract operation InitializeTypedArrayFromArrayLike takes arguments <var>O</var> (a <emu-xref href="#typedarray" id="_ref_13946"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and <var>arrayLike</var> (an Object, but not a <emu-xref href="#typedarray" id="_ref_13947"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref> or an ArrayBuffer) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13948"><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_13949"><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>Let <var>len</var> be ? <emu-xref aoid="LengthOfArrayLike" id="_ref_13950"><a href="abstract-operations.html#sec-lengthofarraylike" class="e-user-code">LengthOfArrayLike</a></emu-xref>(<var>arrayLike</var>).</li><li>Perform ? <emu-xref aoid="AllocateTypedArrayBuffer" id="_ref_13951"><a href="indexed-collections.html#sec-allocatetypedarraybuffer">AllocateTypedArrayBuffer</a></emu-xref>(<var>O</var>, <var>len</var>).</li><li>Let <var>k</var> be 0.</li><li>Repeat, while <var>k</var> < <var>len</var>,<ol><li>Let <var>Pk</var> be ! <emu-xref aoid="ToString" id="_ref_13952"><a href="abstract-operations.html#sec-tostring">ToString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_13953"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>k</var>)).</li><li>Let <var>kValue</var> be ? <emu-xref aoid="Get" id="_ref_13954"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>arrayLike</var>, <var>Pk</var>).</li><li>Perform ? <emu-xref aoid="Set" id="_ref_13955"><a href="abstract-operations.html#sec-set-o-p-v-throw" class="e-user-code">Set</a></emu-xref>(<var>O</var>, <var>Pk</var>, <var>kValue</var>, <emu-val>true</emu-val>).</li><li>Set <var>k</var> to <var>k</var> + 1.</li></ol></li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-allocatetypedarraybuffer" type="abstract operation" aoid="AllocateTypedArrayBuffer">
|
||
<h1><span class="secnum">23.2.5.1.6</span> AllocateTypedArrayBuffer ( <var>O</var>, <var>length</var> )</h1>
|
||
<p>The abstract operation AllocateTypedArrayBuffer takes arguments <var>O</var> (a <emu-xref href="#typedarray" id="_ref_13956"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArray</a></emu-xref>) and <var>length</var> (a non-negative <emu-xref href="#integer" id="_ref_13957"><a href="notational-conventions.html#integer">integer</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_13958"><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_13959"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">throw completion</a></emu-xref>. It allocates and associates an ArrayBuffer with <var>O</var>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_13960"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>O</var>.<var class="field">[[ViewedArrayBuffer]]</var> is <emu-val>undefined</emu-val>.</li><li>Let <var>elementSize</var> be <emu-xref aoid="TypedArrayElementSize" id="_ref_13961"><a href="indexed-collections.html#sec-typedarrayelementsize">TypedArrayElementSize</a></emu-xref>(<var>O</var>).</li><li>Let <var>byteLength</var> be <var>elementSize</var> × <var>length</var>.</li><li>Let <var>data</var> be ? <emu-xref aoid="AllocateArrayBuffer" id="_ref_13962"><a href="structured-data.html#sec-allocatearraybuffer">AllocateArrayBuffer</a></emu-xref>(<emu-xref href="#sec-arraybuffer-constructor" id="_ref_13963"><a href="structured-data.html#sec-arraybuffer-constructor">%ArrayBuffer%</a></emu-xref>, <var>byteLength</var>).</li><li>Set <var>O</var>.<var class="field">[[ViewedArrayBuffer]]</var> to <var>data</var>.</li><li>Set <var>O</var>.<var class="field">[[ByteLength]]</var> to <var>byteLength</var>.</li><li>Set <var>O</var>.<var class="field">[[ByteOffset]]</var> to 0.</li><li>Set <var>O</var>.<var class="field">[[ArrayLength]]</var> to <var>length</var>.</li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-properties-of-the-typedarray-constructors">
|
||
<h1><span class="secnum">23.2.6</span> Properties of the <var>TypedArray</var> Constructors</h1>
|
||
<p>Each <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13964"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref>:</p>
|
||
<ul>
|
||
<li>has a <var class="field">[[Prototype]]</var> internal slot whose value is <emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_13965"><a href="indexed-collections.html#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref>.</li>
|
||
<li>has a <emu-val>"length"</emu-val> property whose value is <emu-val>3</emu-val><sub>𝔽</sub>.</li>
|
||
<li>has a <emu-val>"name"</emu-val> property whose value is the String value of the <emu-xref href="#constructor" id="_ref_13966"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> name specified for it in <emu-xref href="#table-the-typedarray-constructors" id="_ref_773"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref>.</li>
|
||
<li>has the following properties:</li>
|
||
</ul>
|
||
|
||
<emu-clause id="sec-typedarray.bytes_per_element">
|
||
<h1><span class="secnum">23.2.6.1</span> <var>TypedArray</var>.BYTES_PER_ELEMENT</h1>
|
||
<p>The value of <var>TypedArray</var><code>.BYTES_PER_ELEMENT</code> is the Element Size value specified in <emu-xref href="#table-the-typedarray-constructors" id="_ref_774"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref> for <var>TypedArray</var>.</p>
|
||
<p>This property has the attributes { <var class="field">[[Writable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Enumerable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Configurable]]</var>: <emu-val>false</emu-val> }.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-typedarray.prototype">
|
||
<h1><span class="secnum">23.2.6.2</span> <var>TypedArray</var>.prototype</h1>
|
||
<p>The initial value of <var>TypedArray</var><code>.prototype</code> is the corresponding <var>TypedArray</var> prototype intrinsic object (<emu-xref href="#sec-properties-of-typedarray-prototype-objects" id="_ref_775"><a href="indexed-collections.html#sec-properties-of-typedarray-prototype-objects">23.2.7</a></emu-xref>).</p>
|
||
<p>This property has the attributes { <var class="field">[[Writable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Enumerable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Configurable]]</var>: <emu-val>false</emu-val> }.</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-properties-of-typedarray-prototype-objects">
|
||
<h1><span class="secnum">23.2.7</span> Properties of the <var>TypedArray</var> Prototype Objects</h1>
|
||
<p>Each <var>TypedArray</var> prototype object:</p>
|
||
<ul>
|
||
<li>has a <var class="field">[[Prototype]]</var> internal slot whose value is <emu-xref href="#sec-properties-of-the-%typedarrayprototype%-object" id="_ref_13967"><a href="indexed-collections.html#sec-properties-of-the-%typedarrayprototype%-object">%TypedArray.prototype%</a></emu-xref>.</li>
|
||
<li>is an <emu-xref href="#ordinary-object" id="_ref_13968"><a href="ecmascript-data-types-and-values.html#ordinary-object">ordinary object</a></emu-xref>.</li>
|
||
<li>does not have a <var class="field">[[ViewedArrayBuffer]]</var> or any other of the internal slots that are specific to <var>TypedArray</var> instance objects.</li>
|
||
</ul>
|
||
|
||
<emu-clause id="sec-typedarray.prototype.bytes_per_element">
|
||
<h1><span class="secnum">23.2.7.1</span> <var>TypedArray</var>.prototype.BYTES_PER_ELEMENT</h1>
|
||
<p>The value of <var>TypedArray</var><code>.prototype.BYTES_PER_ELEMENT</code> is the Element Size value specified in <emu-xref href="#table-the-typedarray-constructors" id="_ref_776"><a href="indexed-collections.html#table-the-typedarray-constructors">Table 70</a></emu-xref> for <var>TypedArray</var>.</p>
|
||
<p>This property has the attributes { <var class="field">[[Writable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Enumerable]]</var>: <emu-val>false</emu-val>, <var class="field">[[Configurable]]</var>: <emu-val>false</emu-val> }.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-typedarray.prototype.constructor">
|
||
<h1><span class="secnum">23.2.7.2</span> <var>TypedArray</var>.prototype.constructor</h1>
|
||
<p>The initial value of the <emu-val>"constructor"</emu-val> property of the prototype for a given <var>TypedArray</var> <emu-xref href="#constructor" id="_ref_13969"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> is the <emu-xref href="#constructor" id="_ref_13970"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> itself.</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-properties-of-typedarray-instances">
|
||
<h1><span class="secnum">23.2.8</span> Properties of <var>TypedArray</var> Instances</h1>
|
||
<p><var>TypedArray</var> instances are <emu-xref href="#typedarray" id="_ref_13971"><a href="ordinary-and-exotic-objects-behaviours.html#typedarray">TypedArrays</a></emu-xref>. Each <var>TypedArray</var> instance inherits properties from the corresponding <var>TypedArray</var> prototype object. Each <var>TypedArray</var> instance has the following internal slots: <var class="field">[[ViewedArrayBuffer]]</var>, <var class="field">[[TypedArrayName]]</var>, <var class="field">[[ContentType]]</var>, <var class="field">[[ByteLength]]</var>, <var class="field">[[ByteOffset]]</var>, and <var class="field">[[ArrayLength]]</var>.</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-uint8array">
|
||
<h1><span class="secnum">23.3</span> Uint8Array Objects</h1>
|
||
<p>A Uint8Array is a particular kind of <var>TypedArray</var> as described above. In addition, there are additional methods on the Uint8Array <emu-xref href="#constructor" id="_ref_13972"><a href="ecmascript-data-types-and-values.html#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-additional-properties-of-the-uint8array-constructor" id="_ref_777"><a href="indexed-collections.html#sec-additional-properties-of-the-uint8array-constructor">23.3.1</a></emu-xref>) and on the Uint8Array prototype object (<emu-xref href="#sec-additional-properties-of-the-uint8array-prototype-object" id="_ref_778"><a href="indexed-collections.html#sec-additional-properties-of-the-uint8array-prototype-object">23.3.2</a></emu-xref>).</p>
|
||
|
||
<emu-clause id="sec-additional-properties-of-the-uint8array-constructor">
|
||
<h1><span class="secnum">23.3.1</span> Additional Properties of the Uint8Array Constructor</h1>
|
||
|
||
<emu-clause id="sec-uint8array.frombase64" type="built-in function">
|
||
<h1><span class="secnum">23.3.1.1</span> Uint8Array.fromBase64 ( <var>string</var> [ , <var>options</var> ] )</h1>
|
||
<emu-alg><ol><li>If <var>string</var> <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_13973"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-string-type">is not a String</a></emu-xref>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>opts</var> be ? <emu-xref aoid="GetOptionsObject" id="_ref_13974"><a href="abstract-operations.html#sec-getoptionsobject">GetOptionsObject</a></emu-xref>(<var>options</var>).</li><li>Let <var>alphabet</var> be ? <emu-xref aoid="Get" id="_ref_13975"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>opts</var>, <emu-val>"alphabet"</emu-val>).</li><li>If <var>alphabet</var> is <emu-val>undefined</emu-val>, set <var>alphabet</var> to <emu-val>"base64"</emu-val>.</li><li>If <var>alphabet</var> is neither <emu-val>"base64"</emu-val> nor <emu-val>"base64url"</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>lastChunkHandling</var> be ? <emu-xref aoid="Get" id="_ref_13976"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>opts</var>, <emu-val>"lastChunkHandling"</emu-val>).</li><li>If <var>lastChunkHandling</var> is <emu-val>undefined</emu-val>, set <var>lastChunkHandling</var> to <emu-val>"loose"</emu-val>.</li><li>If <var>lastChunkHandling</var> is not one of <emu-val>"loose"</emu-val>, <emu-val>"strict"</emu-val>, or <emu-val>"stop-before-partial"</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>result</var> be <emu-xref aoid="FromBase64" id="_ref_13977"><a href="indexed-collections.html#sec-frombase64">FromBase64</a></emu-xref>(<var>string</var>, <var>alphabet</var>, <var>lastChunkHandling</var>).</li><li>If <var>result</var>.<var class="field">[[Error]]</var> is not <emu-const>none</emu-const>, then<ol><li>Return <emu-xref aoid="ThrowCompletion" id="_ref_13978"><a href="ecmascript-data-types-and-values.html#sec-throwcompletion">ThrowCompletion</a></emu-xref>(<var>result</var>.<var class="field">[[Error]]</var>).</li></ol></li><li>Let <var>resultLength</var> be the number of elements in <var>result</var>.<var class="field">[[Bytes]]</var>.</li><li>Let <var>ta</var> be ? <emu-xref aoid="AllocateTypedArray" id="_ref_13979"><a href="indexed-collections.html#sec-allocatetypedarray">AllocateTypedArray</a></emu-xref>(<emu-val>"Uint8Array"</emu-val>, <emu-xref href="#sec-typedarray-objects" id="_ref_13980"><a href="indexed-collections.html#sec-typedarray-objects">%Uint8Array%</a></emu-xref>, <emu-val>"%Uint8Array.prototype%"</emu-val>, <var>resultLength</var>).</li><li><emu-xref href="#assert" id="_ref_13981"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>ta</var>.<var class="field">[[ViewedArrayBuffer]]</var>.<var class="field">[[ArrayBufferByteLength]]</var> is the number of elements in <var>result</var>.<var class="field">[[Bytes]]</var>.</li><li>Set the value at each index of <var>ta</var>.<var class="field">[[ViewedArrayBuffer]]</var>.<var class="field">[[ArrayBufferData]]</var> to the value at the corresponding index of <var>result</var>.<var class="field">[[Bytes]]</var>.</li><li>Return <var>ta</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-uint8array.fromhex" type="built-in function">
|
||
<h1><span class="secnum">23.3.1.2</span> Uint8Array.fromHex ( <var>string</var> )</h1>
|
||
<emu-alg><ol><li>If <var>string</var> <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_13982"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-string-type">is not a String</a></emu-xref>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>result</var> be <emu-xref aoid="FromHex" id="_ref_13983"><a href="indexed-collections.html#sec-fromhex">FromHex</a></emu-xref>(<var>string</var>).</li><li>If <var>result</var>.<var class="field">[[Error]]</var> is not <emu-const>none</emu-const>, then<ol><li>Return <emu-xref aoid="ThrowCompletion" id="_ref_13984"><a href="ecmascript-data-types-and-values.html#sec-throwcompletion">ThrowCompletion</a></emu-xref>(<var>result</var>.<var class="field">[[Error]]</var>).</li></ol></li><li>Let <var>resultLength</var> be the number of elements in <var>result</var>.<var class="field">[[Bytes]]</var>.</li><li>Let <var>ta</var> be ? <emu-xref aoid="AllocateTypedArray" id="_ref_13985"><a href="indexed-collections.html#sec-allocatetypedarray">AllocateTypedArray</a></emu-xref>(<emu-val>"Uint8Array"</emu-val>, <emu-xref href="#sec-typedarray-objects" id="_ref_13986"><a href="indexed-collections.html#sec-typedarray-objects">%Uint8Array%</a></emu-xref>, <emu-val>"%Uint8Array.prototype%"</emu-val>, <var>resultLength</var>).</li><li><emu-xref href="#assert" id="_ref_13987"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>ta</var>.<var class="field">[[ViewedArrayBuffer]]</var>.<var class="field">[[ArrayBufferByteLength]]</var> is the number of elements in <var>result</var>.<var class="field">[[Bytes]]</var>.</li><li>Set the value at each index of <var>ta</var>.<var class="field">[[ViewedArrayBuffer]]</var>.<var class="field">[[ArrayBufferData]]</var> to the value at the corresponding index of <var>result</var>.<var class="field">[[Bytes]]</var>.</li><li>Return <var>ta</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-additional-properties-of-the-uint8array-prototype-object">
|
||
<h1><span class="secnum">23.3.2</span> Additional Properties of the Uint8Array Prototype Object</h1>
|
||
|
||
<emu-clause id="sec-uint8array.prototype.setfrombase64" type="built-in function">
|
||
<h1><span class="secnum">23.3.2.1</span> Uint8Array.prototype.setFromBase64 ( <var>string</var> [ , <var>options</var> ] )</h1>
|
||
<emu-alg><ol><li>Let <var>into</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="ValidateUint8Array" id="_ref_13988"><a href="indexed-collections.html#sec-validateuint8array">ValidateUint8Array</a></emu-xref>(<var>into</var>).</li><li>If <var>string</var> <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_13989"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-string-type">is not a String</a></emu-xref>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>opts</var> be ? <emu-xref aoid="GetOptionsObject" id="_ref_13990"><a href="abstract-operations.html#sec-getoptionsobject">GetOptionsObject</a></emu-xref>(<var>options</var>).</li><li>Let <var>alphabet</var> be ? <emu-xref aoid="Get" id="_ref_13991"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>opts</var>, <emu-val>"alphabet"</emu-val>).</li><li>If <var>alphabet</var> is <emu-val>undefined</emu-val>, set <var>alphabet</var> to <emu-val>"base64"</emu-val>.</li><li>If <var>alphabet</var> is neither <emu-val>"base64"</emu-val> nor <emu-val>"base64url"</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>lastChunkHandling</var> be ? <emu-xref aoid="Get" id="_ref_13992"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>opts</var>, <emu-val>"lastChunkHandling"</emu-val>).</li><li>If <var>lastChunkHandling</var> is <emu-val>undefined</emu-val>, set <var>lastChunkHandling</var> to <emu-val>"loose"</emu-val>.</li><li>If <var>lastChunkHandling</var> is not one of <emu-val>"loose"</emu-val>, <emu-val>"strict"</emu-val>, or <emu-val>"stop-before-partial"</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>taRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_13993"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>into</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_13994"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>byteLength</var> be <emu-xref aoid="TypedArrayLength" id="_ref_13995"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>result</var> be <emu-xref aoid="FromBase64" id="_ref_13996"><a href="indexed-collections.html#sec-frombase64">FromBase64</a></emu-xref>(<var>string</var>, <var>alphabet</var>, <var>lastChunkHandling</var>, <var>byteLength</var>).</li><li>Let <var>bytes</var> be <var>result</var>.<var class="field">[[Bytes]]</var>.</li><li>Let <var>written</var> be the number of elements in <var>bytes</var>.</li><li>NOTE: <emu-xref aoid="FromBase64" id="_ref_13997"><a href="indexed-collections.html#sec-frombase64">FromBase64</a></emu-xref> does not invoke any user code, so the ArrayBuffer backing <var>into</var> cannot have been detached or shrunk.</li><li><emu-xref href="#assert" id="_ref_13998"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>written</var> ≤ <var>byteLength</var>.</li><li>Perform <emu-xref aoid="SetUint8ArrayBytes" id="_ref_13999"><a href="indexed-collections.html#sec-setuint8arraybytes">SetUint8ArrayBytes</a></emu-xref>(<var>into</var>, <var>bytes</var>).</li><li>If <var>result</var>.<var class="field">[[Error]]</var> is not <emu-const>none</emu-const>, then<ol><li>Return <emu-xref aoid="ThrowCompletion" id="_ref_14000"><a href="ecmascript-data-types-and-values.html#sec-throwcompletion">ThrowCompletion</a></emu-xref>(<var>result</var>.<var class="field">[[Error]]</var>).</li></ol></li><li>Let <var>resultObject</var> be <emu-xref aoid="OrdinaryObjectCreate" id="_ref_14001"><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_14002"><a href="fundamental-objects.html#sec-properties-of-the-object-prototype-object">%Object.prototype%</a></emu-xref>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_14003"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>resultObject</var>, <emu-val>"read"</emu-val>, <emu-xref aoid="𝔽" id="_ref_14004"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>result</var>.<var class="field">[[Read]]</var>)).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_14005"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>resultObject</var>, <emu-val>"written"</emu-val>, <emu-xref aoid="𝔽" id="_ref_14006"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>written</var>)).</li><li>Return <var>resultObject</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-uint8array.prototype.setfromhex" type="built-in function">
|
||
<h1><span class="secnum">23.3.2.2</span> Uint8Array.prototype.setFromHex ( <var>string</var> )</h1>
|
||
<emu-alg><ol><li>Let <var>into</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="ValidateUint8Array" id="_ref_14007"><a href="indexed-collections.html#sec-validateuint8array">ValidateUint8Array</a></emu-xref>(<var>into</var>).</li><li>If <var>string</var> <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_14008"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-string-type">is not a String</a></emu-xref>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>taRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_14009"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>into</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_14010"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>byteLength</var> be <emu-xref aoid="TypedArrayLength" id="_ref_14011"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>result</var> be <emu-xref aoid="FromHex" id="_ref_14012"><a href="indexed-collections.html#sec-fromhex">FromHex</a></emu-xref>(<var>string</var>, <var>byteLength</var>).</li><li>Let <var>bytes</var> be <var>result</var>.<var class="field">[[Bytes]]</var>.</li><li>Let <var>written</var> be the number of elements in <var>bytes</var>.</li><li>NOTE: <emu-xref aoid="FromHex" id="_ref_14013"><a href="indexed-collections.html#sec-fromhex">FromHex</a></emu-xref> does not invoke any user code, so the ArrayBuffer backing <var>into</var> cannot have been detached or shrunk.</li><li><emu-xref href="#assert" id="_ref_14014"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>written</var> ≤ <var>byteLength</var>.</li><li>Perform <emu-xref aoid="SetUint8ArrayBytes" id="_ref_14015"><a href="indexed-collections.html#sec-setuint8arraybytes">SetUint8ArrayBytes</a></emu-xref>(<var>into</var>, <var>bytes</var>).</li><li>If <var>result</var>.<var class="field">[[Error]]</var> is not <emu-const>none</emu-const>, then<ol><li>Return <emu-xref aoid="ThrowCompletion" id="_ref_14016"><a href="ecmascript-data-types-and-values.html#sec-throwcompletion">ThrowCompletion</a></emu-xref>(<var>result</var>.<var class="field">[[Error]]</var>).</li></ol></li><li>Let <var>resultObject</var> be <emu-xref aoid="OrdinaryObjectCreate" id="_ref_14017"><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_14018"><a href="fundamental-objects.html#sec-properties-of-the-object-prototype-object">%Object.prototype%</a></emu-xref>).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_14019"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>resultObject</var>, <emu-val>"read"</emu-val>, <emu-xref aoid="𝔽" id="_ref_14020"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>result</var>.<var class="field">[[Read]]</var>)).</li><li>Perform ! <emu-xref aoid="CreateDataPropertyOrThrow" id="_ref_14021"><a href="abstract-operations.html#sec-createdatapropertyorthrow">CreateDataPropertyOrThrow</a></emu-xref>(<var>resultObject</var>, <emu-val>"written"</emu-val>, <emu-xref aoid="𝔽" id="_ref_14022"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>written</var>)).</li><li>Return <var>resultObject</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-uint8array.prototype.tobase64" type="built-in function">
|
||
<h1><span class="secnum">23.3.2.3</span> Uint8Array.prototype.toBase64 ( [ <var>options</var> ] )</h1>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="ValidateUint8Array" id="_ref_14023"><a href="indexed-collections.html#sec-validateuint8array">ValidateUint8Array</a></emu-xref>(<var>O</var>).</li><li>Let <var>opts</var> be ? <emu-xref aoid="GetOptionsObject" id="_ref_14024"><a href="abstract-operations.html#sec-getoptionsobject">GetOptionsObject</a></emu-xref>(<var>options</var>).</li><li>Let <var>alphabet</var> be ? <emu-xref aoid="Get" id="_ref_14025"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>opts</var>, <emu-val>"alphabet"</emu-val>).</li><li>If <var>alphabet</var> is <emu-val>undefined</emu-val>, set <var>alphabet</var> to <emu-val>"base64"</emu-val>.</li><li>If <var>alphabet</var> is neither <emu-val>"base64"</emu-val> nor <emu-val>"base64url"</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>omitPadding</var> be <emu-xref aoid="ToBoolean" id="_ref_14026"><a href="abstract-operations.html#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Get" id="_ref_14027"><a href="abstract-operations.html#sec-get-o-p" class="e-user-code">Get</a></emu-xref>(<var>opts</var>, <emu-val>"omitPadding"</emu-val>)).</li><li>Let <var>toEncode</var> be ? <emu-xref aoid="GetUint8ArrayBytes" id="_ref_14028"><a href="indexed-collections.html#sec-getuint8arraybytes">GetUint8ArrayBytes</a></emu-xref>(<var>O</var>).</li><li>If <var>alphabet</var> is <emu-val>"base64"</emu-val>, then<ol><li>Let <var>outAscii</var> be the sequence of code points which results from encoding <var>toEncode</var> according to the base64 encoding specified in section 4 of <a href="https://datatracker.ietf.org/doc/html/rfc4648">RFC 4648</a>. Padding is included if and only if <var>omitPadding</var> is <emu-val>false</emu-val>.</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_14029"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>alphabet</var> is <emu-val>"base64url"</emu-val>.</li><li>Let <var>outAscii</var> be the sequence of code points which results from encoding <var>toEncode</var> according to the base64url encoding specified in section 5 of <a href="https://datatracker.ietf.org/doc/html/rfc4648">RFC 4648</a>. Padding is included if and only if <var>omitPadding</var> is <emu-val>false</emu-val>.</li></ol></li><li>Return <emu-xref aoid="CodePointsToString" id="_ref_14030"><a href="ecmascript-language-source-code.html#sec-codepointstostring">CodePointsToString</a></emu-xref>(<var>outAscii</var>).</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-uint8array.prototype.tohex" type="built-in function">
|
||
<h1><span class="secnum">23.3.2.4</span> Uint8Array.prototype.toHex ( )</h1>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li>Perform ? <emu-xref aoid="ValidateUint8Array" id="_ref_14031"><a href="indexed-collections.html#sec-validateuint8array">ValidateUint8Array</a></emu-xref>(<var>O</var>).</li><li>Let <var>toEncode</var> be ? <emu-xref aoid="GetUint8ArrayBytes" id="_ref_14032"><a href="indexed-collections.html#sec-getuint8arraybytes">GetUint8ArrayBytes</a></emu-xref>(<var>O</var>).</li><li>Let <var>out</var> be the empty String.</li><li>For each byte <var>byte</var> of <var>toEncode</var>, do<ol><li>Let <var>hex</var> be <emu-xref aoid="Number::toString" id="_ref_14033"><a href="ecmascript-data-types-and-values.html#sec-numeric-types-number-tostring">Number::toString</a></emu-xref>(<emu-xref aoid="𝔽" id="_ref_14034"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>byte</var>), 16).</li><li>Set <var>hex</var> to <emu-xref aoid="StringPad" id="_ref_14035"><a href="text-processing.html#sec-stringpad">StringPad</a></emu-xref>(<var>hex</var>, 2, <emu-val>"0"</emu-val>, <emu-const>start</emu-const>).</li><li>Set <var>out</var> to the <emu-xref href="#string-concatenation" id="_ref_14036"><a href="ecmascript-data-types-and-values.html#string-concatenation">string-concatenation</a></emu-xref> of <var>out</var> and <var>hex</var>.</li></ol></li><li>Return <var>out</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-abstract-operations-for-uint8array-objects">
|
||
<h1><span class="secnum">23.3.3</span> Abstract Operations for Uint8Array Objects</h1>
|
||
|
||
<emu-clause id="sec-validateuint8array" type="abstract operation" aoid="ValidateUint8Array">
|
||
<h1><span class="secnum">23.3.3.1</span> ValidateUint8Array ( <var>ta</var> )</h1>
|
||
<p>The abstract operation ValidateUint8Array takes argument <var>ta</var> (an <emu-xref href="#sec-ecmascript-language-types" id="_ref_14037"><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_14038"><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_14039"><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>Perform ? <emu-xref aoid="RequireInternalSlot" id="_ref_14040"><a href="ordinary-and-exotic-objects-behaviours.html#sec-requireinternalslot">RequireInternalSlot</a></emu-xref>(<var>ta</var>, <var class="field">[[TypedArrayName]]</var>).</li><li>If <var>ta</var>.<var class="field">[[TypedArrayName]]</var> is not <emu-val>"Uint8Array"</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getuint8arraybytes" type="abstract operation" aoid="GetUint8ArrayBytes">
|
||
<h1><span class="secnum">23.3.3.2</span> GetUint8ArrayBytes ( <var>ta</var> )</h1>
|
||
<p>The abstract operation GetUint8ArrayBytes takes argument <var>ta</var> (a Uint8Array) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_14041"><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_14042"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-data-blocks" id="_ref_14043"><a href="ecmascript-data-types-and-values.html#sec-data-blocks">byte values</a></emu-xref> or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_14044"><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>Let <var>buffer</var> be <var>ta</var>.<var class="field">[[ViewedArrayBuffer]]</var>.</li><li>Let <var>taRecord</var> be <emu-xref aoid="MakeTypedArrayWithBufferWitnessRecord" id="_ref_14045"><a href="ordinary-and-exotic-objects-behaviours.html#sec-maketypedarraywithbufferwitnessrecord">MakeTypedArrayWithBufferWitnessRecord</a></emu-xref>(<var>ta</var>, <emu-const>seq-cst</emu-const>).</li><li>If <emu-xref aoid="IsTypedArrayOutOfBounds" id="_ref_14046"><a href="ordinary-and-exotic-objects-behaviours.html#sec-istypedarrayoutofbounds">IsTypedArrayOutOfBounds</a></emu-xref>(<var>taRecord</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>len</var> be <emu-xref aoid="TypedArrayLength" id="_ref_14047"><a href="ordinary-and-exotic-objects-behaviours.html#sec-typedarraylength">TypedArrayLength</a></emu-xref>(<var>taRecord</var>).</li><li>Let <var>byteOffset</var> be <var>ta</var>.<var class="field">[[ByteOffset]]</var>.</li><li>Let <var>bytes</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14048"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>index</var> be 0.</li><li>Repeat, while <var>index</var> < <var>len</var>,<ol><li>Let <var>byteIndex</var> be <var>byteOffset</var> + <var>index</var>.</li><li>Let <var>byte</var> be <emu-xref aoid="ℝ" id="_ref_14049"><a href="notational-conventions.html#%E2%84%9D">ℝ</a></emu-xref>(<emu-xref aoid="GetValueFromBuffer" id="_ref_14050"><a href="structured-data.html#sec-getvaluefrombuffer">GetValueFromBuffer</a></emu-xref>(<var>buffer</var>, <var>byteIndex</var>, <emu-const>uint8</emu-const>, <emu-val>true</emu-val>, <emu-const>unordered</emu-const>)).</li><li>Append <var>byte</var> to <var>bytes</var>.</li><li>Set <var>index</var> to <var>index</var> + 1.</li></ol></li><li>Return <var>bytes</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-setuint8arraybytes" type="abstract operation" aoid="SetUint8ArrayBytes">
|
||
<h1><span class="secnum">23.3.3.3</span> SetUint8ArrayBytes ( <var>into</var>, <var>bytes</var> )</h1>
|
||
<p>The abstract operation SetUint8ArrayBytes takes arguments <var>into</var> (a Uint8Array) and <var>bytes</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14051"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-data-blocks" id="_ref_14052"><a href="ecmascript-data-types-and-values.html#sec-data-blocks">byte values</a></emu-xref>) and returns <emu-const>unused</emu-const>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>offset</var> be <var>into</var>.<var class="field">[[ByteOffset]]</var>.</li><li>Let <var>len</var> be the number of elements in <var>bytes</var>.</li><li>Let <var>index</var> be 0.</li><li>Repeat, while <var>index</var> < <var>len</var>,<ol><li>Let <var>byte</var> be <var>bytes</var>[<var>index</var>].</li><li>Let <var>byteIndexInBuffer</var> be <var>index</var> + <var>offset</var>.</li><li>Perform <emu-xref aoid="SetValueInBuffer" id="_ref_14053"><a href="structured-data.html#sec-setvalueinbuffer">SetValueInBuffer</a></emu-xref>(<var>into</var>.<var class="field">[[ViewedArrayBuffer]]</var>, <var>byteIndexInBuffer</var>, <emu-const>uint8</emu-const>, <emu-xref aoid="𝔽" id="_ref_14054"><a href="notational-conventions.html#%F0%9D%94%BD">𝔽</a></emu-xref>(<var>byte</var>), <emu-val>true</emu-val>, <emu-const>unordered</emu-const>).</li><li>Set <var>index</var> to <var>index</var> + 1.</li></ol></li><li>Return <emu-const>unused</emu-const>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-skipasciiwhitespace" type="abstract operation" aoid="SkipAsciiWhitespace">
|
||
<h1><span class="secnum">23.3.3.4</span> SkipAsciiWhitespace ( <var>string</var>, <var>index</var> )</h1>
|
||
<p>The abstract operation SkipAsciiWhitespace takes arguments <var>string</var> (a String) and <var>index</var> (a non-negative <emu-xref href="#integer" id="_ref_14055"><a href="notational-conventions.html#integer">integer</a></emu-xref>) and returns a non-negative <emu-xref href="#integer" id="_ref_14056"><a href="notational-conventions.html#integer">integer</a></emu-xref>. It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>Let <var>length</var> be the length of <var>string</var>.</li><li>Repeat, while <var>index</var> < <var>length</var>,<ol><li>Let <var>char</var> be the code unit at index <var>index</var> within <var>string</var>.</li><li>If <var>char</var> is not one of 0x0009 (TAB), 0x000A (LF), 0x000C (FF), 0x000D (CR), or 0x0020 (SPACE), then<ol><li>Return <var>index</var>.</li></ol></li><li>Set <var>index</var> to <var>index</var> + 1.</li></ol></li><li>Return <var>index</var>.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-decodefinalbase64chunk" type="abstract operation" aoid="DecodeFinalBase64Chunk">
|
||
<h1><span class="secnum">23.3.3.5</span> DecodeFinalBase64Chunk ( <var>chunk</var>, <var>throwOnExtraBits</var> )</h1>
|
||
<p>The abstract operation DecodeFinalBase64Chunk takes arguments <var>chunk</var> (a String of length 2 or 3) and <var>throwOnExtraBits</var> (a Boolean) and returns either a <emu-xref href="#sec-completion-record-specification-type" id="_ref_14057"><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_14058"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-data-blocks" id="_ref_14059"><a href="ecmascript-data-types-and-values.html#sec-data-blocks">byte values</a></emu-xref>, or a <emu-xref href="#sec-completion-record-specification-type" id="_ref_14060"><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>Let <var>chunkLength</var> be the length of <var>chunk</var>.</li><li>If <var>chunkLength</var> = 2, then<ol><li>Set <var>chunk</var> to the <emu-xref href="#string-concatenation" id="_ref_14061"><a href="ecmascript-data-types-and-values.html#string-concatenation">string-concatenation</a></emu-xref> of <var>chunk</var> and <emu-val>"AA"</emu-val>.</li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_14062"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>chunkLength</var> is 3.</li><li>Set <var>chunk</var> to the <emu-xref href="#string-concatenation" id="_ref_14063"><a href="ecmascript-data-types-and-values.html#string-concatenation">string-concatenation</a></emu-xref> of <var>chunk</var> and <emu-val>"A"</emu-val>.</li></ol></li><li>Let <var>bytes</var> be <emu-xref aoid="DecodeFullLengthBase64Chunk" id="_ref_14064"><a href="indexed-collections.html#sec-decodefulllengthbase64chunk">DecodeFullLengthBase64Chunk</a></emu-xref>(<var>chunk</var>).</li><li>If <var>chunkLength</var> = 2, then<ol><li>If <var>throwOnExtraBits</var> is <emu-val>true</emu-val> and <var>bytes</var>[1] ≠ 0, throw a <emu-val>SyntaxError</emu-val> exception.</li><li>Return « <var>bytes</var>[0] ».</li></ol></li><li>If <var>throwOnExtraBits</var> is <emu-val>true</emu-val> and <var>bytes</var>[2] ≠ 0, throw a <emu-val>SyntaxError</emu-val> exception.</li><li>Return « <var>bytes</var>[0], <var>bytes</var>[1] ».</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-decodefulllengthbase64chunk" type="abstract operation" aoid="DecodeFullLengthBase64Chunk">
|
||
<h1><span class="secnum">23.3.3.6</span> DecodeFullLengthBase64Chunk ( <var>chunk</var> )</h1>
|
||
<p>The abstract operation DecodeFullLengthBase64Chunk takes argument <var>chunk</var> (a String of length 4) and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14065"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-data-blocks" id="_ref_14066"><a href="ecmascript-data-types-and-values.html#sec-data-blocks">byte values</a></emu-xref> of length 3.</p>
|
||
<p>The <dfn id="standard-base64-alphabet" tabindex="-1">standard base64 alphabet</dfn> is <emu-val>"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"</emu-val>, i.e., the String whose elements are the code units corresponding to every letter and number in the Unicode Basic Latin block along with <emu-val>"+"</emu-val> and <emu-val>"/"</emu-val>.</p>
|
||
<emu-alg><ol><li>Let <var>byteSequence</var> be the unique sequence of 3 bytes resulting from decoding <var>chunk</var> as base64 (i.e., the sequence such that applying the base64 encoding specified in section 4 of <a href="https://datatracker.ietf.org/doc/html/rfc4648">RFC 4648</a> to <var>byteSequence</var> would produce <var>chunk</var>).</li><li>Return a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14067"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> whose elements are the elements of <var>byteSequence</var>, in order.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-frombase64" type="abstract operation" aoid="FromBase64">
|
||
<h1><span class="secnum">23.3.3.7</span> FromBase64 ( <var>string</var>, <var>alphabet</var>, <var>lastChunkHandling</var> [ , <var>maxLength</var> ] )</h1>
|
||
<p>The abstract operation FromBase64 takes arguments <var>string</var> (a String), <var>alphabet</var> (<emu-val>"base64"</emu-val> or <emu-val>"base64url"</emu-val>), and <var>lastChunkHandling</var> (<emu-val>"loose"</emu-val>, <emu-val>"strict"</emu-val>, or <emu-val>"stop-before-partial"</emu-val>) and optional argument <var>maxLength</var> (a non-negative <emu-xref href="#integer" id="_ref_14068"><a href="notational-conventions.html#integer">integer</a></emu-xref>) and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14069"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> with fields <var class="field">[[Read]]</var> (an <emu-xref href="#integer" id="_ref_14070"><a href="notational-conventions.html#integer">integer</a></emu-xref>), <var class="field">[[Bytes]]</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14071"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-data-blocks" id="_ref_14072"><a href="ecmascript-data-types-and-values.html#sec-data-blocks">byte values</a></emu-xref>), and <var class="field">[[Error]]</var> (a <emu-val>SyntaxError</emu-val> object or <emu-const>none</emu-const>). It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>If <var>maxLength</var> is not present, then<ol><li>Set <var>maxLength</var> to 2<sup>53</sup> - 1.</li><li>NOTE: Because the input <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_14073"><a href="ecmascript-data-types-and-values.html#sec-ecmascript-language-types-string-type">is a String</a></emu-xref>, the length of Strings is limited to 2<sup>53</sup> - 1 characters, and the output requires no more bytes than the input has characters, this limit can never be reached. However, it is editorially convenient to use a <emu-xref href="#finite" id="_ref_14074"><a href="ecmascript-data-types-and-values.html#finite">finite</a></emu-xref> value for <var>maxLength</var>.</li></ol></li><li>NOTE: The order of validation and decoding in the algorithm below is not observable. Implementations are encouraged to perform them in whatever order is most efficient, possibly interleaving validation with decoding.</li><li>If <var>maxLength</var> = 0, then<ol><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14075"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: 0, <var class="field">[[Bytes]]</var>: « », <var class="field">[[Error]]</var>: <emu-const>none</emu-const> }.</li></ol></li><li>Let <var>read</var> be 0.</li><li>Let <var>bytes</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14076"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>chunk</var> be the empty String.</li><li>Let <var>chunkLength</var> be 0.</li><li>Let <var>index</var> be 0.</li><li>Let <var>length</var> be the length of <var>string</var>.</li><li>Repeat,<ol><li>Set <var>index</var> to <emu-xref aoid="SkipAsciiWhitespace" id="_ref_14077"><a href="indexed-collections.html#sec-skipasciiwhitespace">SkipAsciiWhitespace</a></emu-xref>(<var>string</var>, <var>index</var>).</li><li>If <var>index</var> = <var>length</var>, then<ol><li>If <var>chunkLength</var> > 0, then<ol><li>If <var>lastChunkHandling</var> is <emu-val>"stop-before-partial"</emu-val>, then<ol><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14078"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <emu-const>none</emu-const> }.</li></ol></li><li>If <var>lastChunkHandling</var> is <emu-val>"strict"</emu-val>, then<ol><li>Let <var>error</var> be a newly created <emu-val>SyntaxError</emu-val> object.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14079"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <var>error</var> }.</li></ol></li><li><emu-xref href="#assert" id="_ref_14080"><a href="notational-conventions.html#assert">Assert</a></emu-xref>: <var>lastChunkHandling</var> is <emu-val>"loose"</emu-val>.</li><li>If <var>chunkLength</var> = 1, then<ol><li>Let <var>error</var> be a newly created <emu-val>SyntaxError</emu-val> object.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14081"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <var>error</var> }.</li></ol></li><li>Set <var>bytes</var> to the <emu-xref href="#list-concatenation" id="_ref_14082"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>bytes</var> and ! <emu-xref aoid="DecodeFinalBase64Chunk" id="_ref_14083"><a href="indexed-collections.html#sec-decodefinalbase64chunk">DecodeFinalBase64Chunk</a></emu-xref>(<var>chunk</var>, <emu-val>false</emu-val>).</li></ol></li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14084"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>length</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <emu-const>none</emu-const> }.</li></ol></li><li>Let <var>char</var> be the <emu-xref href="#substring" id="_ref_14085"><a href="ecmascript-data-types-and-values.html#substring">substring</a></emu-xref> of <var>string</var> from <var>index</var> to <var>index</var> + 1.</li><li>Set <var>index</var> to <var>index</var> + 1.</li><li>If <var>char</var> is <emu-val>"="</emu-val>, then<ol><li>If <var>chunkLength</var> < 2, then<ol><li>Let <var>error</var> be a newly created <emu-val>SyntaxError</emu-val> object.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14086"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <var>error</var> }.</li></ol></li><li>Set <var>index</var> to <emu-xref aoid="SkipAsciiWhitespace" id="_ref_14087"><a href="indexed-collections.html#sec-skipasciiwhitespace">SkipAsciiWhitespace</a></emu-xref>(<var>string</var>, <var>index</var>).</li><li>If <var>chunkLength</var> = 2, then<ol><li>If <var>index</var> = <var>length</var>, then<ol><li>If <var>lastChunkHandling</var> is <emu-val>"stop-before-partial"</emu-val>, then<ol><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14088"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <emu-const>none</emu-const> }.</li></ol></li><li>Let <var>error</var> be a newly created <emu-val>SyntaxError</emu-val> object.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14089"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <var>error</var> }.</li></ol></li><li>Set <var>char</var> to the <emu-xref href="#substring" id="_ref_14090"><a href="ecmascript-data-types-and-values.html#substring">substring</a></emu-xref> of <var>string</var> from <var>index</var> to <var>index</var> + 1.</li><li>If <var>char</var> is <emu-val>"="</emu-val>, then<ol><li>Set <var>index</var> to <emu-xref aoid="SkipAsciiWhitespace" id="_ref_14091"><a href="indexed-collections.html#sec-skipasciiwhitespace">SkipAsciiWhitespace</a></emu-xref>(<var>string</var>, <var>index</var> + 1).</li></ol></li></ol></li><li>If <var>index</var> < <var>length</var>, then<ol><li>Let <var>error</var> be a newly created <emu-val>SyntaxError</emu-val> object.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14092"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <var>error</var> }.</li></ol></li><li>If <var>lastChunkHandling</var> is <emu-val>"strict"</emu-val>, let <var>throwOnExtraBits</var> be <emu-val>true</emu-val>; else let <var>throwOnExtraBits</var> be <emu-val>false</emu-val>.</li><li>Let <var>decodeResult</var> be <emu-xref aoid="Completion" id="_ref_14093"><a href="notational-conventions.html#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="DecodeFinalBase64Chunk" id="_ref_14094"><a href="indexed-collections.html#sec-decodefinalbase64chunk">DecodeFinalBase64Chunk</a></emu-xref>(<var>chunk</var>, <var>throwOnExtraBits</var>)).</li><li>If <var>decodeResult</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_14095"><a href="ecmascript-data-types-and-values.html#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, then<ol><li>Let <var>error</var> be <var>decodeResult</var>.<var class="field">[[Value]]</var>.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14096"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <var>error</var> }.</li></ol></li><li>Set <var>bytes</var> to the <emu-xref href="#list-concatenation" id="_ref_14097"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>bytes</var> and ! <var>decodeResult</var>.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14098"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>length</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <emu-const>none</emu-const> }.</li></ol></li><li>If <var>alphabet</var> is <emu-val>"base64url"</emu-val>, then<ol><li>If <var>char</var> is either <emu-val>"+"</emu-val> or <emu-val>"/"</emu-val>, then<ol><li>Let <var>error</var> be a newly created <emu-val>SyntaxError</emu-val> object.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14099"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <var>error</var> }.</li></ol></li><li>Else if <var>char</var> is <emu-val>"-"</emu-val>, then<ol><li>Set <var>char</var> to <emu-val>"+"</emu-val>.</li></ol></li><li>Else if <var>char</var> is <emu-val>"_"</emu-val>, then<ol><li>Set <var>char</var> to <emu-val>"/"</emu-val>.</li></ol></li></ol></li><li>If the sole code unit of <var>char</var> is not an element of the <emu-xref href="#standard-base64-alphabet" id="_ref_14100"><a href="indexed-collections.html#standard-base64-alphabet">standard base64 alphabet</a></emu-xref>, then<ol><li>Let <var>error</var> be a newly created <emu-val>SyntaxError</emu-val> object.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14101"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <var>error</var> }.</li></ol></li><li>Let <var>remaining</var> be <var>maxLength</var> - the number of elements in <var>bytes</var>.</li><li>If <var>remaining</var> = 1 and <var>chunkLength</var> = 2, or if <var>remaining</var> = 2 and <var>chunkLength</var> = 3, then<ol><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14102"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <emu-const>none</emu-const> }.</li></ol></li><li>Set <var>chunk</var> to the <emu-xref href="#string-concatenation" id="_ref_14103"><a href="ecmascript-data-types-and-values.html#string-concatenation">string-concatenation</a></emu-xref> of <var>chunk</var> and <var>char</var>.</li><li>Set <var>chunkLength</var> to the length of <var>chunk</var>.</li><li>If <var>chunkLength</var> = 4, then<ol><li>Set <var>bytes</var> to the <emu-xref href="#list-concatenation" id="_ref_14104"><a href="ecmascript-data-types-and-values.html#list-concatenation">list-concatenation</a></emu-xref> of <var>bytes</var> and <emu-xref aoid="DecodeFullLengthBase64Chunk" id="_ref_14105"><a href="indexed-collections.html#sec-decodefulllengthbase64chunk">DecodeFullLengthBase64Chunk</a></emu-xref>(<var>chunk</var>).</li><li>Set <var>chunk</var> to the empty String.</li><li>Set <var>chunkLength</var> to 0.</li><li>Set <var>read</var> to <var>index</var>.</li><li>If the number of elements in <var>bytes</var> = <var>maxLength</var>, then<ol><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14106"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <emu-const>none</emu-const> }.</li></ol></li></ol></li></ol></li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-fromhex" type="abstract operation" aoid="FromHex">
|
||
<h1><span class="secnum">23.3.3.8</span> FromHex ( <var>string</var> [ , <var>maxLength</var> ] )</h1>
|
||
<p>The abstract operation FromHex takes argument <var>string</var> (a String) and optional argument <var>maxLength</var> (a non-negative <emu-xref href="#integer" id="_ref_14107"><a href="notational-conventions.html#integer">integer</a></emu-xref>) and returns a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14108"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> with fields <var class="field">[[Read]]</var> (an <emu-xref href="#integer" id="_ref_14109"><a href="notational-conventions.html#integer">integer</a></emu-xref>), <var class="field">[[Bytes]]</var> (a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14110"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-data-blocks" id="_ref_14111"><a href="ecmascript-data-types-and-values.html#sec-data-blocks">byte values</a></emu-xref>), and <var class="field">[[Error]]</var> (a <emu-val>SyntaxError</emu-val> object or <emu-const>none</emu-const>). It performs the following steps when called:</p>
|
||
<emu-alg><ol><li>If <var>maxLength</var> is not present, set <var>maxLength</var> to 2<sup>53</sup> - 1.</li><li>Let <var>length</var> be the length of <var>string</var>.</li><li>Let <var>bytes</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14112"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>read</var> be 0.</li><li>If <var>length</var> <emu-xref aoid="modulo" id="_ref_14113"><a href="notational-conventions.html#eqn-modulo">modulo</a></emu-xref> 2 ≠ 0, then<ol><li>Let <var>error</var> be a newly created <emu-val>SyntaxError</emu-val> object.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14114"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <var>error</var> }.</li></ol></li><li>Repeat, while <var>read</var> < <var>length</var> and the number of elements in <var>bytes</var> < <var>maxLength</var>,<ol><li>Let <var>hexits</var> be the <emu-xref href="#substring" id="_ref_14115"><a href="ecmascript-data-types-and-values.html#substring">substring</a></emu-xref> of <var>string</var> from <var>read</var> to <var>read</var> + 2.</li><li>If <var>hexits</var> contains any code units which are not in <emu-val>"0123456789abcdefABCDEF"</emu-val>, then<ol><li>Let <var>error</var> be a newly created <emu-val>SyntaxError</emu-val> object.</li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14116"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <var>error</var> }.</li></ol></li><li>Set <var>read</var> to <var>read</var> + 2.</li><li>Let <var>byte</var> be the <emu-xref href="#integer" id="_ref_14117"><a href="notational-conventions.html#integer">integer</a></emu-xref> value represented by <var>hexits</var> in base-16 notation, using the letters <emu-val>A</emu-val> through <emu-val>F</emu-val> and <emu-val>a</emu-val> through <emu-val>f</emu-val> for digits with values 10 through 15.</li><li>Append <var>byte</var> to <var>bytes</var>.</li></ol></li><li>Return the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_14118"><a href="ecmascript-data-types-and-values.html#sec-list-and-record-specification-type">Record</a></emu-xref> { <var class="field">[[Read]]</var>: <var>read</var>, <var class="field">[[Bytes]]</var>: <var>bytes</var>, <var class="field">[[Error]]</var>: <emu-const>none</emu-const> }.</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause></div></body> |