41603 lines
6 MiB
41603 lines
6 MiB
<!DOCTYPE html><html><head><meta charset="utf-8">
|
||
<link rel="icon" href="img/favicon.ico">
|
||
<link href="ecmarkup.css" rel="stylesheet">
|
||
<script src="ecmarkup.js"></script>
|
||
<style>
|
||
/* custom styles */
|
||
#metadata-block {
|
||
margin: 4em 0;
|
||
padding: 10px;
|
||
border: 1px solid #ee8421;
|
||
}
|
||
|
||
#metadata-block h1 {
|
||
font-size: 1.5em;
|
||
margin-top: 0;
|
||
}
|
||
#metadata-block > ul {
|
||
list-style-type: none;
|
||
margin: 0; padding: 0;
|
||
}
|
||
#ecma-logo {
|
||
width: 500px;
|
||
}
|
||
.unicode-property-table {
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
font-size: 80%;
|
||
}
|
||
.unicode-property-table ul {
|
||
padding-left: 0;
|
||
list-style: none;
|
||
}
|
||
</style>
|
||
<script>
|
||
if (location.hostname === 'tc39.github.io' && location.protocol !== 'https:') {
|
||
location.protocol = 'https:';
|
||
}
|
||
</script>
|
||
|
||
<script type="text/javascript">
|
||
var _gaq = _gaq || [];
|
||
_gaq.push(['_setAccount', 'UA-32577963-1']);
|
||
_gaq.push(['_trackPageview', '/view/ST-262 10th edition']);
|
||
|
||
(function() {
|
||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||
})();
|
||
</script>
|
||
|
||
<title>ECMAScript® 2019 Language Specification</title><script type="application/json" id="menu-search-biblio">[{"type":"clause","id":"sec-intro","aoid":null,"title":"Introduction","titleHTML":"Introduction","number":"","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Introduction"},{"type":"clause","id":"sec-scope","aoid":null,"title":"Scope","titleHTML":"Scope","number":"1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Scope"},{"type":"clause","id":"sec-conformance","aoid":null,"title":"Conformance","titleHTML":"Conformance","number":"2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Conformance"},{"type":"clause","id":"sec-normative-references","aoid":null,"title":"Normative References","titleHTML":"Normative References","number":"3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Normative References"},{"type":"clause","id":"sec-web-scripting","aoid":null,"title":"Web Scripting","titleHTML":"Web Scripting","number":"4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Web Scripting"},{"type":"figure","id":"figure-1","number":1,"caption":"Figure 1: Object/Prototype Relationships","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Figure 1: Object/Prototype Relationships"},{"type":"clause","id":"sec-objects","aoid":null,"title":"Objects","titleHTML":"Objects","number":"4.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Objects"},{"type":"clause","id":"sec-strict-variant-of-ecmascript","aoid":null,"title":"The Strict Variant of ECMAScript","titleHTML":"The Strict Variant of ECMAScript","number":"4.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Strict Variant of ECMAScript"},{"type":"clause","id":"sec-ecmascript-overview","aoid":null,"title":"ECMAScript Overview","titleHTML":"ECMAScript Overview","number":"4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ECMAScript Overview"},{"type":"clause","id":"sec-type","aoid":null,"title":"type","titleHTML":"type","number":"4.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"type"},{"type":"clause","id":"sec-primitive-value","aoid":null,"title":"primitive value","titleHTML":"primitive value","number":"4.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"primitive value"},{"type":"clause","id":"sec-terms-and-definitions-object","aoid":null,"title":"object","titleHTML":"object","number":"4.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"object"},{"type":"clause","id":"sec-constructor","aoid":null,"title":"constructor","titleHTML":"constructor","number":"4.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"constructor"},{"type":"clause","id":"sec-terms-and-definitions-prototype","aoid":null,"title":"prototype","titleHTML":"prototype","number":"4.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"prototype"},{"type":"clause","id":"sec-ordinary-object","aoid":null,"title":"ordinary object","titleHTML":"ordinary object","number":"4.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ordinary object"},{"type":"clause","id":"sec-exotic-object","aoid":null,"title":"exotic object","titleHTML":"exotic object","number":"4.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"exotic object"},{"type":"clause","id":"sec-standard-object","aoid":null,"title":"standard object","titleHTML":"standard object","number":"4.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"standard object"},{"type":"clause","id":"sec-built-in-object","aoid":null,"title":"built-in object","titleHTML":"built-in object","number":"4.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"built-in object"},{"type":"clause","id":"sec-undefined-value","aoid":null,"title":"undefined value","titleHTML":"undefined value","number":"4.3.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"undefined value"},{"type":"clause","id":"sec-terms-and-definitions-undefined-type","aoid":null,"title":"Undefined type","titleHTML":"Undefined type","number":"4.3.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Undefined type"},{"type":"clause","id":"sec-null-value","aoid":null,"title":"null value","titleHTML":"null value","number":"4.3.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"null value"},{"type":"clause","id":"sec-terms-and-definitions-null-type","aoid":null,"title":"Null type","titleHTML":"Null type","number":"4.3.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Null type"},{"type":"clause","id":"sec-terms-and-definitions-boolean-value","aoid":null,"title":"Boolean value","titleHTML":"Boolean value","number":"4.3.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Boolean value"},{"type":"clause","id":"sec-terms-and-definitions-boolean-type","aoid":null,"title":"Boolean type","titleHTML":"Boolean type","number":"4.3.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Boolean type"},{"type":"clause","id":"sec-boolean-object","aoid":null,"title":"Boolean object","titleHTML":"Boolean object","number":"4.3.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Boolean object"},{"type":"clause","id":"sec-terms-and-definitions-string-value","aoid":null,"title":"String value","titleHTML":"String value","number":"4.3.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String value"},{"type":"clause","id":"sec-terms-and-definitions-string-type","aoid":null,"title":"String type","titleHTML":"String type","number":"4.3.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String type"},{"type":"clause","id":"sec-string-object","aoid":null,"title":"String object","titleHTML":"String object","number":"4.3.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String object"},{"type":"clause","id":"sec-terms-and-definitions-number-value","aoid":null,"title":"Number value","titleHTML":"Number value","number":"4.3.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number value"},{"type":"clause","id":"sec-terms-and-definitions-number-type","aoid":null,"title":"Number type","titleHTML":"Number type","number":"4.3.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number type"},{"type":"clause","id":"sec-number-object","aoid":null,"title":"Number object","titleHTML":"Number object","number":"4.3.22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number object"},{"type":"clause","id":"sec-terms-and-definitions-infinity","aoid":null,"title":"Infinity","titleHTML":"Infinity","number":"4.3.23","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Infinity"},{"type":"clause","id":"sec-terms-and-definitions-nan","aoid":null,"title":"NaN","titleHTML":"NaN","number":"4.3.24","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"NaN"},{"type":"clause","id":"sec-symbol-value","aoid":null,"title":"Symbol value","titleHTML":"Symbol value","number":"4.3.25","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol value"},{"type":"clause","id":"sec-terms-and-definitions-symbol-type","aoid":null,"title":"Symbol type","titleHTML":"Symbol type","number":"4.3.26","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol type"},{"type":"clause","id":"sec-symbol-object","aoid":null,"title":"Symbol object","titleHTML":"Symbol object","number":"4.3.27","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol object"},{"type":"clause","id":"sec-terms-and-definitions-function","aoid":null,"title":"function","titleHTML":"function","number":"4.3.28","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"function"},{"type":"clause","id":"sec-built-in-function","aoid":null,"title":"built-in function","titleHTML":"built-in function","number":"4.3.29","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"built-in function"},{"type":"clause","id":"sec-property","aoid":null,"title":"property","titleHTML":"property","number":"4.3.30","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"property"},{"type":"clause","id":"sec-method","aoid":null,"title":"method","titleHTML":"method","number":"4.3.31","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"method"},{"type":"clause","id":"sec-built-in-method","aoid":null,"title":"built-in method","titleHTML":"built-in method","number":"4.3.32","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"built-in method"},{"type":"clause","id":"sec-attribute","aoid":null,"title":"attribute","titleHTML":"attribute","number":"4.3.33","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"attribute"},{"type":"clause","id":"sec-own-property","aoid":null,"title":"own property","titleHTML":"own property","number":"4.3.34","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"own property"},{"type":"clause","id":"sec-inherited-property","aoid":null,"title":"inherited property","titleHTML":"inherited property","number":"4.3.35","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"inherited property"},{"type":"clause","id":"sec-terms-and-definitions","aoid":null,"title":"Terms and Definitions","titleHTML":"Terms and Definitions","number":"4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Terms and Definitions"},{"type":"clause","id":"sec-organization-of-this-specification","aoid":null,"title":"Organization of This Specification","titleHTML":"Organization of This Specification","number":"4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Organization of This Specification"},{"type":"clause","id":"sec-overview","aoid":null,"title":"Overview","titleHTML":"Overview","number":"4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Overview"},{"type":"term","term":"chain production","refId":"sec-context-free-grammars","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"chain production"},{"type":"term","term":"goal symbol","refId":"sec-context-free-grammars","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"goal symbol"},{"type":"clause","id":"sec-context-free-grammars","aoid":null,"title":"Context-Free Grammars","titleHTML":"Context-Free Grammars","number":"5.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_885","_ref_886","_ref_887","_ref_889","_ref_3113","_ref_3114","_ref_3133","_ref_3137","_ref_3218","_ref_4271","_ref_4272","_ref_4294","_ref_4296","_ref_4394","_ref_4397","_ref_4552","_ref_4558","_ref_4577","_ref_4766","_ref_4805","_ref_5010","_ref_5011","_ref_6101","_ref_6102","_ref_6104","_ref_8632","_ref_8633","_ref_8636","_ref_8637"],"key":"Context-Free Grammars"},{"type":"clause","id":"sec-lexical-and-regexp-grammars","aoid":null,"title":"The Lexical and RegExp Grammars","titleHTML":"The Lexical and RegExp Grammars","number":"5.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_12"],"key":"The Lexical and RegExp Grammars"},{"type":"clause","id":"sec-numeric-string-grammar","aoid":null,"title":"The Numeric String Grammar","titleHTML":"The Numeric String Grammar","number":"5.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Numeric String Grammar"},{"type":"term","term":"Parse Node","refId":"sec-syntactic-grammar","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Parse Node"},{"type":"term","term":"the same Parse Node","refId":"sec-syntactic-grammar","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"the same Parse Node"},{"type":"term","term":"covering","refId":"sec-syntactic-grammar","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"covering"},{"type":"term","term":"covered","refId":"sec-syntactic-grammar","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"covered"},{"type":"clause","id":"sec-syntactic-grammar","aoid":null,"title":"The Syntactic Grammar","titleHTML":"The Syntactic Grammar","number":"5.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_931","_ref_2073","_ref_2076","_ref_2077","_ref_2415","_ref_2416","_ref_2491","_ref_2492","_ref_2496","_ref_2497","_ref_2502","_ref_2503","_ref_2508","_ref_2509","_ref_2514","_ref_2515","_ref_2591","_ref_2795","_ref_3158","_ref_3236","_ref_3238","_ref_3266","_ref_3271","_ref_3307","_ref_3521","_ref_3529","_ref_3538","_ref_3598","_ref_3612","_ref_3618","_ref_3660","_ref_3817","_ref_3818","_ref_3858","_ref_4062","_ref_4064","_ref_4334","_ref_4335","_ref_4364","_ref_4367","_ref_4368","_ref_4393","_ref_4431","_ref_4557","_ref_4853","_ref_5402"],"key":"The Syntactic Grammar"},{"type":"clause","id":"sec-grammar-notation","aoid":null,"title":"Grammar Notation","titleHTML":"Grammar Notation","number":"5.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Grammar Notation"},{"type":"clause","id":"sec-syntactic-and-lexical-grammars","aoid":null,"title":"Syntactic and Lexical Grammars","titleHTML":"Syntactic and Lexical Grammars","number":"5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Syntactic and Lexical Grammars"},{"type":"term","term":"Assert","refId":"sec-algorithm-conventions","referencingIds":["_ref_901","_ref_927","_ref_1244","_ref_1258","_ref_1266","_ref_1273","_ref_1276","_ref_1279","_ref_1282","_ref_1286","_ref_1290","_ref_1293","_ref_1303","_ref_1322","_ref_1330","_ref_1336","_ref_1339","_ref_1342","_ref_1354","_ref_1361","_ref_1383","_ref_1398","_ref_1401","_ref_1408","_ref_1411","_ref_1412","_ref_1413","_ref_1424","_ref_1431","_ref_1438","_ref_1440","_ref_1509","_ref_1529","_ref_1541","_ref_1543","_ref_1556","_ref_1558","_ref_1600","_ref_1602","_ref_1605","_ref_1608","_ref_1610","_ref_1612","_ref_1614","_ref_1616","_ref_1618","_ref_1620","_ref_1622","_ref_1624","_ref_1628","_ref_1630","_ref_1632","_ref_1634","_ref_1638","_ref_1642","_ref_1644","_ref_1646","_ref_1648","_ref_1660","_ref_1662","_ref_1664","_ref_1666","_ref_1670","_ref_1672","_ref_1676","_ref_1681","_ref_1694","_ref_1709","_ref_1715","_ref_1721","_ref_1724","_ref_1731","_ref_1733","_ref_1741","_ref_1754","_ref_1758","_ref_1763","_ref_1765","_ref_1774","_ref_1776","_ref_1786","_ref_1797","_ref_1799","_ref_1836","_ref_1841","_ref_1845","_ref_1851","_ref_1855","_ref_1858","_ref_1880","_ref_1903","_ref_1907","_ref_1909","_ref_1956","_ref_2009","_ref_2011","_ref_2015","_ref_2024","_ref_2025","_ref_2027","_ref_2043","_ref_2044","_ref_2094","_ref_2143","_ref_2151","_ref_2157","_ref_2182","_ref_2184","_ref_2185","_ref_2212","_ref_2309","_ref_2317","_ref_2328","_ref_2330","_ref_2352","_ref_2357","_ref_2360","_ref_2366","_ref_2371","_ref_2377","_ref_2381","_ref_2393","_ref_2398","_ref_2399","_ref_2426","_ref_2430","_ref_2442","_ref_2454","_ref_2459","_ref_2461","_ref_2467","_ref_2469","_ref_2474","_ref_2485","_ref_2487","_ref_2522","_ref_2530","_ref_2532","_ref_2534","_ref_2540","_ref_2542","_ref_2544","_ref_2546","_ref_2549","_ref_2550","_ref_2552","_ref_2558","_ref_2559","_ref_2561","_ref_2575","_ref_2618","_ref_2620","_ref_2635","_ref_2639","_ref_2658","_ref_2663","_ref_2668","_ref_2670","_ref_2675","_ref_2702","_ref_2713","_ref_2719","_ref_2726","_ref_2734","_ref_2738","_ref_2739","_ref_2744","_ref_2769","_ref_2780","_ref_2798","_ref_2824","_ref_2826","_ref_2832","_ref_2834","_ref_2842","_ref_2844","_ref_2853","_ref_2861","_ref_2869","_ref_2875","_ref_2876","_ref_2878","_ref_2882","_ref_2884","_ref_2914","_ref_2918","_ref_2920","_ref_2926","_ref_2932","_ref_2934","_ref_2935","_ref_2941","_ref_2949","_ref_2957","_ref_2960","_ref_2968","_ref_2975","_ref_2981","_ref_2983","_ref_2995","_ref_2997","_ref_3007","_ref_3009","_ref_3017","_ref_3019","_ref_3030","_ref_3032","_ref_3043","_ref_3045","_ref_3051","_ref_3057","_ref_3059","_ref_3070","_ref_3079","_ref_3081","_ref_3095","_ref_3098","_ref_3146","_ref_3164","_ref_3170","_ref_3179","_ref_3209","_ref_3210","_ref_3215","_ref_3216","_ref_3233","_ref_3240","_ref_3267","_ref_3284","_ref_3285","_ref_3321","_ref_3322","_ref_3335","_ref_3342","_ref_3344","_ref_3348","_ref_3394","_ref_3550","_ref_3560","_ref_3610","_ref_3663","_ref_3743","_ref_3753","_ref_3813","_ref_3823","_ref_3845","_ref_3854","_ref_3857","_ref_3865","_ref_3866","_ref_3869","_ref_3874","_ref_3875","_ref_3876","_ref_3880","_ref_3886","_ref_3891","_ref_3958","_ref_4027","_ref_4028","_ref_4033","_ref_4034","_ref_4070","_ref_4191","_ref_4274","_ref_4340","_ref_4363","_ref_4376","_ref_4396","_ref_4413","_ref_4422","_ref_4426","_ref_4436","_ref_4488","_ref_4492","_ref_4493","_ref_4494","_ref_4495","_ref_4498","_ref_4501","_ref_4502","_ref_4503","_ref_4507","_ref_4508","_ref_4514","_ref_4518","_ref_4519","_ref_4520","_ref_4521","_ref_4525","_ref_4528","_ref_4529","_ref_4530","_ref_4534","_ref_4535","_ref_4576","_ref_4587","_ref_4593","_ref_4597","_ref_4599","_ref_4612","_ref_4616","_ref_4620","_ref_4623","_ref_4626","_ref_4628","_ref_4635","_ref_4637","_ref_4638","_ref_4650","_ref_4652","_ref_4670","_ref_4672","_ref_4677","_ref_4683","_ref_4794","_ref_4801","_ref_4840","_ref_4846","_ref_4855","_ref_4858","_ref_4926","_ref_4929","_ref_4931","_ref_4999","_ref_5005","_ref_5091","_ref_5104","_ref_5114","_ref_5119","_ref_5126","_ref_5128","_ref_5196","_ref_5203","_ref_5210","_ref_5220","_ref_5411","_ref_5429","_ref_5436","_ref_5443","_ref_5701","_ref_5703","_ref_5708","_ref_5710","_ref_5716","_ref_5718","_ref_5726","_ref_5794","_ref_5824","_ref_5831","_ref_5838","_ref_5879","_ref_5881","_ref_5883","_ref_5884","_ref_5885","_ref_5887","_ref_5923","_ref_5930","_ref_5952","_ref_5960","_ref_5998","_ref_6003","_ref_6004","_ref_6015","_ref_6021","_ref_6023","_ref_6024","_ref_6029","_ref_6032","_ref_6033","_ref_6036","_ref_6050","_ref_6055","_ref_6059","_ref_6063","_ref_6071","_ref_6078","_ref_6081","_ref_6082","_ref_6124","_ref_6126","_ref_6133","_ref_6134","_ref_6141","_ref_6144","_ref_6146","_ref_6153","_ref_6156","_ref_6161","_ref_6163","_ref_6164","_ref_6206","_ref_6267","_ref_6324","_ref_6329","_ref_6335","_ref_6339","_ref_6346","_ref_6347","_ref_6493","_ref_6520","_ref_6531","_ref_6779","_ref_6787","_ref_6801","_ref_6838","_ref_6869","_ref_6873","_ref_6878","_ref_6898","_ref_6954","_ref_6974","_ref_6977","_ref_6988","_ref_6990","_ref_7036","_ref_7043","_ref_7065","_ref_7074","_ref_7084","_ref_7086","_ref_7087","_ref_7088","_ref_7091","_ref_7107","_ref_7117","_ref_7125","_ref_7140","_ref_7157","_ref_7224","_ref_7227","_ref_7288","_ref_7362","_ref_7364","_ref_7366","_ref_7368","_ref_7374","_ref_7376","_ref_7382","_ref_7384","_ref_7385","_ref_7402","_ref_7404","_ref_7405","_ref_7406","_ref_7417","_ref_7419","_ref_7420","_ref_7421","_ref_7473","_ref_7475","_ref_7478","_ref_7511","_ref_7517","_ref_7539","_ref_7542","_ref_7546","_ref_7573","_ref_7575","_ref_7577","_ref_7584","_ref_7586","_ref_7587","_ref_7590","_ref_7596","_ref_7600","_ref_7602","_ref_7606","_ref_7608","_ref_7610","_ref_7616","_ref_7618","_ref_7620","_ref_7621","_ref_7631","_ref_7633","_ref_7697","_ref_7719","_ref_7724","_ref_7766","_ref_7795","_ref_7922","_ref_7925","_ref_7931","_ref_7936","_ref_7939","_ref_7945","_ref_7953","_ref_7958","_ref_7963","_ref_7965","_ref_7967","_ref_7990","_ref_7991","_ref_7994","_ref_8002","_ref_8003","_ref_8008","_ref_8009","_ref_8013","_ref_8014","_ref_8016","_ref_8023","_ref_8026","_ref_8031","_ref_8033","_ref_8050","_ref_8058","_ref_8060","_ref_8071","_ref_8095","_ref_8098","_ref_8110","_ref_8127","_ref_8130","_ref_8135","_ref_8138","_ref_8141","_ref_8182","_ref_8184","_ref_8215","_ref_8217","_ref_8238","_ref_8254","_ref_8264","_ref_8267","_ref_8275","_ref_8278","_ref_8287","_ref_8289","_ref_8297","_ref_8323","_ref_8330","_ref_8334","_ref_8337","_ref_8386","_ref_8469","_ref_8471","_ref_8482","_ref_8485","_ref_8540","_ref_8731","_ref_8732","_ref_8753","_ref_8767"],"id":"assert","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Assert"},{"type":"term","term":"abstract operations","refId":"sec-algorithm-conventions-abstract-operations","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"abstract operations"},{"type":"clause","id":"sec-algorithm-conventions-abstract-operations","aoid":null,"title":"Abstract Operations","titleHTML":"Abstract Operations","number":"5.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_891","_ref_920","_ref_1272","_ref_1345","_ref_1391","_ref_1397","_ref_1427","_ref_1428","_ref_1429","_ref_2029","_ref_2181","_ref_4112","_ref_4204","_ref_4574","_ref_5247","_ref_5364","_ref_6701","_ref_8391","_ref_8392","_ref_8393","_ref_8410","_ref_8787"],"key":"Abstract Operations"},{"type":"clause","id":"sec-algorithm-conventions-syntax-directed-operations","aoid":null,"title":"Syntax-Directed Operations","titleHTML":"Syntax-Directed Operations","number":"5.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Syntax-Directed Operations"},{"type":"term","term":"runtime semantics","refId":"sec-runtime-semantics","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"runtime semantics"},{"type":"clause","id":"sec-implicit-completion-values","aoid":null,"title":"Implicit Completion Values","titleHTML":"Implicit Completion Values","number":"5.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Implicit Completion Values"},{"type":"clause","id":"sec-throw-an-exception","aoid":null,"title":"Throw an Exception","titleHTML":"Throw an Exception","number":"5.2.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Throw an Exception"},{"type":"op","aoid":"ReturnIfAbrupt","refId":"sec-returnifabrupt","location":"","referencingIds":[],"key":"ReturnIfAbrupt"},{"type":"clause","id":"sec-returnifabrupt","aoid":"ReturnIfAbrupt","title":"ReturnIfAbrupt","titleHTML":"ReturnIfAbrupt","number":"5.2.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_911","_ref_914","_ref_917","_ref_921","_ref_923","_ref_924","_ref_1233","_ref_1296","_ref_1310","_ref_1311","_ref_1334","_ref_1335","_ref_2437","_ref_2484","_ref_3165","_ref_3171","_ref_3186","_ref_3191","_ref_3212","_ref_3232","_ref_3252","_ref_3257","_ref_3259","_ref_3263","_ref_3288","_ref_3316","_ref_3338","_ref_3361","_ref_3363","_ref_3390","_ref_3468","_ref_3472","_ref_3476","_ref_3480","_ref_3524","_ref_3573","_ref_3575","_ref_3582","_ref_3586","_ref_3588","_ref_3591","_ref_3594","_ref_3600","_ref_3604","_ref_3607","_ref_3613","_ref_3655","_ref_3667","_ref_3669","_ref_3682","_ref_3684","_ref_3703","_ref_3716","_ref_3719","_ref_3726","_ref_3729","_ref_3735","_ref_3740","_ref_3747","_ref_3750","_ref_3790","_ref_4073","_ref_4076","_ref_4088","_ref_4095","_ref_4098","_ref_4105","_ref_4132","_ref_4224","_ref_4285","_ref_4288","_ref_4290","_ref_4313","_ref_4343","_ref_4346","_ref_4687","_ref_4740","_ref_8190","_ref_8195","_ref_8221","_ref_8224","_ref_8726"],"key":"ReturnIfAbrupt"},{"type":"clause","id":"sec-returnifabrupt-shorthands","aoid":null,"title":"ReturnIfAbrupt Shorthands","titleHTML":"ReturnIfAbrupt Shorthands","number":"5.2.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ReturnIfAbrupt Shorthands"},{"type":"clause","id":"sec-runtime-semantics","aoid":null,"title":"Runtime Semantics","titleHTML":"Runtime Semantics","number":"5.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_858","_ref_930","_ref_8780"],"key":"Runtime Semantics"},{"type":"term","term":"static semantics","refId":"sec-static-semantic-rules","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"static semantics"},{"type":"term","term":"Early Error Rule","refId":"sec-static-semantic-rules","referencingIds":[],"id":"early-error-rule","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Early Error Rule"},{"type":"clause","id":"sec-static-semantic-rules","aoid":null,"title":"Static Semantics","titleHTML":"Static Semantics","number":"5.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3130","_ref_3672","_ref_3984","_ref_4293","_ref_4828","_ref_4831","_ref_4834","_ref_5012","_ref_8773","_ref_8774","_ref_8775","_ref_8776","_ref_8777","_ref_8778"],"key":"Static Semantics"},{"type":"op","aoid":"abs","id":"eqn-abs","referencingIds":["_ref_937","_ref_938","_ref_1456","_ref_1459","_ref_1464","_ref_1470","_ref_1474","_ref_1479","_ref_1483","_ref_1497","_ref_1499","_ref_1533","_ref_1534","_ref_3426","_ref_3427","_ref_3428","_ref_3429","_ref_3430","_ref_3431","_ref_5185","_ref_5400","_ref_5721","_ref_5723"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"abs"},{"type":"op","aoid":"min","id":"eqn-min","referencingIds":["_ref_1507","_ref_4505","_ref_4532","_ref_5817","_ref_5825","_ref_5832","_ref_5840","_ref_5903","_ref_5905","_ref_5931","_ref_5937","_ref_5939","_ref_5941","_ref_6026","_ref_6066","_ref_6241","_ref_6286","_ref_6420","_ref_6423","_ref_6426","_ref_6427","_ref_6450","_ref_6453","_ref_6553","_ref_6641","_ref_6644","_ref_6708","_ref_6710","_ref_6886","_ref_6889","_ref_6892","_ref_6893","_ref_6910","_ref_6913","_ref_7010","_ref_7013","_ref_7046","_ref_7049","_ref_7458","_ref_7461","_ref_7499","_ref_7502","_ref_7760","_ref_8677"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"min"},{"type":"op","aoid":"max","id":"eqn-max","referencingIds":["_ref_5818","_ref_5826","_ref_5833","_ref_5841","_ref_5902","_ref_5904","_ref_5906","_ref_5932","_ref_5938","_ref_5940","_ref_5942","_ref_6235","_ref_6240","_ref_6292","_ref_6419","_ref_6422","_ref_6425","_ref_6449","_ref_6452","_ref_6640","_ref_6643","_ref_6645","_ref_6707","_ref_6711","_ref_6885","_ref_6888","_ref_6891","_ref_6909","_ref_6912","_ref_7009","_ref_7012","_ref_7014","_ref_7045","_ref_7048","_ref_7050","_ref_7457","_ref_7460","_ref_7462","_ref_7498","_ref_7501","_ref_7503","_ref_7688","_ref_7703","_ref_8676","_ref_8678"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"max"},{"type":"op","aoid":"modulo","id":"eqn-modulo","referencingIds":["_ref_940","_ref_1460","_ref_1465","_ref_1471","_ref_1475","_ref_1480","_ref_1484","_ref_3097","_ref_5242","_ref_5251","_ref_5253","_ref_5254","_ref_5255","_ref_5256","_ref_5257","_ref_5258","_ref_5347","_ref_5367","_ref_5371","_ref_5375","_ref_5377","_ref_5394","_ref_7131","_ref_7134"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"modulo"},{"type":"op","aoid":"floor","id":"eqn-floor","referencingIds":["_ref_939","_ref_1455","_ref_1458","_ref_1463","_ref_1469","_ref_1473","_ref_1478","_ref_1482","_ref_1486","_ref_1532","_ref_3096","_ref_5249","_ref_5259","_ref_5260","_ref_5261","_ref_5365","_ref_5369","_ref_5373","_ref_5393","_ref_6609"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"floor"},{"type":"clause","id":"sec-mathematical-operations","aoid":null,"title":"Mathematical Operations","titleHTML":"Mathematical Operations","number":"5.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Mathematical Operations"},{"type":"clause","id":"sec-algorithm-conventions","aoid":null,"title":"Algorithm Conventions","titleHTML":"Algorithm Conventions","number":"5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Algorithm Conventions"},{"type":"clause","id":"sec-notational-conventions","aoid":null,"title":"Notational Conventions","titleHTML":"Notational Conventions","number":"5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Notational Conventions"},{"type":"term","term":"type","refId":"sec-ecmascript-data-types-and-values","referencingIds":[],"id":"type","namespace":"https://tc39.github.io/ecma262/","location":"","key":"type"},{"type":"term","term":"ECMAScript language type","refId":"sec-ecmascript-language-types","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ECMAScript language type"},{"type":"term","term":"ECMAScript language value","refId":"sec-ecmascript-language-types","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ECMAScript language value"},{"type":"clause","id":"sec-ecmascript-language-types-undefined-type","aoid":null,"title":"The Undefined Type","titleHTML":"The Undefined Type","number":"6.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_407"],"key":"The Undefined Type"},{"type":"clause","id":"sec-ecmascript-language-types-null-type","aoid":null,"title":"The Null Type","titleHTML":"The Null Type","number":"6.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Null Type"},{"type":"clause","id":"sec-ecmascript-language-types-boolean-type","aoid":null,"title":"The Boolean Type","titleHTML":"The Boolean Type","number":"6.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Boolean Type"},{"type":"term","term":"leading surrogate","refId":"sec-ecmascript-language-types-string-type","referencingIds":["_ref_14","_ref_16","_ref_19","_ref_137","_ref_252","_ref_424","_ref_678"],"id":"leading-surrogate","namespace":"https://tc39.github.io/ecma262/","location":"","key":"leading surrogate"},{"type":"term","term":"high-surrogate code unit","refId":"sec-ecmascript-language-types-string-type","referencingIds":[],"id":"high-surrogate-code-unit","namespace":"https://tc39.github.io/ecma262/","location":"","key":"high-surrogate code unit"},{"type":"term","term":"trailing surrogate","refId":"sec-ecmascript-language-types-string-type","referencingIds":["_ref_15","_ref_17","_ref_20","_ref_138","_ref_253","_ref_423","_ref_425","_ref_679"],"id":"trailing-surrogate","namespace":"https://tc39.github.io/ecma262/","location":"","key":"trailing surrogate"},{"type":"term","term":"low-surrogate code unit","refId":"sec-ecmascript-language-types-string-type","referencingIds":[],"id":"low-surrogate-code-unit","namespace":"https://tc39.github.io/ecma262/","location":"","key":"low-surrogate code unit"},{"type":"term","term":"surrogate pair","refId":"sec-ecmascript-language-types-string-type","referencingIds":["_ref_21","_ref_251","_ref_422","_ref_427","_ref_524","_ref_4876"],"id":"surrogate-pair","namespace":"https://tc39.github.io/ecma262/","location":"","key":"surrogate pair"},{"type":"term","term":"string-concatenation","refId":"sec-ecmascript-language-types-string-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"string-concatenation"},{"type":"clause","id":"sec-ecmascript-language-types-string-type","aoid":null,"title":"The String Type","titleHTML":"The String Type","number":"6.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_136","_ref_408","_ref_428","_ref_429","_ref_469","_ref_470","_ref_523","_ref_527","_ref_528","_ref_529","_ref_530","_ref_531","_ref_532","_ref_533","_ref_534","_ref_535","_ref_536","_ref_548","_ref_549","_ref_570","_ref_572","_ref_672","_ref_674","_ref_675","_ref_1491","_ref_1493","_ref_1494","_ref_1495","_ref_1496","_ref_1498","_ref_1545","_ref_2555","_ref_2556","_ref_3258","_ref_3260","_ref_3444","_ref_4866","_ref_4870","_ref_4871","_ref_4875","_ref_4987","_ref_5008","_ref_5025","_ref_5130","_ref_5151","_ref_5204","_ref_5205","_ref_5206","_ref_5207","_ref_5212","_ref_5213","_ref_5214","_ref_5219","_ref_5221","_ref_5222","_ref_5223","_ref_5224","_ref_5225","_ref_5226","_ref_5707","_ref_5715","_ref_5724","_ref_5725","_ref_5729","_ref_5736","_ref_5745","_ref_5810","_ref_5858","_ref_5863","_ref_5878","_ref_5968","_ref_6111","_ref_6251","_ref_6252","_ref_6275","_ref_6311","_ref_6541","_ref_6545","_ref_6740","_ref_6745","_ref_7718","_ref_7789","_ref_7790","_ref_7792","_ref_7794","_ref_7796","_ref_7797","_ref_7802","_ref_7803","_ref_7804","_ref_7805","_ref_7806","_ref_7807","_ref_7808","_ref_7814","_ref_7815","_ref_7816","_ref_8647","_ref_8648","_ref_8649","_ref_8652","_ref_8682","_ref_8684","_ref_8685","_ref_8686","_ref_8687"],"key":"The String Type"},{"type":"table","id":"table-1","number":1,"caption":"Table 1: Well-known Symbols","referencingIds":["_ref_26","_ref_478","_ref_480","_ref_481","_ref_482","_ref_484","_ref_485","_ref_486","_ref_487","_ref_488","_ref_489","_ref_490","_ref_491"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 1: Well-known Symbols"},{"type":"clause","id":"sec-well-known-symbols","aoid":null,"title":"Well-Known Symbols","titleHTML":"Well-Known Symbols","number":"6.1.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Well-Known Symbols"},{"type":"clause","id":"sec-ecmascript-language-types-symbol-type","aoid":null,"title":"The Symbol Type","titleHTML":"The Symbol Type","number":"6.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Symbol Type"},{"type":"clause","id":"sec-ecmascript-language-types-number-type","aoid":null,"title":"The Number Type","titleHTML":"The Number Type","number":"6.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_142","_ref_286","_ref_405","_ref_406","_ref_502","_ref_503"],"key":"The Number Type"},{"type":"term","term":"data property","refId":"sec-object-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"data property"},{"type":"term","term":"accessor property","refId":"sec-object-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"accessor property"},{"type":"term","term":"property name","refId":"sec-object-type","referencingIds":["_ref_2097","_ref_2644","_ref_2651","_ref_3690","_ref_3893","_ref_4787","_ref_4788","_ref_5074","_ref_5978","_ref_5979","_ref_5984","_ref_6039","_ref_6040","_ref_6041","_ref_6042","_ref_6044","_ref_6045","_ref_6046","_ref_6047","_ref_6048","_ref_6053","_ref_6054","_ref_6072","_ref_6073","_ref_6079","_ref_6784","_ref_6785","_ref_7769"],"id":"property-name","namespace":"https://tc39.github.io/ecma262/","location":"","key":"property name"},{"type":"term","term":"integer index","refId":"sec-object-type","referencingIds":["_ref_576","_ref_590","_ref_592","_ref_594","_ref_596","_ref_598","_ref_600","_ref_602","_ref_605","_ref_607","_ref_609","_ref_623","_ref_625","_ref_630","_ref_947","_ref_1514","_ref_2821","_ref_2872","_ref_5918","_ref_5971","_ref_6671","_ref_6702","_ref_6805","_ref_6806","_ref_7232","_ref_7295"],"id":"integer-index","namespace":"https://tc39.github.io/ecma262/","location":"","key":"integer index"},{"type":"term","term":"array index","refId":"sec-object-type","referencingIds":["_ref_577","_ref_680","_ref_786","_ref_2385","_ref_2386","_ref_2643","_ref_2645","_ref_2646","_ref_2647","_ref_2648","_ref_2649","_ref_2650","_ref_2652","_ref_2661","_ref_2729","_ref_2732","_ref_2749","_ref_6780","_ref_6782","_ref_6783","_ref_8609"],"id":"array-index","namespace":"https://tc39.github.io/ecma262/","location":"","key":"array index"},{"type":"term","term":"Ordinary objects","refId":"sec-object-type","referencingIds":[],"id":"ordinary-objects","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Ordinary objects"},{"type":"term","term":"exotic object","refId":"sec-object-type","referencingIds":["_ref_872","_ref_973","_ref_1521","_ref_1522","_ref_1725","_ref_1727","_ref_1730","_ref_2195","_ref_2595","_ref_2625","_ref_2630","_ref_2634","_ref_2642","_ref_2656","_ref_2672","_ref_2696","_ref_2709","_ref_2711","_ref_2712","_ref_2717","_ref_2724","_ref_2736","_ref_2746","_ref_2747","_ref_2748","_ref_2750","_ref_2751","_ref_2757","_ref_2761","_ref_2770","_ref_2775","_ref_2782","_ref_2799","_ref_2820","_ref_2889","_ref_2890","_ref_2891","_ref_2896","_ref_2898","_ref_2899","_ref_2900","_ref_2903","_ref_2909","_ref_2912","_ref_2922","_ref_2923","_ref_2925","_ref_2930","_ref_2938","_ref_2945","_ref_2948","_ref_2956","_ref_2967","_ref_2974","_ref_2980","_ref_2993","_ref_3006","_ref_3015","_ref_3028","_ref_3042","_ref_3050","_ref_3068","_ref_3076","_ref_3077","_ref_3088","_ref_3090","_ref_3092","_ref_4430","_ref_4669","_ref_4852","_ref_4984","_ref_5790","_ref_6318","_ref_6322","_ref_6393","_ref_6395","_ref_6673","_ref_8374","_ref_8387","_ref_8788"],"id":"exotic-object","namespace":"https://tc39.github.io/ecma262/","location":"","key":"exotic object"},{"type":"table","id":"table-2","number":2,"caption":"Table 2: Attributes of a Data Property","referencingIds":["_ref_37","_ref_129"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 2: Attributes of a Data Property"},{"type":"table","id":"table-3","number":3,"caption":"Table 3: Attributes of an Accessor Property","referencingIds":["_ref_39","_ref_130"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 3: Attributes of an Accessor Property"},{"type":"table","id":"table-4","number":4,"caption":"Table 4: Default Attribute Values","referencingIds":["_ref_43"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 4: Default Attribute Values"},{"type":"clause","id":"sec-property-attributes","aoid":null,"title":"Property Attributes","titleHTML":"Property Attributes","number":"6.1.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_128"],"key":"Property Attributes"},{"type":"table","id":"table-5","number":5,"caption":"Table 5: Essential Internal Methods","referencingIds":["_ref_44","_ref_45"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 5: Essential Internal Methods"},{"type":"term","term":"function object","refId":"sec-object-internal-methods-and-internal-slots","referencingIds":["_ref_867","_ref_884","_ref_952","_ref_953","_ref_963","_ref_967","_ref_970","_ref_1179","_ref_1527","_ref_1650","_ref_1651","_ref_1656","_ref_1657","_ref_1796","_ref_1811","_ref_1895","_ref_2110","_ref_2111","_ref_2406","_ref_2407","_ref_2410","_ref_2424","_ref_2427","_ref_2440","_ref_2450","_ref_2463","_ref_2465","_ref_2468","_ref_2488","_ref_2490","_ref_2520","_ref_2527","_ref_2531","_ref_2541","_ref_2545","_ref_2569","_ref_2594","_ref_2596","_ref_2598","_ref_2602","_ref_2603","_ref_2614","_ref_2617","_ref_2623","_ref_2624","_ref_2626","_ref_2627","_ref_2752","_ref_2813","_ref_2817","_ref_3099","_ref_3112","_ref_3345","_ref_4085","_ref_4087","_ref_4759","_ref_4769","_ref_4770","_ref_4773","_ref_4782","_ref_4783","_ref_4784","_ref_4785","_ref_4786","_ref_4789","_ref_4991","_ref_5028","_ref_5032","_ref_5035","_ref_5073","_ref_5187","_ref_5190","_ref_5233","_ref_6766","_ref_6820","_ref_7057","_ref_7060","_ref_7216","_ref_7275","_ref_7280","_ref_7881","_ref_7886","_ref_7891","_ref_7892","_ref_7900","_ref_7904","_ref_7910","_ref_7911","_ref_8077","_ref_8078","_ref_8089","_ref_8166","_ref_8261","_ref_8262","_ref_8272","_ref_8273","_ref_8311","_ref_8316","_ref_8320","_ref_8341","_ref_8700","_ref_8701","_ref_8719","_ref_8720"],"id":"function-object","namespace":"https://tc39.github.io/ecma262/","location":"","key":"function object"},{"type":"term","term":"constructor","refId":"sec-object-internal-methods-and-internal-slots","referencingIds":["_ref_859","_ref_860","_ref_861","_ref_862","_ref_863","_ref_864","_ref_865","_ref_866","_ref_868","_ref_869","_ref_870","_ref_871","_ref_873","_ref_874","_ref_875","_ref_876","_ref_877","_ref_878","_ref_879","_ref_880","_ref_881","_ref_882","_ref_883","_ref_941","_ref_942","_ref_943","_ref_962","_ref_964","_ref_965","_ref_966","_ref_971","_ref_972","_ref_1005","_ref_1007","_ref_1029","_ref_1036","_ref_1042","_ref_1047","_ref_1052","_ref_1061","_ref_1066","_ref_1068","_ref_1070","_ref_1073","_ref_1081","_ref_1085","_ref_1087","_ref_1089","_ref_1101","_ref_1108","_ref_1113","_ref_1126","_ref_1143","_ref_1144","_ref_1146","_ref_1150","_ref_1155","_ref_1161","_ref_1166","_ref_1172","_ref_1176","_ref_1184","_ref_1186","_ref_1188","_ref_1190","_ref_1192","_ref_1194","_ref_1197","_ref_1202","_ref_1699","_ref_1706","_ref_1707","_ref_1708","_ref_2390","_ref_2396","_ref_2397","_ref_2529","_ref_2599","_ref_2600","_ref_2601","_ref_2674","_ref_2690","_ref_3100","_ref_3101","_ref_3102","_ref_3127","_ref_4060","_ref_4752","_ref_4756","_ref_4757","_ref_4758","_ref_4774","_ref_4775","_ref_4776","_ref_4777","_ref_4778","_ref_4779","_ref_4780","_ref_4793","_ref_4885","_ref_4887","_ref_4888","_ref_4893","_ref_4894","_ref_4989","_ref_4992","_ref_4993","_ref_4996","_ref_4997","_ref_5026","_ref_5027","_ref_5033","_ref_5070","_ref_5071","_ref_5076","_ref_5077","_ref_5078","_ref_5080","_ref_5081","_ref_5082","_ref_5085","_ref_5096","_ref_5099","_ref_5133","_ref_5135","_ref_5136","_ref_5141","_ref_5152","_ref_5153","_ref_5154","_ref_5155","_ref_5156","_ref_5161","_ref_5162","_ref_5164","_ref_5166","_ref_5167","_ref_5168","_ref_5169","_ref_5170","_ref_5172","_ref_5173","_ref_5174","_ref_5177","_ref_5234","_ref_5405","_ref_5407","_ref_5408","_ref_5409","_ref_5410","_ref_5428","_ref_5442","_ref_5448","_ref_5469","_ref_5752","_ref_5754","_ref_5755","_ref_5756","_ref_5762","_ref_5959","_ref_5972","_ref_5992","_ref_6084","_ref_6086","_ref_6087","_ref_6112","_ref_6116","_ref_6117","_ref_6316","_ref_6319","_ref_6320","_ref_6321","_ref_6323","_ref_6328","_ref_6338","_ref_6348","_ref_6379","_ref_6388","_ref_6391","_ref_6392","_ref_6786","_ref_6807","_ref_6808","_ref_6809","_ref_6817","_ref_6818","_ref_6819","_ref_6821","_ref_6823","_ref_6825","_ref_6827","_ref_6863","_ref_6864","_ref_7067","_ref_7068","_ref_7069","_ref_7071","_ref_7072","_ref_7077","_ref_7078","_ref_7080","_ref_7081","_ref_7093","_ref_7094","_ref_7109","_ref_7110","_ref_7127","_ref_7128","_ref_7135","_ref_7139","_ref_7143","_ref_7145","_ref_7148","_ref_7150","_ref_7151","_ref_7173","_ref_7177","_ref_7178","_ref_7179","_ref_7217","_ref_7234","_ref_7236","_ref_7237","_ref_7248","_ref_7252","_ref_7253","_ref_7254","_ref_7281","_ref_7296","_ref_7298","_ref_7299","_ref_7304","_ref_7330","_ref_7332","_ref_7333","_ref_7344","_ref_7373","_ref_7434","_ref_7436","_ref_7437","_ref_7440","_ref_7445","_ref_7446","_ref_7480","_ref_7482","_ref_7483","_ref_7486","_ref_7523","_ref_7525","_ref_7526","_ref_7533","_ref_7565","_ref_7568","_ref_7716","_ref_7820","_ref_7875","_ref_7876","_ref_7877","_ref_7880","_ref_7882","_ref_7894","_ref_7895","_ref_7896","_ref_7899","_ref_7901","_ref_8112","_ref_8113","_ref_8114","_ref_8117","_ref_8118","_ref_8123","_ref_8124","_ref_8125","_ref_8154","_ref_8156","_ref_8157","_ref_8167","_ref_8168","_ref_8169","_ref_8180","_ref_8181","_ref_8213","_ref_8214","_ref_8230","_ref_8231","_ref_8232","_ref_8235","_ref_8236","_ref_8237","_ref_8246","_ref_8247","_ref_8260","_ref_8271","_ref_8305","_ref_8306","_ref_8307","_ref_8310","_ref_8312","_ref_8342","_ref_8372","_ref_8375","_ref_8377","_ref_8388","_ref_8607","_ref_8623","_ref_8630","_ref_8631"],"id":"constructor","namespace":"https://tc39.github.io/ecma262/","location":"","key":"constructor"},{"type":"table","id":"table-6","number":6,"caption":"Table 6: Additional Essential Internal Methods of Function Objects","referencingIds":["_ref_40","_ref_41","_ref_47"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 6: Additional Essential Internal Methods of Function Objects"},{"type":"clause","id":"sec-object-internal-methods-and-internal-slots","aoid":null,"title":"Object Internal Methods and Internal Slots","titleHTML":"Object Internal Methods and Internal Slots","number":"6.1.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object Internal Methods and Internal Slots"},{"type":"clause","id":"sec-invariants-of-the-essential-internal-methods","aoid":null,"title":"Invariants of the Essential Internal Methods","titleHTML":"Invariants of the Essential Internal Methods","number":"6.1.7.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_184","_ref_246","_ref_247"],"key":"Invariants of the Essential Internal Methods"},{"type":"table","id":"table-7","number":7,"caption":"Table 7: Well-Known Intrinsic Objects","referencingIds":["_ref_51","_ref_172","_ref_744"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 7: Well-Known Intrinsic Objects"},{"type":"clause","id":"sec-well-known-intrinsic-objects","aoid":null,"title":"Well-Known Intrinsic Objects","titleHTML":"Well-Known Intrinsic Objects","number":"6.1.7.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_474"],"key":"Well-Known Intrinsic Objects"},{"type":"clause","id":"sec-object-type","aoid":null,"title":"The Object Type","titleHTML":"The Object Type","number":"6.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_24","_ref_207","_ref_948","_ref_950","_ref_951","_ref_954","_ref_980","_ref_982","_ref_983","_ref_984","_ref_985","_ref_987","_ref_988","_ref_990","_ref_991","_ref_993","_ref_994","_ref_1009","_ref_1013","_ref_1016","_ref_1019","_ref_1022","_ref_1025","_ref_1031","_ref_1044","_ref_1049","_ref_1054","_ref_1063","_ref_1067","_ref_1069","_ref_1071","_ref_1075","_ref_1078","_ref_1083","_ref_1086","_ref_1088","_ref_1090","_ref_1096","_ref_1098","_ref_1104","_ref_1110","_ref_1115","_ref_1118","_ref_1121","_ref_1128","_ref_1131","_ref_1134","_ref_1137","_ref_1140","_ref_1145","_ref_1147","_ref_1152","_ref_1158","_ref_1163","_ref_1169","_ref_1174","_ref_1177","_ref_1182","_ref_1185","_ref_1187","_ref_1189","_ref_1191","_ref_1193","_ref_1195","_ref_1199","_ref_1204","_ref_2098","_ref_2320","_ref_2321","_ref_2333","_ref_2335","_ref_2340","_ref_2341","_ref_2342","_ref_2343","_ref_2664","_ref_2703","_ref_2710","_ref_2754","_ref_2755","_ref_2756","_ref_3026","_ref_3027","_ref_3040","_ref_3041","_ref_3535","_ref_3536","_ref_4251","_ref_4761","_ref_4790","_ref_4791","_ref_5030","_ref_5122","_ref_5186","_ref_5189","_ref_6115","_ref_6166","_ref_6170","_ref_6184","_ref_6188","_ref_6212","_ref_6263","_ref_6299","_ref_6312","_ref_6390","_ref_6672","_ref_6674","_ref_6675","_ref_6767","_ref_6781","_ref_6861","_ref_6867","_ref_6871","_ref_6876","_ref_6952","_ref_7056","_ref_7063","_ref_7176","_ref_7211","_ref_7251","_ref_7276","_ref_7444","_ref_7448","_ref_7489","_ref_7491","_ref_7537","_ref_7540","_ref_7544","_ref_7884","_ref_7903","_ref_8245","_ref_8314","_ref_8596","_ref_8597","_ref_8598","_ref_8653"],"key":"The Object Type"},{"type":"clause","id":"sec-ecmascript-language-types","aoid":null,"title":"ECMAScript Language Types","titleHTML":"ECMAScript Language Types","number":"6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_945","_ref_946","_ref_949","_ref_955","_ref_956","_ref_1217","_ref_1430","_ref_1432","_ref_1524","_ref_1526","_ref_1535","_ref_1604","_ref_1636","_ref_1637","_ref_1652","_ref_1692","_ref_1820","_ref_1822","_ref_2305","_ref_2354","_ref_2356","_ref_2363","_ref_2365","_ref_2369","_ref_2441","_ref_2771","_ref_2776","_ref_2852","_ref_2860","_ref_2913","_ref_2924","_ref_2946","_ref_3016","_ref_3029","_ref_3325","_ref_6975","_ref_7817"],"key":"ECMAScript Language Types"},{"type":"term","term":"List","refId":"sec-list-and-record-specification-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"List"},{"type":"term","term":"Record","refId":"sec-list-and-record-specification-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Record"},{"type":"clause","id":"sec-list-and-record-specification-type","aoid":null,"title":"The List and Record Specification Types","titleHTML":"The List and Record Specification Types","number":"6.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_960","_ref_961","_ref_968","_ref_969","_ref_995","_ref_996","_ref_997","_ref_998","_ref_999","_ref_1207","_ref_1214","_ref_1215","_ref_1385","_ref_1418","_ref_1442","_ref_1653","_ref_1654","_ref_1658","_ref_1659","_ref_1675","_ref_1677","_ref_1682","_ref_1683","_ref_1684","_ref_1688","_ref_1693","_ref_1696","_ref_1717","_ref_1718","_ref_1734","_ref_1736","_ref_1737","_ref_1750","_ref_1795","_ref_1815","_ref_1846","_ref_1881","_ref_1937","_ref_1986","_ref_1993","_ref_1996","_ref_2053","_ref_2064","_ref_2071","_ref_2072","_ref_2081","_ref_2082","_ref_2164","_ref_2165","_ref_2166","_ref_2167","_ref_2186","_ref_2249","_ref_2285","_ref_2384","_ref_2387","_ref_2388","_ref_2389","_ref_2391","_ref_2392","_ref_2425","_ref_2464","_ref_2466","_ref_2573","_ref_2574","_ref_2578","_ref_2580","_ref_2584","_ref_2604","_ref_2616","_ref_2628","_ref_2631","_ref_2725","_ref_2796","_ref_2805","_ref_2868","_ref_2874","_ref_2894","_ref_2895","_ref_2936","_ref_2937","_ref_3058","_ref_3060","_ref_3061","_ref_3062","_ref_3063","_ref_3064","_ref_3065","_ref_3066","_ref_3067","_ref_3069","_ref_3078","_ref_3138","_ref_3139","_ref_3140","_ref_3196","_ref_3197","_ref_3206","_ref_3222","_ref_3223","_ref_3224","_ref_3225","_ref_3226","_ref_3227","_ref_3229","_ref_3234","_ref_3235","_ref_3239","_ref_3246","_ref_3249","_ref_3251","_ref_3254","_ref_3287","_ref_3352","_ref_3353","_ref_3355","_ref_3356","_ref_3565","_ref_3572","_ref_3574","_ref_3623","_ref_3624","_ref_3632","_ref_3633","_ref_3634","_ref_3635","_ref_3636","_ref_3637","_ref_3638","_ref_3639","_ref_3640","_ref_3641","_ref_3642","_ref_3643","_ref_3644","_ref_3645","_ref_3646","_ref_3647","_ref_3648","_ref_3681","_ref_3693","_ref_3694","_ref_3701","_ref_3702","_ref_3704","_ref_3819","_ref_3820","_ref_3844","_ref_3917","_ref_3918","_ref_3919","_ref_3920","_ref_3921","_ref_3922","_ref_3923","_ref_3924","_ref_3925","_ref_3926","_ref_3927","_ref_3928","_ref_3929","_ref_3930","_ref_3931","_ref_3932","_ref_3934","_ref_3940","_ref_3945","_ref_3970","_ref_3971","_ref_3972","_ref_3973","_ref_3974","_ref_3975","_ref_3976","_ref_3977","_ref_3981","_ref_4015","_ref_4018","_ref_4019","_ref_4020","_ref_4021","_ref_4022","_ref_4065","_ref_4066","_ref_4067","_ref_4068","_ref_4077","_ref_4094","_ref_4115","_ref_4207","_ref_4252","_ref_4253","_ref_4254","_ref_4255","_ref_4256","_ref_4257","_ref_4280","_ref_4304","_ref_4336","_ref_4337","_ref_4338","_ref_4339","_ref_4347","_ref_4398","_ref_4401","_ref_4424","_ref_4425","_ref_4427","_ref_4439","_ref_4443","_ref_4444","_ref_4445","_ref_4446","_ref_4447","_ref_4448","_ref_4449","_ref_4450","_ref_4451","_ref_4453","_ref_4454","_ref_4455","_ref_4456","_ref_4457","_ref_4458","_ref_4459","_ref_4460","_ref_4461","_ref_4462","_ref_4463","_ref_4464","_ref_4477","_ref_4478","_ref_4479","_ref_4489","_ref_4515","_ref_4559","_ref_4560","_ref_4561","_ref_4562","_ref_4563","_ref_4564","_ref_4565","_ref_4566","_ref_4567","_ref_4571","_ref_4578","_ref_4581","_ref_4583","_ref_4584","_ref_4585","_ref_4594","_ref_4595","_ref_4609","_ref_4613","_ref_4644","_ref_4673","_ref_4680","_ref_4691","_ref_4692","_ref_4693","_ref_4695","_ref_4697","_ref_4698","_ref_4700","_ref_4702","_ref_4703","_ref_4704","_ref_4705","_ref_4706","_ref_4707","_ref_4708","_ref_4709","_ref_4710","_ref_4711","_ref_4712","_ref_4714","_ref_4715","_ref_4717","_ref_4719","_ref_4721","_ref_4724","_ref_4725","_ref_4726","_ref_4728","_ref_4730","_ref_4731","_ref_4732","_ref_4733","_ref_4734","_ref_4735","_ref_4736","_ref_4737","_ref_4738","_ref_4753","_ref_4844","_ref_4845","_ref_4848","_ref_4868","_ref_4869","_ref_4872","_ref_4873","_ref_4897","_ref_4899","_ref_4908","_ref_4909","_ref_4912","_ref_4940","_ref_4946","_ref_4947","_ref_4998","_ref_5046","_ref_5058","_ref_5102","_ref_5105","_ref_5106","_ref_5107","_ref_5108","_ref_5109","_ref_5112","_ref_5764","_ref_5765","_ref_5767","_ref_5768","_ref_5769","_ref_5774","_ref_5776","_ref_5777","_ref_5778","_ref_5784","_ref_5788","_ref_5808","_ref_5876","_ref_5886","_ref_5945","_ref_5946","_ref_5976","_ref_5977","_ref_5980","_ref_5981","_ref_5982","_ref_5983","_ref_5986","_ref_5988","_ref_5989","_ref_5990","_ref_5991","_ref_5994","_ref_5995","_ref_5996","_ref_5997","_ref_5999","_ref_6000","_ref_6001","_ref_6007","_ref_6012","_ref_6013","_ref_6020","_ref_6022","_ref_6025","_ref_6031","_ref_6035","_ref_6037","_ref_6038","_ref_6043","_ref_6049","_ref_6051","_ref_6052","_ref_6056","_ref_6057","_ref_6058","_ref_6065","_ref_6076","_ref_6103","_ref_6105","_ref_6106","_ref_6143","_ref_6152","_ref_6154","_ref_6157","_ref_6225","_ref_6242","_ref_6247","_ref_6343","_ref_6381","_ref_6398","_ref_6580","_ref_6719","_ref_6760","_ref_6839","_ref_6849","_ref_6852","_ref_6853","_ref_6920","_ref_7118","_ref_7138","_ref_7153","_ref_7182","_ref_7183","_ref_7184","_ref_7185","_ref_7188","_ref_7189","_ref_7194","_ref_7195","_ref_7198","_ref_7199","_ref_7202","_ref_7203","_ref_7207","_ref_7208","_ref_7210","_ref_7213","_ref_7214","_ref_7225","_ref_7226","_ref_7239","_ref_7257","_ref_7260","_ref_7261","_ref_7262","_ref_7265","_ref_7270","_ref_7273","_ref_7278","_ref_7289","_ref_7301","_ref_7310","_ref_7312","_ref_7315","_ref_7317","_ref_7320","_ref_7322","_ref_7325","_ref_7327","_ref_7329","_ref_7335","_ref_7350","_ref_7355","_ref_7358","_ref_7381","_ref_7390","_ref_7394","_ref_7398","_ref_7399","_ref_7400","_ref_7401","_ref_7429","_ref_7612","_ref_7613","_ref_7640","_ref_7641","_ref_7649","_ref_7650","_ref_7651","_ref_7653","_ref_7654","_ref_7663","_ref_7665","_ref_7672","_ref_7673","_ref_7679","_ref_7680","_ref_7681","_ref_7707","_ref_7711","_ref_7712","_ref_7742","_ref_7746","_ref_7788","_ref_7799","_ref_7809","_ref_7822","_ref_7823","_ref_7864","_ref_7986","_ref_7987","_ref_7988","_ref_8001","_ref_8004","_ref_8010","_ref_8015","_ref_8074","_ref_8076","_ref_8079","_ref_8084","_ref_8087","_ref_8088","_ref_8090","_ref_8093","_ref_8115","_ref_8128","_ref_8136","_ref_8160","_ref_8161","_ref_8185","_ref_8186","_ref_8187","_ref_8198","_ref_8218","_ref_8290","_ref_8293","_ref_8294","_ref_8302","_ref_8303","_ref_8395","_ref_8402","_ref_8403","_ref_8406","_ref_8407","_ref_8408","_ref_8409","_ref_8415","_ref_8418","_ref_8419","_ref_8422","_ref_8427","_ref_8429","_ref_8430","_ref_8431","_ref_8434","_ref_8437","_ref_8449","_ref_8464","_ref_8467","_ref_8468","_ref_8475","_ref_8476","_ref_8486","_ref_8494","_ref_8504","_ref_8533","_ref_8725","_ref_8745","_ref_8752","_ref_8779"],"key":"The List and Record Specification Types"},{"type":"term","term":"Set","refId":"sec-set-and-relation-specification-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Set"},{"type":"term","term":"Relation","refId":"sec-set-and-relation-specification-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Relation"},{"type":"term","term":"strict partial order","refId":"sec-set-and-relation-specification-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"strict partial order"},{"type":"term","term":"strict total order","refId":"sec-set-and-relation-specification-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"strict total order"},{"type":"clause","id":"sec-set-and-relation-specification-type","aoid":null,"title":"The Set and Relation Specification Types","titleHTML":"The Set and Relation Specification Types","number":"6.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8439","_ref_8442","_ref_8444","_ref_8446","_ref_8448","_ref_8491","_ref_8497","_ref_8508","_ref_8511","_ref_8515","_ref_8520","_ref_8542","_ref_8559","_ref_8560"],"key":"The Set and Relation Specification Types"},{"type":"term","term":"Completion Record","refId":"sec-completion-record-specification-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Completion Record"},{"type":"table","id":"table-8","number":8,"caption":"Table 8: Completion Record Fields","referencingIds":["_ref_123"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 8: Completion Record Fields"},{"type":"term","term":"abrupt completion","refId":"sec-completion-record-specification-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"abrupt completion"},{"type":"clause","id":"await-fulfilled","aoid":null,"title":"Await Fulfilled Functions","titleHTML":"Await Fulfilled Functions","number":"6.2.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_124"],"key":"Await Fulfilled Functions"},{"type":"clause","id":"await-rejected","aoid":null,"title":"Await Rejected Functions","titleHTML":"Await Rejected Functions","number":"6.2.3.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_125"],"key":"Await Rejected Functions"},{"type":"op","aoid":"Await","refId":"await","location":"","referencingIds":[],"key":"Await"},{"type":"clause","id":"await","aoid":"Await","title":"Await","titleHTML":"Await","number":"6.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1218","_ref_1230","_ref_1231","_ref_1232","_ref_1234","_ref_1235","_ref_1236","_ref_1237","_ref_1247","_ref_1248","_ref_1249","_ref_1250","_ref_1251","_ref_1261","_ref_1781","_ref_3134","_ref_3135","_ref_3860","_ref_3901","_ref_4172","_ref_4181","_ref_4193","_ref_4196","_ref_4291","_ref_4292","_ref_4295","_ref_4297","_ref_4333","_ref_8062","_ref_8069","_ref_8338"],"key":"Await"},{"type":"op","aoid":"NormalCompletion","refId":"sec-normalcompletion","location":"","referencingIds":[],"key":"NormalCompletion"},{"type":"clause","id":"sec-normalcompletion","aoid":"NormalCompletion","title":"NormalCompletion","titleHTML":"NormalCompletion","number":"6.2.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_894","_ref_904","_ref_1243","_ref_1262","_ref_1426","_ref_1837","_ref_1842","_ref_1847","_ref_1850","_ref_1852","_ref_1990","_ref_1998","_ref_2028","_ref_2189","_ref_2203","_ref_2436","_ref_2438","_ref_2452","_ref_2482","_ref_2483","_ref_2539","_ref_2543","_ref_2548","_ref_2592","_ref_3149","_ref_3540","_ref_3542","_ref_3545","_ref_3583","_ref_3587","_ref_3625","_ref_3626","_ref_3628","_ref_3629","_ref_3631","_ref_3649","_ref_3668","_ref_3683","_ref_3685","_ref_3699","_ref_3700","_ref_3712","_ref_3763","_ref_3772","_ref_3781","_ref_3784","_ref_3805","_ref_3863","_ref_3933","_ref_3939","_ref_3950","_ref_3957","_ref_3967","_ref_3968","_ref_3979","_ref_4001","_ref_4025","_ref_4047","_ref_4048","_ref_4061","_ref_4170","_ref_4289","_ref_4321","_ref_4322","_ref_4387","_ref_4410","_ref_4432","_ref_4441","_ref_4645","_ref_4682","_ref_4684","_ref_4685","_ref_4690","_ref_4739","_ref_4743","_ref_4748","_ref_4821","_ref_4860","_ref_7371","_ref_7416","_ref_7934","_ref_7944","_ref_7974","_ref_7979","_ref_8137","_ref_8143","_ref_8730","_ref_8743","_ref_8750","_ref_8762"],"key":"NormalCompletion"},{"type":"op","aoid":"ThrowCompletion","refId":"sec-throwcompletion","location":"","referencingIds":[],"key":"ThrowCompletion"},{"type":"clause","id":"sec-throwcompletion","aoid":"ThrowCompletion","title":"ThrowCompletion","titleHTML":"ThrowCompletion","number":"6.2.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_910","_ref_1257","_ref_1264","_ref_3983","_ref_6356","_ref_7162","_ref_7919","_ref_7983","_ref_8139"],"key":"ThrowCompletion"},{"type":"op","aoid":"UpdateEmpty","refId":"sec-updateempty","location":"","referencingIds":[],"key":"UpdateEmpty"},{"type":"clause","id":"sec-updateempty","aoid":"UpdateEmpty","title":"UpdateEmpty ( completionRecord, value )","titleHTML":"UpdateEmpty ( <var>completionRecord</var>, <var>value</var> )","number":"6.2.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3657","_ref_3769","_ref_3774","_ref_3778","_ref_3787","_ref_3808","_ref_3885","_ref_3887","_ref_3915","_ref_3938","_ref_3944","_ref_3949","_ref_3953","_ref_3956","_ref_3995","_ref_3997","_ref_3999","_ref_4689"],"key":"UpdateEmpty ( completionRecord, value )"},{"type":"op","aoid":"Completion","refId":"sec-completion-record-specification-type","location":"","referencingIds":[],"key":"Completion"},{"type":"clause","id":"sec-completion-record-specification-type","aoid":"Completion","title":"The Completion Record Specification Type","titleHTML":"The Completion Record Specification Type","number":"6.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_892","_ref_893","_ref_895","_ref_896","_ref_897","_ref_898","_ref_899","_ref_900","_ref_902","_ref_903","_ref_905","_ref_906","_ref_907","_ref_908","_ref_909","_ref_912","_ref_913","_ref_915","_ref_916","_ref_918","_ref_919","_ref_922","_ref_925","_ref_926","_ref_928","_ref_929","_ref_957","_ref_1208","_ref_1216","_ref_1229","_ref_1263","_ref_1265","_ref_1267","_ref_1268","_ref_1766","_ref_1768","_ref_1770","_ref_1771","_ref_1773","_ref_1777","_ref_1779","_ref_1782","_ref_1783","_ref_1785","_ref_1876","_ref_2218","_ref_2462","_ref_2610","_ref_2615","_ref_3247","_ref_3323","_ref_3549","_ref_3551","_ref_3556","_ref_3558","_ref_3559","_ref_3561","_ref_3563","_ref_3581","_ref_3585","_ref_3590","_ref_3593","_ref_3603","_ref_3606","_ref_3627","_ref_3630","_ref_3656","_ref_3715","_ref_3718","_ref_3725","_ref_3728","_ref_3734","_ref_3739","_ref_3746","_ref_3749","_ref_3768","_ref_3773","_ref_3777","_ref_3786","_ref_3796","_ref_3798","_ref_3801","_ref_3807","_ref_3851","_ref_3871","_ref_3877","_ref_3884","_ref_3894","_ref_3895","_ref_3896","_ref_3897","_ref_3898","_ref_3902","_ref_3914","_ref_3916","_ref_3936","_ref_3937","_ref_3942","_ref_3943","_ref_3947","_ref_3948","_ref_3951","_ref_3952","_ref_3954","_ref_3955","_ref_3980","_ref_3989","_ref_3991","_ref_3993","_ref_3994","_ref_3996","_ref_3998","_ref_4000","_ref_4072","_ref_4075","_ref_4080","_ref_4119","_ref_4188","_ref_4194","_ref_4200","_ref_4211","_ref_4275","_ref_4281","_ref_4283","_ref_4308","_ref_4310","_ref_4312","_ref_4342","_ref_4345","_ref_4351","_ref_4353","_ref_4355","_ref_4417","_ref_4434","_ref_4476","_ref_4491","_ref_4517","_ref_4662","_ref_4686","_ref_4688","_ref_4826","_ref_4856","_ref_4859","_ref_5237","_ref_5238","_ref_5437","_ref_5453","_ref_5454","_ref_6363","_ref_6366","_ref_6690","_ref_6904","_ref_6930","_ref_6933","_ref_6936","_ref_6939","_ref_6942","_ref_6945","_ref_6950","_ref_6966","_ref_6969","_ref_6972","_ref_7026","_ref_7054","_ref_7165","_ref_7168","_ref_7171","_ref_7246","_ref_7342","_ref_7917","_ref_7932","_ref_7948","_ref_7952","_ref_7961","_ref_7973","_ref_7981","_ref_7989","_ref_8017","_ref_8032","_ref_8051","_ref_8067","_ref_8068","_ref_8070","_ref_8072","_ref_8081","_ref_8083","_ref_8104","_ref_8142","_ref_8144","_ref_8147","_ref_8150","_ref_8152","_ref_8153","_ref_8164","_ref_8176","_ref_8179","_ref_8189","_ref_8194","_ref_8209","_ref_8212","_ref_8220","_ref_8223"],"key":"The Completion Record Specification Type"},{"type":"term","term":"Reference","refId":"sec-reference-specification-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Reference"},{"type":"term","term":"Super Reference","refId":"sec-reference-specification-type","referencingIds":["_ref_1270","_ref_3351"],"id":"super-reference","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Super Reference"},{"type":"op","aoid":"GetBase","refId":"sec-getbase","location":"","referencingIds":[],"key":"GetBase"},{"type":"clause","id":"sec-getbase","aoid":"GetBase","title":"GetBase ( V )","titleHTML":"GetBase ( <var>V</var> )","number":"6.2.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1299","_ref_1314","_ref_1333","_ref_1341","_ref_3313","_ref_3399","_ref_3404"],"key":"GetBase ( V )"},{"type":"op","aoid":"GetReferencedName","refId":"sec-getreferencedname","location":"","referencingIds":[],"key":"GetReferencedName"},{"type":"clause","id":"sec-getreferencedname","aoid":"GetReferencedName","title":"GetReferencedName ( V )","titleHTML":"GetReferencedName ( <var>V</var> )","number":"6.2.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1305","_ref_1308","_ref_1319","_ref_1324","_ref_1328","_ref_1344","_ref_3295","_ref_3400","_ref_3405","_ref_3526","_ref_3596","_ref_3616"],"key":"GetReferencedName ( V )"},{"type":"op","aoid":"IsStrictReference","refId":"sec-isstrictreference","location":"","referencingIds":[],"key":"IsStrictReference"},{"type":"clause","id":"sec-isstrictreference","aoid":"IsStrictReference","title":"IsStrictReference ( V )","titleHTML":"IsStrictReference ( <var>V</var> )","number":"6.2.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1309","_ref_1316","_ref_1326","_ref_1329","_ref_3395","_ref_3401"],"key":"IsStrictReference ( V )"},{"type":"op","aoid":"HasPrimitiveBase","refId":"sec-hasprimitivebase","location":"","referencingIds":[],"key":"HasPrimitiveBase"},{"type":"clause","id":"sec-hasprimitivebase","aoid":"HasPrimitiveBase","title":"HasPrimitiveBase ( V )","titleHTML":"HasPrimitiveBase ( <var>V</var> )","number":"6.2.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1289","_ref_1302","_ref_1321"],"key":"HasPrimitiveBase ( V )"},{"type":"op","aoid":"IsPropertyReference","refId":"sec-ispropertyreference","location":"","referencingIds":[],"key":"IsPropertyReference"},{"type":"clause","id":"sec-ispropertyreference","aoid":"IsPropertyReference","title":"IsPropertyReference ( V )","titleHTML":"IsPropertyReference ( <var>V</var> )","number":"6.2.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1301","_ref_1320","_ref_1331","_ref_3294","_ref_3310","_ref_3396"],"key":"IsPropertyReference ( V )"},{"type":"op","aoid":"IsUnresolvableReference","refId":"sec-isunresolvablereference","location":"","referencingIds":[],"key":"IsUnresolvableReference"},{"type":"clause","id":"sec-isunresolvablereference","aoid":"IsUnresolvableReference","title":"IsUnresolvableReference ( V )","titleHTML":"IsUnresolvableReference ( <var>V</var> )","number":"6.2.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1300","_ref_1315","_ref_1340","_ref_3393","_ref_3412"],"key":"IsUnresolvableReference ( V )"},{"type":"op","aoid":"IsSuperReference","refId":"sec-issuperreference","location":"","referencingIds":[],"key":"IsSuperReference"},{"type":"clause","id":"sec-issuperreference","aoid":"IsSuperReference","title":"IsSuperReference ( V )","titleHTML":"IsSuperReference ( <var>V</var> )","number":"6.2.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1332","_ref_3397"],"key":"IsSuperReference ( V )"},{"type":"op","aoid":"GetValue","refId":"sec-getvalue","location":"","referencingIds":[],"key":"GetValue"},{"type":"clause","id":"sec-getvalue","aoid":"GetValue","title":"GetValue ( V )","titleHTML":"GetValue ( <var>V</var> )","number":"6.2.4.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3160","_ref_3166","_ref_3172","_ref_3203","_ref_3205","_ref_3208","_ref_3214","_ref_3231","_ref_3250","_ref_3253","_ref_3255","_ref_3261","_ref_3264","_ref_3270","_ref_3272","_ref_3273","_ref_3278","_ref_3286","_ref_3291","_ref_3304","_ref_3327","_ref_3354","_ref_3357","_ref_3362","_ref_3365","_ref_3368","_ref_3371","_ref_3378","_ref_3381","_ref_3384","_ref_3387","_ref_3408","_ref_3409","_ref_3413","_ref_3415","_ref_3417","_ref_3419","_ref_3421","_ref_3422","_ref_3423","_ref_3432","_ref_3433","_ref_3436","_ref_3437","_ref_3449","_ref_3450","_ref_3453","_ref_3454","_ref_3457","_ref_3458","_ref_3461","_ref_3462","_ref_3465","_ref_3466","_ref_3469","_ref_3470","_ref_3473","_ref_3474","_ref_3477","_ref_3478","_ref_3481","_ref_3482","_ref_3484","_ref_3485","_ref_3495","_ref_3496","_ref_3498","_ref_3499","_ref_3501","_ref_3502","_ref_3504","_ref_3505","_ref_3507","_ref_3508","_ref_3511","_ref_3513","_ref_3514","_ref_3516","_ref_3518","_ref_3519","_ref_3520","_ref_3527","_ref_3530","_ref_3531","_ref_3532","_ref_3570","_ref_3597","_ref_3617","_ref_3620","_ref_3621","_ref_3622","_ref_3675","_ref_3677","_ref_3688","_ref_3692","_ref_3721","_ref_3730","_ref_3756","_ref_3760","_ref_3764","_ref_3767","_ref_3771","_ref_3779","_ref_3782","_ref_3788","_ref_3803","_ref_3810","_ref_3850","_ref_3899","_ref_3908","_ref_3959","_ref_3961","_ref_3982","_ref_4079","_ref_4163","_ref_4168","_ref_4265","_ref_4332","_ref_4369","_ref_4370","_ref_4745","_ref_8728","_ref_8783"],"key":"GetValue ( V )"},{"type":"op","aoid":"PutValue","refId":"sec-putvalue","location":"","referencingIds":[],"key":"PutValue"},{"type":"clause","id":"sec-putvalue","aoid":"PutValue","title":"PutValue ( V, W )","titleHTML":"PutValue ( <var>V</var>, <var>W</var> )","number":"6.2.4.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_779","_ref_3142","_ref_3151","_ref_3379","_ref_3382","_ref_3385","_ref_3388","_ref_3528","_ref_3533","_ref_3571","_ref_3579","_ref_3599","_ref_3611","_ref_3619","_ref_3689","_ref_3695","_ref_3709","_ref_3711","_ref_3722","_ref_3736","_ref_3754","_ref_3761","_ref_3821","_ref_3873","_ref_4024","_ref_4069","_ref_8784"],"key":"PutValue ( V, W )"},{"type":"op","aoid":"GetThisValue","refId":"sec-getthisvalue","location":"","referencingIds":[],"key":"GetThisValue"},{"type":"clause","id":"sec-getthisvalue","aoid":"GetThisValue","title":"GetThisValue ( V )","titleHTML":"GetThisValue ( <var>V</var> )","number":"6.2.4.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1306","_ref_1325","_ref_3311"],"key":"GetThisValue ( V )"},{"type":"op","aoid":"InitializeReferencedBinding","refId":"sec-initializereferencedbinding","location":"","referencingIds":[],"key":"InitializeReferencedBinding"},{"type":"clause","id":"sec-initializereferencedbinding","aoid":"InitializeReferencedBinding","title":"InitializeReferencedBinding ( V, W )","titleHTML":"InitializeReferencedBinding ( <var>V</var>, <var>W</var> )","number":"6.2.4.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3671","_ref_3676","_ref_3710","_ref_3723","_ref_3737","_ref_3762","_ref_3872"],"key":"InitializeReferencedBinding ( V, W )"},{"type":"clause","id":"sec-reference-specification-type","aoid":null,"title":"The Reference Specification Type","titleHTML":"The Reference Specification Type","number":"6.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_815","_ref_1206","_ref_1275","_ref_1278","_ref_1281","_ref_1284","_ref_1288","_ref_1292","_ref_1295","_ref_1298","_ref_1313","_ref_1338","_ref_2017","_ref_2031","_ref_2033","_ref_2147","_ref_3155","_ref_3269","_ref_3277","_ref_3281","_ref_3293","_ref_3309","_ref_3315","_ref_3350","_ref_3375","_ref_3376","_ref_3392","_ref_3402","_ref_3411","_ref_3522","_ref_3523","_ref_8595","_ref_8617"],"key":"The Reference Specification Type"},{"type":"term","term":"Property Descriptor","refId":"sec-property-descriptor-specification-type","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Property Descriptor"},{"type":"op","aoid":"IsAccessorDescriptor","refId":"sec-isaccessordescriptor","location":"","referencingIds":[],"key":"IsAccessorDescriptor"},{"type":"clause","id":"sec-isaccessordescriptor","aoid":"IsAccessorDescriptor","title":"IsAccessorDescriptor ( Desc )","titleHTML":"IsAccessorDescriptor ( <var>Desc</var> )","number":"6.2.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1349","_ref_1668","_ref_2347","_ref_2348","_ref_2361","_ref_2375","_ref_2378","_ref_2767","_ref_2848","_ref_2907","_ref_3025","_ref_3039","_ref_8668","_ref_8671"],"key":"IsAccessorDescriptor ( Desc )"},{"type":"op","aoid":"IsDataDescriptor","refId":"sec-isdatadescriptor","location":"","referencingIds":[],"key":"IsDataDescriptor"},{"type":"clause","id":"sec-isdatadescriptor","aoid":"IsDataDescriptor","title":"IsDataDescriptor ( Desc )","titleHTML":"IsDataDescriptor ( <var>Desc</var> )","number":"6.2.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1350","_ref_1387","_ref_1674","_ref_1983","_ref_2332","_ref_2337","_ref_2338","_ref_2339","_ref_2344","_ref_2345","_ref_2359","_ref_2373","_ref_2764","_ref_3023","_ref_3037"],"key":"IsDataDescriptor ( Desc )"},{"type":"op","aoid":"IsGenericDescriptor","refId":"sec-isgenericdescriptor","location":"","referencingIds":[],"key":"IsGenericDescriptor"},{"type":"clause","id":"sec-isgenericdescriptor","aoid":"IsGenericDescriptor","title":"IsGenericDescriptor ( Desc )","titleHTML":"IsGenericDescriptor ( <var>Desc</var> )","number":"6.2.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1386","_ref_2331","_ref_2336"],"key":"IsGenericDescriptor ( Desc )"},{"type":"op","aoid":"FromPropertyDescriptor","refId":"sec-frompropertydescriptor","location":"","referencingIds":[],"key":"FromPropertyDescriptor"},{"type":"clause","id":"sec-frompropertydescriptor","aoid":"FromPropertyDescriptor","title":"FromPropertyDescriptor ( Desc )","titleHTML":"FromPropertyDescriptor ( <var>Desc</var> )","number":"6.2.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3000","_ref_4936","_ref_4941","_ref_8360"],"key":"FromPropertyDescriptor ( Desc )"},{"type":"op","aoid":"ToPropertyDescriptor","refId":"sec-topropertydescriptor","location":"","referencingIds":[],"key":"ToPropertyDescriptor"},{"type":"clause","id":"sec-topropertydescriptor","aoid":"ToPropertyDescriptor","title":"ToPropertyDescriptor ( Obj )","titleHTML":"ToPropertyDescriptor ( <var>Obj</var> )","number":"6.2.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2990","_ref_4911","_ref_4916","_ref_8353"],"key":"ToPropertyDescriptor ( Obj )"},{"type":"op","aoid":"CompletePropertyDescriptor","refId":"sec-completepropertydescriptor","location":"","referencingIds":[],"key":"CompletePropertyDescriptor"},{"type":"clause","id":"sec-completepropertydescriptor","aoid":"CompletePropertyDescriptor","title":"CompletePropertyDescriptor ( Desc )","titleHTML":"CompletePropertyDescriptor ( <var>Desc</var> )","number":"6.2.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_49","_ref_2991"],"key":"CompletePropertyDescriptor ( Desc )"},{"type":"clause","id":"sec-property-descriptor-specification-type","aoid":null,"title":"The Property Descriptor Specification Type","titleHTML":"The Property Descriptor Specification Type","number":"6.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_958","_ref_959","_ref_978","_ref_979","_ref_1209","_ref_1346","_ref_1347","_ref_1348","_ref_1351","_ref_1364","_ref_1382","_ref_1384","_ref_1627","_ref_2306","_ref_2319","_ref_2322","_ref_2324","_ref_2334","_ref_2370","_ref_2657","_ref_2697","_ref_2718","_ref_2762","_ref_2841","_ref_2904","_ref_2947","_ref_2994","_ref_3005"],"key":"The Property Descriptor Specification Type"},{"type":"clause","id":"sec-lexical-environment-and-environment-record-specification-types","aoid":null,"title":"The Lexical Environment and Environment Record Specification Types","titleHTML":"The Lexical Environment and Environment Record Specification Types","number":"6.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Lexical Environment and Environment Record Specification Types"},{"type":"term","term":"Data Block","refId":"sec-data-blocks","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Data Block"},{"type":"term","term":"Shared Data Block","refId":"sec-data-blocks","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Shared Data Block"},{"type":"op","aoid":"CreateByteDataBlock","refId":"sec-createbytedatablock","location":"","referencingIds":[],"key":"CreateByteDataBlock"},{"type":"clause","id":"sec-createbytedatablock","aoid":"CreateByteDataBlock","title":"CreateByteDataBlock ( size )","titleHTML":"CreateByteDataBlock ( <var>size</var> )","number":"6.2.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7363"],"key":"CreateByteDataBlock ( size )"},{"type":"op","aoid":"CreateSharedByteDataBlock","refId":"sec-createsharedbytedatablock","location":"","referencingIds":[],"key":"CreateSharedByteDataBlock"},{"type":"clause","id":"sec-createsharedbytedatablock","aoid":"CreateSharedByteDataBlock","title":"CreateSharedByteDataBlock ( size )","titleHTML":"CreateSharedByteDataBlock ( <var>size</var> )","number":"6.2.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7474"],"key":"CreateSharedByteDataBlock ( size )"},{"type":"op","aoid":"CopyDataBlockBytes","refId":"sec-copydatablockbytes","location":"","referencingIds":[],"key":"CopyDataBlockBytes"},{"type":"clause","id":"sec-copydatablockbytes","aoid":"CopyDataBlockBytes","title":"CopyDataBlockBytes ( toBlock, toIndex, fromBlock, fromIndex, count )","titleHTML":"CopyDataBlockBytes ( <var>toBlock</var>, <var>toIndex</var>, <var>fromBlock</var>, <var>fromIndex</var>, <var>count</var> )","number":"6.2.7.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7380","_ref_7470","_ref_7509"],"key":"CopyDataBlockBytes ( toBlock, toIndex, fromBlock, fromIndex, count )"},{"type":"clause","id":"sec-data-blocks","aoid":null,"title":"Data Blocks","titleHTML":"Data Blocks","number":"6.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1212","_ref_1399","_ref_1400","_ref_1402","_ref_1403","_ref_1409","_ref_1410","_ref_1414","_ref_1422","_ref_1425","_ref_6996","_ref_7372","_ref_7477","_ref_7479","_ref_7508","_ref_7578","_ref_7583","_ref_7585","_ref_8389","_ref_8398","_ref_8401","_ref_8405","_ref_8411","_ref_8517"],"key":"Data Blocks"},{"type":"clause","id":"sec-ecmascript-specification-types","aoid":null,"title":"ECMAScript Specification Types","titleHTML":"ECMAScript Specification Types","number":"6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ECMAScript Specification Types"},{"type":"op","aoid":"Type","refId":"sec-ecmascript-data-types-and-values","location":"","referencingIds":[],"key":"Type"},{"type":"clause","id":"sec-ecmascript-data-types-and-values","aoid":"Type","title":"ECMAScript Data Types and Values","titleHTML":"ECMAScript Data Types and Values","number":"6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3","_ref_4","_ref_46","_ref_1274","_ref_1277","_ref_1280","_ref_1283","_ref_1285","_ref_1287","_ref_1291","_ref_1294","_ref_1297","_ref_1312","_ref_1337","_ref_1363","_ref_1433","_ref_1436","_ref_1439","_ref_1441","_ref_1446","_ref_1504","_ref_1510","_ref_1520","_ref_1525","_ref_1528","_ref_1530","_ref_1531","_ref_1536","_ref_1537","_ref_1538","_ref_1542","_ref_1544","_ref_1546","_ref_1547","_ref_1548","_ref_1551","_ref_1552","_ref_1553","_ref_1557","_ref_1559","_ref_1560","_ref_1561","_ref_1562","_ref_1563","_ref_1564","_ref_1565","_ref_1570","_ref_1571","_ref_1576","_ref_1577","_ref_1579","_ref_1580","_ref_1582","_ref_1583","_ref_1585","_ref_1587","_ref_1589","_ref_1590","_ref_1592","_ref_1593","_ref_1595","_ref_1596","_ref_1597","_ref_1601","_ref_1609","_ref_1613","_ref_1615","_ref_1619","_ref_1623","_ref_1629","_ref_1633","_ref_1643","_ref_1647","_ref_1665","_ref_1671","_ref_1685","_ref_1691","_ref_1702","_ref_1704","_ref_1710","_ref_1712","_ref_1716","_ref_1719","_ref_1732","_ref_1748","_ref_1753","_ref_1755","_ref_1759","_ref_1764","_ref_1772","_ref_1775","_ref_1784","_ref_1787","_ref_1798","_ref_1868","_ref_1910","_ref_2045","_ref_2095","_ref_2183","_ref_2310","_ref_2311","_ref_2374","_ref_2402","_ref_2443","_ref_2470","_ref_2481","_ref_2486","_ref_2547","_ref_2551","_ref_2553","_ref_2554","_ref_2560","_ref_2640","_ref_2685","_ref_2727","_ref_2731","_ref_2733","_ref_2735","_ref_2741","_ref_2745","_ref_2827","_ref_2835","_ref_2845","_ref_2855","_ref_2863","_ref_2871","_ref_2873","_ref_2877","_ref_2883","_ref_2901","_ref_2905","_ref_2910","_ref_2916","_ref_2928","_ref_2942","_ref_2943","_ref_2950","_ref_2953","_ref_2958","_ref_2959","_ref_2961","_ref_2969","_ref_2976","_ref_2984","_ref_2987","_ref_2998","_ref_3010","_ref_3020","_ref_3033","_ref_3046","_ref_3052","_ref_3071","_ref_3080","_ref_3087","_ref_3089","_ref_3091","_ref_3147","_ref_3292","_ref_3308","_ref_3314","_ref_3317","_ref_3324","_ref_3336","_ref_3391","_ref_3410","_ref_3440","_ref_3441","_ref_3486","_ref_3489","_ref_3861","_ref_3892","_ref_4173","_ref_4182","_ref_4197","_ref_4269","_ref_4802","_ref_4902","_ref_4906","_ref_4914","_ref_4921","_ref_4930","_ref_4948","_ref_4952","_ref_4954","_ref_4956","_ref_4961","_ref_4963","_ref_4966","_ref_4967","_ref_4976","_ref_4986","_ref_5050","_ref_5054","_ref_5065","_ref_5066","_ref_5067","_ref_5089","_ref_5090","_ref_5092","_ref_5111","_ref_5117","_ref_5118","_ref_5120","_ref_5127","_ref_5129","_ref_5146","_ref_5179","_ref_5180","_ref_5182","_ref_5183","_ref_5194","_ref_5195","_ref_5197","_ref_5432","_ref_5435","_ref_5438","_ref_5473","_ref_5697","_ref_5702","_ref_5709","_ref_5717","_ref_5727","_ref_5748","_ref_5757","_ref_5792","_ref_5793","_ref_5795","_ref_5880","_ref_5882","_ref_5888","_ref_5924","_ref_5961","_ref_5965","_ref_6034","_ref_6092","_ref_6121","_ref_6125","_ref_6127","_ref_6131","_ref_6135","_ref_6162","_ref_6165","_ref_6167","_ref_6171","_ref_6185","_ref_6189","_ref_6192","_ref_6213","_ref_6216","_ref_6253","_ref_6264","_ref_6269","_ref_6300","_ref_6303","_ref_6306","_ref_6313","_ref_6333","_ref_6410","_ref_6693","_ref_6788","_ref_6792","_ref_6868","_ref_6872","_ref_6877","_ref_6897","_ref_6953","_ref_6976","_ref_6989","_ref_7037","_ref_7038","_ref_7042","_ref_7064","_ref_7066","_ref_7075","_ref_7092","_ref_7108","_ref_7126","_ref_7161","_ref_7181","_ref_7187","_ref_7192","_ref_7197","_ref_7201","_ref_7206","_ref_7212","_ref_7218","_ref_7222","_ref_7256","_ref_7259","_ref_7264","_ref_7268","_ref_7272","_ref_7277","_ref_7282","_ref_7286","_ref_7309","_ref_7311","_ref_7314","_ref_7316","_ref_7319","_ref_7321","_ref_7324","_ref_7326","_ref_7348","_ref_7349","_ref_7353","_ref_7354","_ref_7357","_ref_7359","_ref_7365","_ref_7367","_ref_7375","_ref_7407","_ref_7422","_ref_7442","_ref_7449","_ref_7453","_ref_7476","_ref_7492","_ref_7495","_ref_7510","_ref_7516","_ref_7527","_ref_7538","_ref_7541","_ref_7545","_ref_7572","_ref_7727","_ref_7743","_ref_7751","_ref_7752","_ref_7754","_ref_7756","_ref_7759","_ref_7762","_ref_7771","_ref_7776","_ref_7779","_ref_7781","_ref_7783","_ref_7830","_ref_7837","_ref_7845","_ref_7850","_ref_7857","_ref_7935","_ref_8054","_ref_8101","_ref_8129","_ref_8171","_ref_8204","_ref_8227","_ref_8233","_ref_8239","_ref_8251","_ref_8351","_ref_8354","_ref_8356","_ref_8358","_ref_8361","_ref_8362","_ref_8364","_ref_8365","_ref_8367","_ref_8368","_ref_8370","_ref_8371","_ref_8656","_ref_8657","_ref_8721","_ref_8722","_ref_8723","_ref_8729","_ref_8790","_ref_8792"],"key":"ECMAScript Data Types and Values"},{"type":"op","aoid":"OrdinaryToPrimitive","refId":"sec-ordinarytoprimitive","location":"","referencingIds":[],"key":"OrdinaryToPrimitive"},{"type":"clause","id":"sec-ordinarytoprimitive","aoid":"OrdinaryToPrimitive","title":"OrdinaryToPrimitive ( O, hint )","titleHTML":"OrdinaryToPrimitive ( <var>O</var>, <var>hint</var> )","number":"7.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1437","_ref_5749"],"key":"OrdinaryToPrimitive ( O, hint )"},{"type":"op","aoid":"ToPrimitive","refId":"sec-toprimitive","location":"","referencingIds":[],"key":"ToPrimitive"},{"type":"clause","id":"sec-toprimitive","aoid":"ToPrimitive","title":"ToPrimitive ( input [ , PreferredType ] )","titleHTML":"ToPrimitive ( <var>input</var> [ , <var>PreferredType</var> ] )","number":"7.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_944","_ref_1449","_ref_1489","_ref_1503","_ref_1566","_ref_1567","_ref_1568","_ref_1569","_ref_1591","_ref_1594","_ref_3438","_ref_3439","_ref_3447","_ref_5434","_ref_5696"],"key":"ToPrimitive ( input [ , PreferredType ] )"},{"type":"table","id":"table-10","number":9,"caption":"Table 9: ToBoolean Conversions","referencingIds":["_ref_134","_ref_772"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 9: ToBoolean Conversions"},{"type":"op","aoid":"ToBoolean","refId":"sec-toboolean","location":"","referencingIds":[],"key":"ToBoolean"},{"type":"clause","id":"sec-toboolean","aoid":"ToBoolean","title":"ToBoolean ( argument )","titleHTML":"ToBoolean ( <var>argument</var> )","number":"7.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_769","_ref_1366","_ref_1369","_ref_1374","_ref_1447","_ref_1540","_ref_1756","_ref_1869","_ref_2963","_ref_2971","_ref_2978","_ref_3001","_ref_3012","_ref_3035","_ref_3048","_ref_3420","_ref_3491","_ref_3512","_ref_3515","_ref_3517","_ref_3766","_ref_3770","_ref_3780","_ref_3783","_ref_3804","_ref_5083","_ref_6172","_ref_6174","_ref_6176","_ref_6178","_ref_6180","_ref_6182","_ref_6194","_ref_6197","_ref_6220","_ref_6222","_ref_6412","_ref_6443","_ref_6464","_ref_6474","_ref_6482","_ref_6660","_ref_6923","_ref_7513","_ref_7520"],"key":"ToBoolean ( argument )"},{"type":"table","id":"table-11","number":10,"caption":"Table 10: ToNumber Conversions","referencingIds":["_ref_135"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 10: ToNumber Conversions"},{"type":"production","id":"prod-StringNumericLiteral","name":"StringNumericLiteral","referencingIds":["_ref_8934","_ref_8957","_ref_8959","_ref_8960","_ref_8961","_ref_8962","_ref_8963","_ref_14826"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"StringNumericLiteral"},{"type":"production","id":"prod-StrWhiteSpace","name":"StrWhiteSpace","referencingIds":["_ref_8935","_ref_8936","_ref_8938","_ref_8940","_ref_8965","_ref_8966","_ref_8968"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"StrWhiteSpace"},{"type":"production","id":"prod-StrWhiteSpaceChar","name":"StrWhiteSpaceChar","referencingIds":["_ref_8939","_ref_14316","_ref_14319"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"StrWhiteSpaceChar"},{"type":"production","id":"prod-StrNumericLiteral","name":"StrNumericLiteral","referencingIds":["_ref_8937","_ref_8967","_ref_8969"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"StrNumericLiteral"},{"type":"production","id":"prod-StrDecimalLiteral","name":"StrDecimalLiteral","referencingIds":["_ref_8943","_ref_8970","_ref_8971","_ref_14317","_ref_14318"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"StrDecimalLiteral"},{"type":"production","id":"prod-StrUnsignedDecimalLiteral","name":"StrUnsignedDecimalLiteral","referencingIds":["_ref_8947","_ref_8948","_ref_8949","_ref_8978","_ref_8979","_ref_8980","_ref_8981","_ref_8982","_ref_8983","_ref_8984","_ref_9017"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"StrUnsignedDecimalLiteral"},{"type":"clause","id":"sec-runtime-semantics-mv-s","aoid":null,"title":"Runtime Semantics: MV","titleHTML":"Runtime Semantics: MV","number":"7.1.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: MV"},{"type":"clause","id":"sec-tonumber-applied-to-the-string-type","aoid":null,"title":"ToNumber Applied to the String Type","titleHTML":"ToNumber Applied to the String Type","number":"7.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_11","_ref_417","_ref_814"],"key":"ToNumber Applied to the String Type"},{"type":"op","aoid":"ToNumber","refId":"sec-tonumber","location":"","referencingIds":[],"key":"ToNumber"},{"type":"clause","id":"sec-tonumber","aoid":"ToNumber","title":"ToNumber ( argument )","titleHTML":"ToNumber ( <var>argument</var> )","number":"7.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1448","_ref_1450","_ref_1451","_ref_1452","_ref_1453","_ref_1454","_ref_1457","_ref_1462","_ref_1468","_ref_1472","_ref_1477","_ref_1481","_ref_1485","_ref_1500","_ref_1511","_ref_1574","_ref_1575","_ref_1581","_ref_1584","_ref_1586","_ref_1588","_ref_2700","_ref_2885","_ref_3377","_ref_3380","_ref_3383","_ref_3386","_ref_3414","_ref_3416","_ref_3424","_ref_3425","_ref_3434","_ref_3435","_ref_3445","_ref_3446","_ref_3451","_ref_3452","_ref_4861","_ref_4862","_ref_5175","_ref_5235","_ref_5236","_ref_5243","_ref_5245","_ref_5414","_ref_5415","_ref_5416","_ref_5417","_ref_5418","_ref_5419","_ref_5420","_ref_5439","_ref_5457","_ref_5458","_ref_5459","_ref_5460","_ref_5461","_ref_5462","_ref_5463","_ref_5521","_ref_5532","_ref_5534","_ref_5536","_ref_5545","_ref_5547","_ref_5549","_ref_5551","_ref_5560","_ref_5572","_ref_5574","_ref_5576","_ref_5586","_ref_5588","_ref_5598","_ref_5600","_ref_5610","_ref_5614","_ref_5623","_ref_5625","_ref_5627","_ref_5634","_ref_5636","_ref_5638","_ref_5640","_ref_5647","_ref_5657","_ref_5659","_ref_5661","_ref_5669","_ref_5671","_ref_5679","_ref_5681","_ref_5770","_ref_5837","_ref_6694","_ref_6907","_ref_6984","_ref_7039","_ref_7519","_ref_7687","_ref_7757","_ref_7777","_ref_8614","_ref_8615","_ref_8616","_ref_8707"],"key":"ToNumber ( argument )"},{"type":"op","aoid":"ToInteger","refId":"sec-tointeger","location":"","referencingIds":[],"key":"ToInteger"},{"type":"clause","id":"sec-tointeger","aoid":"ToInteger","title":"ToInteger ( argument )","titleHTML":"ToInteger ( <var>argument</var> )","number":"7.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1506","_ref_1515","_ref_2562","_ref_2730","_ref_5051","_ref_5181","_ref_5184","_ref_5202","_ref_5209","_ref_5218","_ref_5228","_ref_5383","_ref_5384","_ref_5385","_ref_5386","_ref_5390","_ref_5391","_ref_5392","_ref_5401","_ref_5421","_ref_5464","_ref_5772","_ref_5798","_ref_5801","_ref_5804","_ref_5816","_ref_5823","_ref_5830","_ref_5839","_ref_5866","_ref_5900","_ref_5901","_ref_5929","_ref_5935","_ref_5936","_ref_6238","_ref_6418","_ref_6421","_ref_6424","_ref_6448","_ref_6451","_ref_6487","_ref_6519","_ref_6530","_ref_6552","_ref_6639","_ref_6642","_ref_6706","_ref_6709","_ref_6884","_ref_6887","_ref_6890","_ref_6908","_ref_6911","_ref_6978","_ref_6991","_ref_7008","_ref_7011","_ref_7044","_ref_7047","_ref_7456","_ref_7459","_ref_7497","_ref_7500","_ref_7644","_ref_7658","_ref_7659","_ref_7667","_ref_7677","_ref_7702","_ref_7761","_ref_8674","_ref_8675","_ref_8709"],"key":"ToInteger ( argument )"},{"type":"op","aoid":"ToInt32","refId":"sec-toint32","location":"","referencingIds":[],"key":"ToInt32"},{"type":"clause","id":"sec-toint32","aoid":"ToInt32","title":"ToInt32 ( argument )","titleHTML":"ToInt32 ( <var>argument</var> )","number":"7.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1466","_ref_1467","_ref_3418","_ref_3455","_ref_3459","_ref_3509","_ref_3510","_ref_4865","_ref_6815","_ref_7686"],"key":"ToInt32 ( argument )"},{"type":"op","aoid":"ToUint32","refId":"sec-touint32","location":"","referencingIds":[],"key":"ToUint32"},{"type":"clause","id":"sec-touint32","aoid":"ToUint32","title":"ToUint32 ( argument )","titleHTML":"ToUint32 ( <var>argument</var> )","number":"7.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1461","_ref_1476","_ref_2654","_ref_2655","_ref_2665","_ref_2699","_ref_3163","_ref_3169","_ref_3178","_ref_3183","_ref_3188","_ref_3193","_ref_3456","_ref_3460","_ref_3463","_ref_3464","_ref_5239","_ref_5240","_ref_5241","_ref_5912","_ref_6278","_ref_6336","_ref_6816"],"key":"ToUint32 ( argument )"},{"type":"op","aoid":"ToInt16","refId":"sec-toint16","location":"","referencingIds":[],"key":"ToInt16"},{"type":"clause","id":"sec-toint16","aoid":"ToInt16","title":"ToInt16 ( argument )","titleHTML":"ToInt16 ( <var>argument</var> )","number":"7.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6813"],"key":"ToInt16 ( argument )"},{"type":"op","aoid":"ToUint16","refId":"sec-touint16","location":"","referencingIds":[],"key":"ToUint16"},{"type":"clause","id":"sec-touint16","aoid":"ToUint16","title":"ToUint16 ( argument )","titleHTML":"ToUint16 ( <var>argument</var> )","number":"7.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5766","_ref_6814"],"key":"ToUint16 ( argument )"},{"type":"op","aoid":"ToInt8","refId":"sec-toint8","location":"","referencingIds":[],"key":"ToInt8"},{"type":"clause","id":"sec-toint8","aoid":"ToInt8","title":"ToInt8 ( argument )","titleHTML":"ToInt8 ( <var>argument</var> )","number":"7.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6810"],"key":"ToInt8 ( argument )"},{"type":"op","aoid":"ToUint8","refId":"sec-touint8","location":"","referencingIds":[],"key":"ToUint8"},{"type":"clause","id":"sec-touint8","aoid":"ToUint8","title":"ToUint8 ( argument )","titleHTML":"ToUint8 ( <var>argument</var> )","number":"7.1.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6811"],"key":"ToUint8 ( argument )"},{"type":"op","aoid":"ToUint8Clamp","refId":"sec-touint8clamp","location":"","referencingIds":[],"key":"ToUint8Clamp"},{"type":"clause","id":"sec-touint8clamp","aoid":"ToUint8Clamp","title":"ToUint8Clamp ( argument )","titleHTML":"ToUint8Clamp ( <var>argument</var> )","number":"7.1.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6812"],"key":"ToUint8Clamp ( argument )"},{"type":"table","id":"table-12","number":11,"caption":"Table 11: ToString Conversions","referencingIds":["_ref_143"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 11: ToString Conversions"},{"type":"op","aoid":"NumberToString","refId":"sec-tostring-applied-to-the-number-type","location":"","referencingIds":[],"key":"NumberToString"},{"type":"clause","id":"sec-tostring-applied-to-the-number-type","aoid":"NumberToString","title":"NumberToString ( m )","titleHTML":"NumberToString ( <var>m</var> )","number":"7.1.12.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_501","_ref_1488","_ref_1492"],"key":"NumberToString ( m )"},{"type":"op","aoid":"ToString","refId":"sec-tostring","location":"","referencingIds":[],"key":"ToString"},{"type":"clause","id":"sec-tostring","aoid":"ToString","title":"ToString ( argument )","titleHTML":"ToString ( <var>argument</var> )","number":"7.1.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1487","_ref_1490","_ref_1501","_ref_1505","_ref_1508","_ref_1513","_ref_1680","_ref_1689","_ref_2653","_ref_2706","_ref_2728","_ref_2789","_ref_2803","_ref_2808","_ref_2870","_ref_3162","_ref_3168","_ref_3177","_ref_3195","_ref_3202","_ref_3243","_ref_3256","_ref_3262","_ref_3265","_ref_3442","_ref_3443","_ref_3609","_ref_3742","_ref_3752","_ref_4863","_ref_4864","_ref_4877","_ref_4879","_ref_4881","_ref_4883","_ref_5006","_ref_5007","_ref_5009","_ref_5098","_ref_5101","_ref_5139","_ref_5148","_ref_5150","_ref_5159","_ref_5200","_ref_5211","_ref_5215","_ref_5217","_ref_5229","_ref_5451","_ref_5452","_ref_5759","_ref_5785","_ref_5786","_ref_5789","_ref_5797","_ref_5800","_ref_5803","_ref_5807","_ref_5809","_ref_5813","_ref_5815","_ref_5820","_ref_5822","_ref_5828","_ref_5829","_ref_5835","_ref_5836","_ref_5843","_ref_5844","_ref_5848","_ref_5852","_ref_5853","_ref_5855","_ref_5857","_ref_5860","_ref_5862","_ref_5865","_ref_5870","_ref_5871","_ref_5873","_ref_5875","_ref_5891","_ref_5895","_ref_5899","_ref_5910","_ref_5913","_ref_5920","_ref_5922","_ref_5926","_ref_5928","_ref_5934","_ref_5944","_ref_5951","_ref_5957","_ref_6099","_ref_6100","_ref_6120","_ref_6122","_ref_6159","_ref_6193","_ref_6202","_ref_6205","_ref_6217","_ref_6219","_ref_6227","_ref_6236","_ref_6244","_ref_6245","_ref_6249","_ref_6254","_ref_6270","_ref_6273","_ref_6289","_ref_6294","_ref_6296","_ref_6298","_ref_6304","_ref_6307","_ref_6309","_ref_6344","_ref_6358","_ref_6374","_ref_6385","_ref_6402","_ref_6406","_ref_6408","_ref_6428","_ref_6429","_ref_6440","_ref_6454","_ref_6461","_ref_6467","_ref_6472","_ref_6480","_ref_6490","_ref_6500","_ref_6511","_ref_6522","_ref_6533","_ref_6535","_ref_6540","_ref_6543","_ref_6544","_ref_6555","_ref_6557","_ref_6564","_ref_6573","_ref_6582","_ref_6588","_ref_6591","_ref_6599","_ref_6602","_ref_6610","_ref_6611","_ref_6627","_ref_6628","_ref_6634","_ref_6647","_ref_6651","_ref_6657","_ref_6666","_ref_6669","_ref_6676","_ref_6678","_ref_6696","_ref_6697","_ref_6700","_ref_6713","_ref_6717","_ref_6720","_ref_6721","_ref_6727","_ref_6728","_ref_6729","_ref_6735","_ref_6742","_ref_6743","_ref_6754","_ref_6755","_ref_6762","_ref_6799","_ref_6835","_ref_6844","_ref_6856","_ref_6915","_ref_6921","_ref_6927","_ref_6960","_ref_6983","_ref_7017","_ref_7020","_ref_7115","_ref_7122","_ref_7717","_ref_7732","_ref_7733","_ref_7735","_ref_7750","_ref_7753","_ref_7755","_ref_7758","_ref_7768","_ref_7778","_ref_7782","_ref_7813","_ref_8646","_ref_8651","_ref_8673","_ref_8681","_ref_8683"],"key":"ToString ( argument )"},{"type":"table","id":"table-13","number":12,"caption":"Table 12: ToObject Conversions","referencingIds":["_ref_144"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 12: ToObject Conversions"},{"type":"op","aoid":"ToObject","refId":"sec-toobject","location":"","referencingIds":[],"key":"ToObject"},{"type":"clause","id":"sec-toobject","aoid":"ToObject","title":"ToObject ( argument )","titleHTML":"ToObject ( <var>argument</var> )","number":"7.1.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1304","_ref_1323","_ref_1502","_ref_1518","_ref_1607","_ref_1735","_ref_2456","_ref_2457","_ref_3398","_ref_3852","_ref_3907","_ref_4892","_ref_4896","_ref_4898","_ref_4907","_ref_4918","_ref_4934","_ref_4937","_ref_4945","_ref_4950","_ref_4958","_ref_4968","_ref_4974","_ref_4977","_ref_4980","_ref_4982","_ref_4988","_ref_5043","_ref_5062","_ref_5695","_ref_5779","_ref_5780","_ref_5889","_ref_6368","_ref_6396","_ref_6415","_ref_6434","_ref_6436","_ref_6445","_ref_6456","_ref_6468","_ref_6476","_ref_6484","_ref_6501","_ref_6507","_ref_6516","_ref_6527","_ref_6537","_ref_6546","_ref_6549","_ref_6559","_ref_6569","_ref_6577","_ref_6584","_ref_6595","_ref_6606","_ref_6622","_ref_6636","_ref_6653","_ref_6663","_ref_6703","_ref_6737","_ref_6746","_ref_6751","_ref_6764","_ref_6840","_ref_6980","_ref_8624","_ref_8625","_ref_8626","_ref_8627","_ref_8654","_ref_8658","_ref_8662","_ref_8666","_ref_8669"],"key":"ToObject ( argument )"},{"type":"op","aoid":"ToPropertyKey","refId":"sec-topropertykey","location":"","referencingIds":[],"key":"ToPropertyKey"},{"type":"clause","id":"sec-topropertykey","aoid":"ToPropertyKey","title":"ToPropertyKey ( argument )","titleHTML":"ToPropertyKey ( <var>argument</var> )","number":"7.1.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3204","_ref_3275","_ref_3328","_ref_3488","_ref_4915","_ref_4932","_ref_4935","_ref_4973","_ref_4979","_ref_8352","_ref_8355","_ref_8357","_ref_8359","_ref_8363","_ref_8369","_ref_8660","_ref_8664","_ref_8667","_ref_8670"],"key":"ToPropertyKey ( argument )"},{"type":"op","aoid":"ToLength","refId":"sec-tolength","location":"","referencingIds":[],"key":"ToLength"},{"type":"clause","id":"sec-tolength","aoid":"ToLength","title":"ToLength ( argument )","titleHTML":"ToLength ( <var>argument</var> )","number":"7.1.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1516","_ref_1686","_ref_5782","_ref_5856","_ref_5861","_ref_6136","_ref_6207","_ref_6229","_ref_6233","_ref_6284","_ref_6290","_ref_6369","_ref_6400","_ref_6416","_ref_6437","_ref_6446","_ref_6457","_ref_6469","_ref_6477","_ref_6485","_ref_6496","_ref_6502","_ref_6508","_ref_6517","_ref_6528","_ref_6538","_ref_6550","_ref_6560","_ref_6570","_ref_6578","_ref_6585","_ref_6596","_ref_6607","_ref_6623","_ref_6637","_ref_6654","_ref_6664","_ref_6704","_ref_6738","_ref_6752","_ref_6795","_ref_6841","_ref_6981","_ref_7119","_ref_7729","_ref_7747","_ref_7810"],"key":"ToLength ( argument )"},{"type":"op","aoid":"CanonicalNumericIndexString","refId":"sec-canonicalnumericindexstring","location":"","referencingIds":[],"key":"CanonicalNumericIndexString"},{"type":"clause","id":"sec-canonicalnumericindexstring","aoid":"CanonicalNumericIndexString","title":"CanonicalNumericIndexString ( argument )","titleHTML":"CanonicalNumericIndexString ( <var>argument</var> )","number":"7.1.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_36","_ref_2742","_ref_2828","_ref_2836","_ref_2846","_ref_2856","_ref_2864"],"key":"CanonicalNumericIndexString ( argument )"},{"type":"op","aoid":"ToIndex","refId":"sec-toindex","location":"","referencingIds":[],"key":"ToIndex"},{"type":"clause","id":"sec-toindex","aoid":"ToIndex","title":"ToIndex ( value )","titleHTML":"ToIndex ( <var>value</var> )","number":"7.1.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7076","_ref_7130","_ref_7132","_ref_7438","_ref_7484","_ref_7512","_ref_7518","_ref_7528","_ref_7530","_ref_7576"],"key":"ToIndex ( value )"},{"type":"clause","id":"sec-type-conversion","aoid":null,"title":"Type Conversion","titleHTML":"Type Conversion","number":"7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_35"],"key":"Type Conversion"},{"type":"table","id":"table-14","number":13,"caption":"Table 13: RequireObjectCoercible Results","referencingIds":["_ref_149"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 13: RequireObjectCoercible Results"},{"type":"op","aoid":"RequireObjectCoercible","refId":"sec-requireobjectcoercible","location":"","referencingIds":[],"key":"RequireObjectCoercible"},{"type":"clause","id":"sec-requireobjectcoercible","aoid":"RequireObjectCoercible","title":"RequireObjectCoercible ( argument )","titleHTML":"RequireObjectCoercible ( <var>argument</var> )","number":"7.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1519","_ref_3274","_ref_3279","_ref_3349","_ref_3539","_ref_3541","_ref_3564","_ref_3566","_ref_3696","_ref_4923","_ref_4965","_ref_5796","_ref_5799","_ref_5802","_ref_5806","_ref_5812","_ref_5819","_ref_5827","_ref_5834","_ref_5842","_ref_5845","_ref_5851","_ref_5854","_ref_5859","_ref_5864","_ref_5867","_ref_5892","_ref_5898","_ref_5907","_ref_5925","_ref_5933","_ref_5943","_ref_5950","_ref_5956","_ref_8655","_ref_8672","_ref_8680"],"key":"RequireObjectCoercible ( argument )"},{"type":"op","aoid":"IsArray","refId":"sec-isarray","location":"","referencingIds":[],"key":"IsArray"},{"type":"clause","id":"sec-isarray","aoid":"IsArray","title":"IsArray ( argument )","titleHTML":"IsArray ( <var>argument</var> )","number":"7.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1523","_ref_2676","_ref_4983","_ref_6380","_ref_6413","_ref_6495","_ref_7728","_ref_7745","_ref_7785"],"key":"IsArray ( argument )"},{"type":"op","aoid":"IsCallable","refId":"sec-iscallable","location":"","referencingIds":[],"key":"IsCallable"},{"type":"clause","id":"sec-iscallable","aoid":"IsCallable","title":"IsCallable ( argument )","titleHTML":"IsCallable ( <var>argument</var> )","number":"7.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1378","_ref_1381","_ref_1444","_ref_1641","_ref_1655","_ref_1700","_ref_2400","_ref_3093","_ref_3318","_ref_3493","_ref_5036","_ref_5045","_ref_5057","_ref_5068","_ref_5872","_ref_6129","_ref_6218","_ref_6350","_ref_6439","_ref_6459","_ref_6471","_ref_6479","_ref_6504","_ref_6510","_ref_6562","_ref_6587","_ref_6598","_ref_6656","_ref_6662","_ref_6748","_ref_6831","_ref_6919","_ref_6958","_ref_7029","_ref_7156","_ref_7193","_ref_7241","_ref_7269","_ref_7337","_ref_7720","_ref_7744","_ref_7773","_ref_7784","_ref_8106","_ref_8121","_ref_8122","_ref_8158","_ref_8256","_ref_8265","_ref_8276","_ref_8291","_ref_8292","_ref_8343","_ref_8659","_ref_8663"],"key":"IsCallable ( argument )"},{"type":"op","aoid":"IsConstructor","refId":"sec-isconstructor","location":"","referencingIds":[],"key":"IsConstructor"},{"type":"clause","id":"sec-isconstructor","aoid":"IsConstructor","title":"IsConstructor ( argument )","titleHTML":"IsConstructor ( <var>argument</var> )","number":"7.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1661","_ref_1663","_ref_1714","_ref_2533","_ref_2636","_ref_2641","_ref_2679","_ref_2688","_ref_3082","_ref_3094","_ref_3289","_ref_3346","_ref_4267","_ref_6352","_ref_6371","_ref_6382","_ref_6830","_ref_6854","_ref_7377","_ref_8116","_ref_8183","_ref_8216","_ref_8255","_ref_8268","_ref_8279","_ref_8347","_ref_8348"],"key":"IsConstructor ( argument )"},{"type":"op","aoid":"IsExtensible","refId":"sec-isextensible-o","location":"","referencingIds":[],"key":"IsExtensible"},{"type":"clause","id":"sec-isextensible-o","aoid":"IsExtensible","title":"IsExtensible ( O )","titleHTML":"IsExtensible ( <var>O</var> )","number":"7.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1673","_ref_1979","_ref_1982","_ref_1989","_ref_2325","_ref_2954","_ref_2965","_ref_2988","_ref_2989","_ref_3003","_ref_3014","_ref_3056","_ref_3537","_ref_4953","_ref_6670"],"key":"IsExtensible ( O )"},{"type":"op","aoid":"IsInteger","refId":"sec-isinteger","location":"","referencingIds":[],"key":"IsInteger"},{"type":"clause","id":"sec-isinteger","aoid":"IsInteger","title":"IsInteger ( argument )","titleHTML":"IsInteger ( <var>argument</var> )","number":"7.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2743","_ref_2838","_ref_2847","_ref_2880","_ref_2887"],"key":"IsInteger ( argument )"},{"type":"op","aoid":"IsPropertyKey","refId":"sec-ispropertykey","location":"","referencingIds":[],"key":"IsPropertyKey"},{"type":"clause","id":"sec-ispropertykey","aoid":"IsPropertyKey","title":"IsPropertyKey ( argument )","titleHTML":"IsPropertyKey ( <var>argument</var> )","number":"7.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1603","_ref_1606","_ref_1611","_ref_1617","_ref_1621","_ref_1625","_ref_1631","_ref_1635","_ref_1639","_ref_1645","_ref_1649","_ref_1695","_ref_2318","_ref_2329","_ref_2353","_ref_2358","_ref_2367","_ref_2372","_ref_2382","_ref_2659","_ref_2714","_ref_2720","_ref_2740","_ref_2825","_ref_2833","_ref_2843","_ref_2854","_ref_2862","_ref_2915","_ref_2927","_ref_2982","_ref_2996","_ref_3008","_ref_3018","_ref_3031","_ref_3044"],"key":"IsPropertyKey ( argument )"},{"type":"op","aoid":"IsRegExp","refId":"sec-isregexp","location":"","referencingIds":[],"key":"IsRegExp"},{"type":"clause","id":"sec-isregexp","aoid":"IsRegExp","title":"IsRegExp ( argument )","titleHTML":"IsRegExp ( <var>argument</var> )","number":"7.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5814","_ref_5821","_ref_5927","_ref_6088","_ref_6211"],"key":"IsRegExp ( argument )"},{"type":"op","aoid":"IsStringPrefix","refId":"sec-isstringprefix","location":"","referencingIds":[],"key":"IsStringPrefix"},{"type":"clause","id":"sec-isstringprefix","aoid":"IsStringPrefix","title":"IsStringPrefix ( p, q )","titleHTML":"IsStringPrefix ( <var>p</var>, <var>q</var> )","number":"7.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1572","_ref_1573"],"key":"IsStringPrefix ( p, q )"},{"type":"op","aoid":"SameValue","refId":"sec-samevalue","location":"","referencingIds":[],"key":"SameValue"},{"type":"clause","id":"sec-samevalue","aoid":"SameValue","title":"SameValue ( x, y )","titleHTML":"SameValue ( <var>x</var>, <var>y</var> )","number":"7.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_974","_ref_975","_ref_976","_ref_977","_ref_981","_ref_986","_ref_989","_ref_992","_ref_1512","_ref_1555","_ref_1599","_ref_1705","_ref_1738","_ref_2312","_ref_2313","_ref_2346","_ref_2349","_ref_2350","_ref_2637","_ref_2683","_ref_2777","_ref_2908","_ref_2944","_ref_2955","_ref_2966","_ref_2973","_ref_3024","_ref_3038","_ref_3296","_ref_3978","_ref_4602","_ref_4611","_ref_4615","_ref_4619","_ref_4622","_ref_4630","_ref_4951","_ref_4978","_ref_5103","_ref_5113","_ref_5771","_ref_6091","_ref_6168","_ref_6186","_ref_6190","_ref_6214","_ref_6256","_ref_6260","_ref_6265","_ref_6301","_ref_6314","_ref_6997","_ref_7001","_ref_7016","_ref_7101","_ref_7313","_ref_7318","_ref_7323","_ref_7328","_ref_7351","_ref_7356","_ref_7360","_ref_7370","_ref_7468","_ref_8099","_ref_8242"],"key":"SameValue ( x, y )"},{"type":"op","aoid":"SameValueZero","refId":"sec-samevaluezero","location":"","referencingIds":[],"key":"SameValueZero"},{"type":"clause","id":"sec-samevaluezero","aoid":"SameValueZero","title":"SameValueZero ( x, y )","titleHTML":"SameValueZero ( <var>x</var>, <var>y</var> )","number":"7.2.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1517","_ref_6515","_ref_6523","_ref_6524","_ref_7147","_ref_7190","_ref_7200","_ref_7204","_ref_7209","_ref_7233","_ref_7258","_ref_7266","_ref_7274"],"key":"SameValueZero ( x, y )"},{"type":"op","aoid":"SameValueNonNumber","refId":"sec-samevaluenonnumber","location":"","referencingIds":[],"key":"SameValueNonNumber"},{"type":"clause","id":"sec-samevaluenonnumber","aoid":"SameValueNonNumber","title":"SameValueNonNumber ( x, y )","titleHTML":"SameValueNonNumber ( <var>x</var>, <var>y</var> )","number":"7.2.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1549","_ref_1554","_ref_1598"],"key":"SameValueNonNumber ( x, y )"},{"type":"op","aoid":"Abstract Relational Comparison","refId":"sec-abstract-relational-comparison","location":"","referencingIds":[],"key":"Abstract Relational Comparison"},{"type":"clause","id":"sec-abstract-relational-comparison","aoid":"Abstract Relational Comparison","title":"Abstract Relational Comparison","titleHTML":"Abstract Relational Comparison","number":"7.2.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3448","_ref_3467","_ref_3471","_ref_3475","_ref_3479","_ref_5244","_ref_5246","_ref_6698","_ref_6699"],"key":"Abstract Relational Comparison"},{"type":"op","aoid":"Abstract Equality Comparison","refId":"sec-abstract-equality-comparison","location":"","referencingIds":[],"key":"Abstract Equality Comparison"},{"type":"clause","id":"sec-abstract-equality-comparison","aoid":"Abstract Equality Comparison","title":"Abstract Equality Comparison","titleHTML":"Abstract Equality Comparison","number":"7.2.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_770","_ref_773","_ref_3497","_ref_3500"],"key":"Abstract Equality Comparison"},{"type":"op","aoid":"Strict Equality Comparison","refId":"sec-strict-equality-comparison","location":"","referencingIds":[],"key":"Strict Equality Comparison"},{"type":"clause","id":"sec-strict-equality-comparison","aoid":"Strict Equality Comparison","title":"Strict Equality Comparison","titleHTML":"Strict Equality Comparison","number":"7.2.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1550","_ref_1578","_ref_3503","_ref_3506","_ref_3960","_ref_6525","_ref_6526","_ref_6536","_ref_6548","_ref_6558"],"key":"Strict Equality Comparison"},{"type":"clause","id":"sec-testing-and-comparison-operations","aoid":null,"title":"Testing and Comparison Operations","titleHTML":"Testing and Comparison Operations","number":"7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Testing and Comparison Operations"},{"type":"op","aoid":"Get","refId":"sec-get-o-p","location":"","referencingIds":[],"key":"Get"},{"type":"clause","id":"sec-get-o-p","aoid":"Get","title":"Get ( O, P )","titleHTML":"Get ( <var>O</var>, <var>P</var> )","number":"7.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1367","_ref_1370","_ref_1372","_ref_1375","_ref_1377","_ref_1380","_ref_1443","_ref_1539","_ref_1687","_ref_1690","_ref_1703","_ref_1711","_ref_1713","_ref_1720","_ref_1739","_ref_1757","_ref_1760","_ref_1867","_ref_1870","_ref_1890","_ref_2401","_ref_2678","_ref_2686","_ref_2760","_ref_2765","_ref_2774","_ref_4268","_ref_4900","_ref_4910","_ref_4985","_ref_5049","_ref_5053","_ref_5147","_ref_5149","_ref_5781","_ref_5783","_ref_5787","_ref_5890","_ref_6090","_ref_6093","_ref_6094","_ref_6128","_ref_6137","_ref_6173","_ref_6175","_ref_6177","_ref_6179","_ref_6181","_ref_6183","_ref_6195","_ref_6198","_ref_6203","_ref_6208","_ref_6221","_ref_6223","_ref_6228","_ref_6230","_ref_6234","_ref_6237","_ref_6239","_ref_6243","_ref_6246","_ref_6255","_ref_6259","_ref_6262","_ref_6274","_ref_6285","_ref_6291","_ref_6293","_ref_6308","_ref_6310","_ref_6370","_ref_6375","_ref_6401","_ref_6404","_ref_6411","_ref_6417","_ref_6431","_ref_6438","_ref_6442","_ref_6447","_ref_6458","_ref_6463","_ref_6470","_ref_6473","_ref_6478","_ref_6481","_ref_6486","_ref_6492","_ref_6497","_ref_6503","_ref_6509","_ref_6513","_ref_6518","_ref_6521","_ref_6529","_ref_6534","_ref_6539","_ref_6542","_ref_6551","_ref_6556","_ref_6561","_ref_6566","_ref_6571","_ref_6574","_ref_6579","_ref_6586","_ref_6590","_ref_6593","_ref_6597","_ref_6601","_ref_6604","_ref_6608","_ref_6613","_ref_6615","_ref_6624","_ref_6626","_ref_6630","_ref_6638","_ref_6649","_ref_6655","_ref_6659","_ref_6665","_ref_6705","_ref_6715","_ref_6723","_ref_6731","_ref_6739","_ref_6741","_ref_6747","_ref_6753","_ref_6757","_ref_6796","_ref_6800","_ref_6842","_ref_6845","_ref_6922","_ref_6961","_ref_6982","_ref_6985","_ref_7018","_ref_7120","_ref_7123","_ref_7154","_ref_7164","_ref_7167","_ref_7240","_ref_7302","_ref_7336","_ref_7726","_ref_7730","_ref_7748","_ref_7749","_ref_7770","_ref_7772","_ref_7811","_ref_8103","_ref_8241"],"key":"Get ( O, P )"},{"type":"op","aoid":"GetV","refId":"sec-getv","location":"","referencingIds":[],"key":"GetV"},{"type":"clause","id":"sec-getv","aoid":"GetV","title":"GetV ( V, P )","titleHTML":"GetV ( <var>V</var>, <var>P</var> )","number":"7.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1640","_ref_1697","_ref_1749","_ref_3568","_ref_3614","_ref_3755","_ref_3758"],"key":"GetV ( V, P )"},{"type":"op","aoid":"Set","refId":"sec-set-o-p-v-throw","location":"","referencingIds":[],"key":"Set"},{"type":"clause","id":"sec-set-o-p-v-throw","aoid":"Set","title":"Set ( O, P, V, Throw )","titleHTML":"Set ( <var>O</var>, <var>P</var>, <var>V</var>, <var>Throw</var> )","number":"7.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1318","_ref_1886","_ref_1997","_ref_2768","_ref_2779","_ref_3182","_ref_3187","_ref_3192","_ref_4901","_ref_6107","_ref_6138","_ref_6139","_ref_6142","_ref_6199","_ref_6210","_ref_6224","_ref_6232","_ref_6257","_ref_6261","_ref_6281","_ref_6337","_ref_6360","_ref_6378","_ref_6387","_ref_6409","_ref_6432","_ref_6455","_ref_6572","_ref_6576","_ref_6581","_ref_6583","_ref_6616","_ref_6617","_ref_6618","_ref_6621","_ref_6625","_ref_6631","_ref_6635","_ref_6652","_ref_6718","_ref_6724","_ref_6732","_ref_6734","_ref_6736","_ref_6758","_ref_6761","_ref_6763","_ref_6837","_ref_6847","_ref_6857","_ref_6916","_ref_6926","_ref_6963","_ref_7019","_ref_7116","_ref_7124"],"key":"Set ( O, P, V, Throw )"},{"type":"op","aoid":"CreateDataProperty","refId":"sec-createdataproperty","location":"","referencingIds":[],"key":"CreateDataProperty"},{"type":"clause","id":"sec-createdataproperty","aoid":"CreateDataProperty","title":"CreateDataProperty ( O, P, V )","titleHTML":"CreateDataProperty ( <var>O</var>, <var>P</var>, <var>V</var> )","number":"7.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1355","_ref_1356","_ref_1357","_ref_1358","_ref_1359","_ref_1360","_ref_1362","_ref_1626","_ref_1679","_ref_1740","_ref_1790","_ref_1791","_ref_2376","_ref_2788","_ref_2802","_ref_3161","_ref_3167","_ref_3176","_ref_3180","_ref_3608","_ref_3741","_ref_3751","_ref_4942","_ref_5914","_ref_5916","_ref_5919","_ref_5921","_ref_6147","_ref_6148","_ref_6149","_ref_6151","_ref_6158","_ref_6160","_ref_6204","_ref_6280","_ref_6288","_ref_6295","_ref_6297","_ref_6334","_ref_6345","_ref_6769","_ref_6770","_ref_6771","_ref_6772","_ref_6773","_ref_6774","_ref_6775","_ref_6776","_ref_6777","_ref_6778","_ref_7723","_ref_7734","_ref_7736","_ref_7739","_ref_7740","_ref_7765","_ref_8383","_ref_8384"],"key":"CreateDataProperty ( O, P, V )"},{"type":"op","aoid":"CreateMethodProperty","refId":"sec-createmethodproperty","location":"","referencingIds":[],"key":"CreateMethodProperty"},{"type":"clause","id":"sec-createmethodproperty","aoid":"CreateMethodProperty","title":"CreateMethodProperty ( O, P, V )","titleHTML":"CreateMethodProperty ( <var>O</var>, <var>P</var>, <var>V</var> )","number":"7.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4279"],"key":"CreateMethodProperty ( O, P, V )"},{"type":"op","aoid":"CreateDataPropertyOrThrow","refId":"sec-createdatapropertyorthrow","location":"","referencingIds":[],"key":"CreateDataPropertyOrThrow"},{"type":"clause","id":"sec-createdatapropertyorthrow","aoid":"CreateDataPropertyOrThrow","title":"CreateDataPropertyOrThrow ( O, P, V )","titleHTML":"CreateDataPropertyOrThrow ( <var>O</var>, <var>P</var>, <var>V</var> )","number":"7.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3211","_ref_3217","_ref_4933","_ref_6365","_ref_6377","_ref_6386","_ref_6405","_ref_6407","_ref_6466","_ref_6499","_ref_6568","_ref_6650","_ref_6716","_ref_8733"],"key":"CreateDataPropertyOrThrow ( O, P, V )"},{"type":"op","aoid":"DefinePropertyOrThrow","refId":"sec-definepropertyorthrow","location":"","referencingIds":[],"key":"DefinePropertyOrThrow"},{"type":"clause","id":"sec-definepropertyorthrow","aoid":"DefinePropertyOrThrow","title":"DefinePropertyOrThrow ( O, P, desc )","titleHTML":"DefinePropertyOrThrow ( <var>O</var>, <var>P</var>, <var>desc</var> )","number":"7.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1667","_ref_1669","_ref_1874","_ref_1875","_ref_1995","_ref_2099","_ref_2525","_ref_2526","_ref_2537","_ref_2538","_ref_2557","_ref_2563","_ref_2737","_ref_2787","_ref_2790","_ref_2792","_ref_2804","_ref_2809","_ref_2811","_ref_4097","_ref_4104","_ref_4111","_ref_4124","_ref_4129","_ref_4139","_ref_4141","_ref_4148","_ref_4156","_ref_4216","_ref_4222","_ref_4231","_ref_4233","_ref_4240","_ref_4248","_ref_4319","_ref_4913","_ref_4917","_ref_5019","_ref_5022","_ref_5140","_ref_5160","_ref_6098","_ref_8661","_ref_8665"],"key":"DefinePropertyOrThrow ( O, P, desc )"},{"type":"op","aoid":"DeletePropertyOrThrow","refId":"sec-deletepropertyorthrow","location":"","referencingIds":[],"key":"DeletePropertyOrThrow"},{"type":"clause","id":"sec-deletepropertyorthrow","aoid":"DeletePropertyOrThrow","title":"DeletePropertyOrThrow ( O, P )","titleHTML":"DeletePropertyOrThrow ( <var>O</var>, <var>P</var> )","number":"7.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6433","_ref_6575","_ref_6619","_ref_6620","_ref_6632","_ref_6633","_ref_6680","_ref_6684","_ref_6689","_ref_6725","_ref_6726","_ref_6733","_ref_6759"],"key":"DeletePropertyOrThrow ( O, P )"},{"type":"op","aoid":"GetMethod","refId":"sec-getmethod","location":"","referencingIds":[],"key":"GetMethod"},{"type":"clause","id":"sec-getmethod","aoid":"GetMethod","title":"GetMethod ( V, P )","titleHTML":"GetMethod ( <var>V</var>, <var>P</var> )","number":"7.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1434","_ref_1742","_ref_1743","_ref_1746","_ref_1767","_ref_1778","_ref_2951","_ref_2962","_ref_2970","_ref_2977","_ref_2985","_ref_2999","_ref_3011","_ref_3021","_ref_3034","_ref_3047","_ref_3053","_ref_3072","_ref_3083","_ref_3490","_ref_4179","_ref_4192","_ref_5846","_ref_5868","_ref_5893","_ref_5908","_ref_6351","_ref_6832","_ref_7112","_ref_7839","_ref_7852"],"key":"GetMethod ( V, P )"},{"type":"op","aoid":"HasProperty","refId":"sec-hasproperty","location":"","referencingIds":[],"key":"HasProperty"},{"type":"clause","id":"sec-hasproperty","aoid":"HasProperty","title":"HasProperty ( O, P )","titleHTML":"HasProperty ( <var>O</var>, <var>P</var> )","number":"7.3.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1365","_ref_1368","_ref_1371","_ref_1373","_ref_1376","_ref_1379","_ref_1866","_ref_1889","_ref_3487","_ref_6403","_ref_6430","_ref_6441","_ref_6462","_ref_6491","_ref_6512","_ref_6532","_ref_6554","_ref_6565","_ref_6589","_ref_6592","_ref_6600","_ref_6603","_ref_6612","_ref_6614","_ref_6629","_ref_6648","_ref_6658","_ref_6668","_ref_6714","_ref_6722","_ref_6730","_ref_6756"],"key":"HasProperty ( O, P )"},{"type":"op","aoid":"HasOwnProperty","refId":"sec-hasownproperty","location":"","referencingIds":[],"key":"HasOwnProperty"},{"type":"clause","id":"sec-hasownproperty","aoid":"HasOwnProperty","title":"HasOwnProperty ( O, P )","titleHTML":"HasOwnProperty ( <var>O</var>, <var>P</var> )","number":"7.3.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1964","_ref_1978","_ref_1988","_ref_2759","_ref_2763","_ref_2772","_ref_2778","_ref_2783","_ref_4975","_ref_5048","_ref_6681","_ref_6683","_ref_6686"],"key":"HasOwnProperty ( O, P )"},{"type":"op","aoid":"Call","refId":"sec-call","location":"","referencingIds":[],"key":"Call"},{"type":"clause","id":"sec-call","aoid":"Call","title":"Call ( F, V [ , argumentsList ] )","titleHTML":"Call ( <var>F</var>, <var>V</var> [ , <var>argumentsList</var> ] )","number":"7.3.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1435","_ref_1445","_ref_1698","_ref_1747","_ref_1751","_ref_1752","_ref_1769","_ref_1780","_ref_2362","_ref_2379","_ref_2632","_ref_2952","_ref_2964","_ref_2972","_ref_2979","_ref_2986","_ref_3002","_ref_3013","_ref_3022","_ref_3036","_ref_3049","_ref_3054","_ref_3073","_ref_3075","_ref_3086","_ref_3320","_ref_3492","_ref_3859","_ref_4171","_ref_4180","_ref_4195","_ref_4311","_ref_4354","_ref_5038","_ref_5041","_ref_5060","_ref_5847","_ref_5869","_ref_5874","_ref_5894","_ref_5909","_ref_6130","_ref_6248","_ref_6362","_ref_6376","_ref_6444","_ref_6465","_ref_6475","_ref_6483","_ref_6494","_ref_6514","_ref_6567","_ref_6594","_ref_6605","_ref_6661","_ref_6695","_ref_6750","_ref_6836","_ref_6846","_ref_6924","_ref_6962","_ref_7040","_ref_7170","_ref_7196","_ref_7245","_ref_7271","_ref_7341","_ref_7741","_ref_7774","_ref_7775","_ref_7831","_ref_7838","_ref_7842","_ref_7843","_ref_7846","_ref_7851","_ref_7854","_ref_7855","_ref_7858","_ref_8006","_ref_8011","_ref_8055","_ref_8082","_ref_8140","_ref_8145","_ref_8146","_ref_8149","_ref_8151","_ref_8163","_ref_8165","_ref_8192","_ref_8202","_ref_8229","_ref_8244","_ref_8266","_ref_8277","_ref_8328","_ref_8329","_ref_8331","_ref_8346"],"key":"Call ( F, V [ , argumentsList ] )"},{"type":"op","aoid":"Construct","refId":"sec-construct","location":"","referencingIds":[],"key":"Construct"},{"type":"clause","id":"sec-construct","aoid":"Construct","title":"Construct ( F [ , argumentsList [ , newTarget ] ] )","titleHTML":"Construct ( <var>F</var> [ , <var>argumentsList</var> [ , <var>newTarget</var> ] ] )","number":"7.3.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2638","_ref_2689","_ref_3084","_ref_3290","_ref_3339","_ref_6276","_ref_6353","_ref_6372","_ref_6383","_ref_7136","_ref_7465","_ref_7506","_ref_8120","_ref_8350"],"key":"Construct ( F [ , argumentsList [ , newTarget ] ] )"},{"type":"op","aoid":"SetIntegrityLevel","refId":"sec-setintegritylevel","location":"","referencingIds":[],"key":"SetIntegrityLevel"},{"type":"clause","id":"sec-setintegritylevel","aoid":"SetIntegrityLevel","title":"SetIntegrityLevel ( O, level )","titleHTML":"SetIntegrityLevel ( <var>O</var>, <var>level</var> )","number":"7.3.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3244","_ref_3245","_ref_4922","_ref_4964"],"key":"SetIntegrityLevel ( O, level )"},{"type":"op","aoid":"TestIntegrityLevel","refId":"sec-testintegritylevel","location":"","referencingIds":[],"key":"TestIntegrityLevel"},{"type":"clause","id":"sec-testintegritylevel","aoid":"TestIntegrityLevel","title":"TestIntegrityLevel ( O, level )","titleHTML":"TestIntegrityLevel ( <var>O</var>, <var>level</var> )","number":"7.3.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4955","_ref_4957"],"key":"TestIntegrityLevel ( O, level )"},{"type":"op","aoid":"CreateArrayFromList","refId":"sec-createarrayfromlist","location":"","referencingIds":[],"key":"CreateArrayFromList"},{"type":"clause","id":"sec-createarrayfromlist","aoid":"CreateArrayFromList","title":"CreateArrayFromList ( elements )","titleHTML":"CreateArrayFromList ( <var>elements</var> )","number":"7.3.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1722","_ref_3074","_ref_3085","_ref_4920","_ref_4949","_ref_4960","_ref_4970","_ref_6802","_ref_7228","_ref_7291","_ref_8191","_ref_8201","_ref_8366"],"key":"CreateArrayFromList ( elements )"},{"type":"op","aoid":"CreateListFromArrayLike","refId":"sec-createlistfromarraylike","location":"","referencingIds":[],"key":"CreateListFromArrayLike"},{"type":"clause","id":"sec-createlistfromarraylike","aoid":"CreateListFromArrayLike","title":"CreateListFromArrayLike ( obj [ , elementTypes ] )","titleHTML":"CreateListFromArrayLike ( <var>obj</var> [ , <var>elementTypes</var> ] )","number":"7.3.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3055","_ref_5039","_ref_8344","_ref_8349"],"key":"CreateListFromArrayLike ( obj [ , elementTypes ] )"},{"type":"op","aoid":"Invoke","refId":"sec-invoke","location":"","referencingIds":[],"key":"Invoke"},{"type":"clause","id":"sec-invoke","aoid":"Invoke","title":"Invoke ( V, P [ , argumentsList ] )","titleHTML":"Invoke ( <var>V</var>, <var>P</var> [ , <var>argumentsList</var> ] )","number":"7.3.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4981","_ref_5698","_ref_5850","_ref_5897","_ref_6744","_ref_8196","_ref_8199","_ref_8225","_ref_8226","_ref_8249","_ref_8259","_ref_8270","_ref_8281"],"key":"Invoke ( V, P [ , argumentsList ] )"},{"type":"op","aoid":"OrdinaryHasInstance","refId":"sec-ordinaryhasinstance","location":"","referencingIds":[],"key":"OrdinaryHasInstance"},{"type":"clause","id":"sec-ordinaryhasinstance","aoid":"OrdinaryHasInstance","title":"OrdinaryHasInstance ( C, O )","titleHTML":"OrdinaryHasInstance ( <var>C</var>, <var>O</var> )","number":"7.3.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3494","_ref_5069"],"key":"OrdinaryHasInstance ( C, O )"},{"type":"op","aoid":"SpeciesConstructor","refId":"sec-speciesconstructor","location":"","referencingIds":[],"key":"SpeciesConstructor"},{"type":"clause","id":"sec-speciesconstructor","aoid":"SpeciesConstructor","title":"SpeciesConstructor ( O, defaultConstructor )","titleHTML":"SpeciesConstructor ( <var>O</var>, <var>defaultConstructor</var> )","number":"7.3.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6271","_ref_7098","_ref_7141","_ref_7463","_ref_7504","_ref_8252","_ref_8283"],"key":"SpeciesConstructor ( O, defaultConstructor )"},{"type":"op","aoid":"EnumerableOwnPropertyNames","refId":"sec-enumerableownpropertynames","location":"","referencingIds":[],"key":"EnumerableOwnPropertyNames"},{"type":"clause","id":"sec-enumerableownpropertynames","aoid":"EnumerableOwnPropertyNames","title":"EnumerableOwnPropertyNames ( O, kind )","titleHTML":"EnumerableOwnPropertyNames ( <var>O</var>, <var>kind</var> )","number":"7.3.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4919","_ref_4959","_ref_4969","_ref_7737","_ref_7798"],"key":"EnumerableOwnPropertyNames ( O, kind )"},{"type":"op","aoid":"GetFunctionRealm","refId":"sec-getfunctionrealm","location":"","referencingIds":[],"key":"GetFunctionRealm"},{"type":"clause","id":"sec-getfunctionrealm","aoid":"GetFunctionRealm","title":"GetFunctionRealm ( obj )","titleHTML":"GetFunctionRealm ( <var>obj</var> )","number":"7.3.22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1726","_ref_1728","_ref_2403","_ref_2681"],"key":"GetFunctionRealm ( obj )"},{"type":"op","aoid":"CopyDataProperties","refId":"sec-copydataproperties","location":"","referencingIds":[],"key":"CopyDataProperties"},{"type":"clause","id":"sec-copydataproperties","aoid":"CopyDataProperties","title":"CopyDataProperties ( target, source, excludedItems )","titleHTML":"CopyDataProperties ( <var>target</var>, <var>source</var>, <var>excludedItems</var> )","number":"7.3.23","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3207","_ref_3578","_ref_3708"],"key":"CopyDataProperties ( target, source, excludedItems )"},{"type":"clause","id":"sec-operations-on-objects","aoid":null,"title":"Operations on Objects","titleHTML":"Operations on Objects","number":"7.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Operations on Objects"},{"type":"op","aoid":"GetIterator","refId":"sec-getiterator","location":"","referencingIds":[],"key":"GetIterator"},{"type":"clause","id":"sec-getiterator","aoid":"GetIterator","title":"GetIterator ( obj [ , hint [ , method ] ] )","titleHTML":"GetIterator ( <var>obj</var> [ , <var>hint</var> [ , <var>method</var> ] ] )","number":"7.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1744","_ref_3173","_ref_3358","_ref_3364","_ref_3543","_ref_3546","_ref_3548","_ref_3553","_ref_3555","_ref_3697","_ref_3855","_ref_4169","_ref_6355","_ref_6848","_ref_7158","_ref_7242","_ref_7338","_ref_7826","_ref_7865","_ref_8173","_ref_8206"],"key":"GetIterator ( obj [ , hint [ , method ] ] )"},{"type":"op","aoid":"IteratorNext","refId":"sec-iteratornext","location":"","referencingIds":[],"key":"IteratorNext"},{"type":"clause","id":"sec-iteratornext","aoid":"IteratorNext","title":"IteratorNext ( iteratorRecord [ , value ] )","titleHTML":"IteratorNext ( <var>iteratorRecord</var> [ , <var>value</var> ] )","number":"7.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1761","_ref_7832"],"key":"IteratorNext ( iteratorRecord [ , value ] )"},{"type":"op","aoid":"IteratorComplete","refId":"sec-iteratorcomplete","location":"","referencingIds":[],"key":"IteratorComplete"},{"type":"clause","id":"sec-iteratorcomplete","aoid":"IteratorComplete","title":"IteratorComplete ( iterResult )","titleHTML":"IteratorComplete ( <var>iterResult</var> )","number":"7.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1762","_ref_3862","_ref_4174","_ref_4183","_ref_4198","_ref_7866"],"key":"IteratorComplete ( iterResult )"},{"type":"op","aoid":"IteratorValue","refId":"sec-iteratorvalue","location":"","referencingIds":[],"key":"IteratorValue"},{"type":"clause","id":"sec-iteratorvalue","aoid":"IteratorValue","title":"IteratorValue ( iterResult )","titleHTML":"IteratorValue ( <var>iterResult</var> )","number":"7.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3175","_ref_3360","_ref_3367","_ref_3592","_ref_3605","_ref_3717","_ref_3727","_ref_3738","_ref_3748","_ref_3864","_ref_4074","_ref_4175","_ref_4177","_ref_4184","_ref_4186","_ref_4199","_ref_4202","_ref_4344","_ref_6361","_ref_6851","_ref_7160","_ref_7244","_ref_7340","_ref_7868","_ref_8193","_ref_8222"],"key":"IteratorValue ( iterResult )"},{"type":"op","aoid":"IteratorStep","refId":"sec-iteratorstep","location":"","referencingIds":[],"key":"IteratorStep"},{"type":"clause","id":"sec-iteratorstep","aoid":"IteratorStep","title":"IteratorStep ( iteratorRecord )","titleHTML":"IteratorStep ( <var>iteratorRecord</var> )","number":"7.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3174","_ref_3359","_ref_3366","_ref_3580","_ref_3584","_ref_3589","_ref_3602","_ref_3714","_ref_3724","_ref_3733","_ref_3745","_ref_4071","_ref_4341","_ref_6359","_ref_6850","_ref_7159","_ref_7243","_ref_7339","_ref_8188","_ref_8219"],"key":"IteratorStep ( iteratorRecord )"},{"type":"op","aoid":"IteratorClose","refId":"sec-iteratorclose","location":"","referencingIds":[],"key":"IteratorClose"},{"type":"clause","id":"sec-iteratorclose","aoid":"IteratorClose","title":"IteratorClose ( iteratorRecord, completion )","titleHTML":"IteratorClose ( <var>iteratorRecord</var>, <var>completion</var> )","number":"7.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3544","_ref_3547","_ref_3552","_ref_3554","_ref_3557","_ref_3562","_ref_3698","_ref_3881","_ref_3889","_ref_4190","_ref_6357","_ref_6364","_ref_6367","_ref_7163","_ref_7166","_ref_7169","_ref_7172","_ref_7247","_ref_7343","_ref_8177","_ref_8210"],"key":"IteratorClose ( iteratorRecord, completion )"},{"type":"op","aoid":"AsyncIteratorClose","refId":"sec-asynciteratorclose","location":"","referencingIds":[],"key":"AsyncIteratorClose"},{"type":"clause","id":"sec-asynciteratorclose","aoid":"AsyncIteratorClose","title":"AsyncIteratorClose ( iteratorRecord, completion )","titleHTML":"AsyncIteratorClose ( <var>iteratorRecord</var>, <var>completion</var> )","number":"7.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3879","_ref_3888","_ref_4189"],"key":"AsyncIteratorClose ( iteratorRecord, completion )"},{"type":"op","aoid":"CreateIterResultObject","refId":"sec-createiterresultobject","location":"","referencingIds":[],"key":"CreateIterResultObject"},{"type":"clause","id":"sec-createiterresultobject","aoid":"CreateIterResultObject","title":"CreateIterResultObject ( value, done )","titleHTML":"CreateIterResultObject ( <var>value</var>, <var>done</var> )","number":"7.4.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1800","_ref_1801","_ref_4161","_ref_4166","_ref_5966","_ref_5967","_ref_5969","_ref_6793","_ref_6797","_ref_6798","_ref_6803","_ref_7223","_ref_7229","_ref_7230","_ref_7287","_ref_7290","_ref_7292","_ref_7293","_ref_7841","_ref_7862","_ref_7933","_ref_7938","_ref_7951","_ref_8005"],"key":"CreateIterResultObject ( value, done )"},{"type":"clause","id":"sec-listiterator-next","aoid":null,"title":"ListIterator next ( )","titleHTML":"ListIterator next ( )","number":"7.4.9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_153"],"key":"ListIterator next ( )"},{"type":"op","aoid":"CreateListIteratorRecord","refId":"sec-createlistiteratorRecord","location":"","referencingIds":[],"key":"CreateListIteratorRecord"},{"type":"clause","id":"sec-createlistiteratorRecord","aoid":"CreateListIteratorRecord","title":"CreateListIteratorRecord ( list )","titleHTML":"CreateListIteratorRecord ( <var>list</var> )","number":"7.4.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2579"],"key":"CreateListIteratorRecord ( list )"},{"type":"clause","id":"sec-operations-on-iterator-objects","aoid":null,"title":"Operations on Iterator Objects","titleHTML":"Operations on Iterator Objects","number":"7.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Operations on Iterator Objects"},{"type":"clause","id":"sec-abstract-operations","aoid":null,"title":"Abstract Operations","titleHTML":"Abstract Operations","number":"7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Abstract Operations"},{"type":"term","term":"Lexical Environment","refId":"sec-lexical-environments","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Lexical Environment"},{"type":"term","term":"EnvironmentRecord","refId":"sec-lexical-environments","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"EnvironmentRecord"},{"type":"term","term":"global environment","refId":"sec-lexical-environments","referencingIds":["_ref_1804","_ref_1805","_ref_1807","_ref_1810","_ref_2060","_ref_2061","_ref_2069","_ref_2152","_ref_4419"],"id":"global-environment","namespace":"https://tc39.github.io/ecma262/","location":"","key":"global environment"},{"type":"term","term":"module environment","refId":"sec-lexical-environments","referencingIds":["_ref_1809","_ref_4653"],"id":"module-environment","namespace":"https://tc39.github.io/ecma262/","location":"","key":"module environment"},{"type":"term","term":"function environment","refId":"sec-lexical-environments","referencingIds":["_ref_1812","_ref_1813"],"id":"function-environment","namespace":"https://tc39.github.io/ecma262/","location":"","key":"function environment"},{"type":"term","term":"Environment Record","refId":"sec-environment-records","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Environment Record"},{"type":"table","id":"table-15","number":14,"caption":"Table 14: Abstract Methods of Environment Records","referencingIds":["_ref_155","_ref_158","_ref_166"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 14: Abstract Methods of Environment Records"},{"type":"clause","id":"sec-declarative-environment-records-hasbinding-n","aoid":null,"title":"HasBinding ( N )","titleHTML":"HasBinding ( <var>N</var> )","number":"8.1.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasBinding ( N )"},{"type":"clause","id":"sec-declarative-environment-records-createmutablebinding-n-d","aoid":null,"title":"CreateMutableBinding ( N, D )","titleHTML":"CreateMutableBinding ( <var>N</var>, <var>D</var> )","number":"8.1.1.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CreateMutableBinding ( N, D )"},{"type":"clause","id":"sec-declarative-environment-records-createimmutablebinding-n-s","aoid":null,"title":"CreateImmutableBinding ( N, S )","titleHTML":"CreateImmutableBinding ( <var>N</var>, <var>S</var> )","number":"8.1.1.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CreateImmutableBinding ( N, S )"},{"type":"clause","id":"sec-declarative-environment-records-initializebinding-n-v","aoid":null,"title":"InitializeBinding ( N, V )","titleHTML":"InitializeBinding ( <var>N</var>, <var>V</var> )","number":"8.1.1.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"InitializeBinding ( N, V )"},{"type":"clause","id":"sec-declarative-environment-records-setmutablebinding-n-v-s","aoid":null,"title":"SetMutableBinding ( N, V, S )","titleHTML":"SetMutableBinding ( <var>N</var>, <var>V</var>, <var>S</var> )","number":"8.1.1.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SetMutableBinding ( N, V, S )"},{"type":"clause","id":"sec-declarative-environment-records-getbindingvalue-n-s","aoid":null,"title":"GetBindingValue ( N, S )","titleHTML":"GetBindingValue ( <var>N</var>, <var>S</var> )","number":"8.1.1.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GetBindingValue ( N, S )"},{"type":"clause","id":"sec-declarative-environment-records-deletebinding-n","aoid":null,"title":"DeleteBinding ( N )","titleHTML":"DeleteBinding ( <var>N</var> )","number":"8.1.1.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DeleteBinding ( N )"},{"type":"clause","id":"sec-declarative-environment-records-hasthisbinding","aoid":null,"title":"HasThisBinding ( )","titleHTML":"HasThisBinding ( )","number":"8.1.1.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasThisBinding ( )"},{"type":"clause","id":"sec-declarative-environment-records-hassuperbinding","aoid":null,"title":"HasSuperBinding ( )","titleHTML":"HasSuperBinding ( )","number":"8.1.1.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasSuperBinding ( )"},{"type":"clause","id":"sec-declarative-environment-records-withbaseobject","aoid":null,"title":"WithBaseObject ( )","titleHTML":"WithBaseObject ( )","number":"8.1.1.1.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WithBaseObject ( )"},{"type":"clause","id":"sec-declarative-environment-records","aoid":null,"title":"Declarative Environment Records","titleHTML":"Declarative Environment Records","number":"8.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Declarative Environment Records"},{"type":"clause","id":"sec-object-environment-records-hasbinding-n","aoid":null,"title":"HasBinding ( N )","titleHTML":"HasBinding ( <var>N</var> )","number":"8.1.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasBinding ( N )"},{"type":"clause","id":"sec-object-environment-records-createmutablebinding-n-d","aoid":null,"title":"CreateMutableBinding ( N, D )","titleHTML":"CreateMutableBinding ( <var>N</var>, <var>D</var> )","number":"8.1.1.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CreateMutableBinding ( N, D )"},{"type":"clause","id":"sec-object-environment-records-createimmutablebinding-n-s","aoid":null,"title":"CreateImmutableBinding ( N, S )","titleHTML":"CreateImmutableBinding ( <var>N</var>, <var>S</var> )","number":"8.1.1.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CreateImmutableBinding ( N, S )"},{"type":"clause","id":"sec-object-environment-records-initializebinding-n-v","aoid":null,"title":"InitializeBinding ( N, V )","titleHTML":"InitializeBinding ( <var>N</var>, <var>V</var> )","number":"8.1.1.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"InitializeBinding ( N, V )"},{"type":"clause","id":"sec-object-environment-records-setmutablebinding-n-v-s","aoid":null,"title":"SetMutableBinding ( N, V, S )","titleHTML":"SetMutableBinding ( <var>N</var>, <var>V</var>, <var>S</var> )","number":"8.1.1.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SetMutableBinding ( N, V, S )"},{"type":"clause","id":"sec-object-environment-records-getbindingvalue-n-s","aoid":null,"title":"GetBindingValue ( N, S )","titleHTML":"GetBindingValue ( <var>N</var>, <var>S</var> )","number":"8.1.1.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GetBindingValue ( N, S )"},{"type":"clause","id":"sec-object-environment-records-deletebinding-n","aoid":null,"title":"DeleteBinding ( N )","titleHTML":"DeleteBinding ( <var>N</var> )","number":"8.1.1.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DeleteBinding ( N )"},{"type":"clause","id":"sec-object-environment-records-hasthisbinding","aoid":null,"title":"HasThisBinding ( )","titleHTML":"HasThisBinding ( )","number":"8.1.1.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasThisBinding ( )"},{"type":"clause","id":"sec-object-environment-records-hassuperbinding","aoid":null,"title":"HasSuperBinding ( )","titleHTML":"HasSuperBinding ( )","number":"8.1.1.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasSuperBinding ( )"},{"type":"clause","id":"sec-object-environment-records-withbaseobject","aoid":null,"title":"WithBaseObject ( )","titleHTML":"WithBaseObject ( )","number":"8.1.1.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WithBaseObject ( )"},{"type":"clause","id":"sec-object-environment-records","aoid":null,"title":"Object Environment Records","titleHTML":"Object Environment Records","number":"8.1.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object Environment Records"},{"type":"term","term":"function Environment Record","refId":"sec-function-environment-records","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"function Environment Record"},{"type":"table","id":"table-16","number":15,"caption":"Table 15: Additional Fields of Function Environment Records","referencingIds":["_ref_157"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 15: Additional Fields of Function Environment Records"},{"type":"table","id":"table-17","number":16,"caption":"Table 16: Additional Methods of Function Environment Records","referencingIds":["_ref_159"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 16: Additional Methods of Function Environment Records"},{"type":"clause","id":"sec-bindthisvalue","aoid":null,"title":"BindThisValue ( V )","titleHTML":"BindThisValue ( <var>V</var> )","number":"8.1.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"BindThisValue ( V )"},{"type":"clause","id":"sec-function-environment-records-hasthisbinding","aoid":null,"title":"HasThisBinding ( )","titleHTML":"HasThisBinding ( )","number":"8.1.1.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasThisBinding ( )"},{"type":"clause","id":"sec-function-environment-records-hassuperbinding","aoid":null,"title":"HasSuperBinding ( )","titleHTML":"HasSuperBinding ( )","number":"8.1.1.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasSuperBinding ( )"},{"type":"clause","id":"sec-function-environment-records-getthisbinding","aoid":null,"title":"GetThisBinding ( )","titleHTML":"GetThisBinding ( )","number":"8.1.1.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GetThisBinding ( )"},{"type":"clause","id":"sec-getsuperbase","aoid":null,"title":"GetSuperBase ( )","titleHTML":"GetSuperBase ( )","number":"8.1.1.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GetSuperBase ( )"},{"type":"clause","id":"sec-function-environment-records","aoid":null,"title":"Function Environment Records","titleHTML":"Function Environment Records","number":"8.1.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1902","_ref_1904","_ref_1905","_ref_1906","_ref_1908","_ref_2047","_ref_2460","_ref_2565","_ref_3343","_ref_4804"],"key":"Function Environment Records"},{"type":"table","id":"table-18","number":17,"caption":"Table 17: Additional Fields of Global Environment Records","referencingIds":["_ref_164"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 17: Additional Fields of Global Environment Records"},{"type":"table","id":"table-19","number":18,"caption":"Table 18: Additional Methods of Global Environment Records","referencingIds":["_ref_165"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 18: Additional Methods of Global Environment Records"},{"type":"clause","id":"sec-global-environment-records-hasbinding-n","aoid":null,"title":"HasBinding ( N )","titleHTML":"HasBinding ( <var>N</var> )","number":"8.1.1.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasBinding ( N )"},{"type":"clause","id":"sec-global-environment-records-createmutablebinding-n-d","aoid":null,"title":"CreateMutableBinding ( N, D )","titleHTML":"CreateMutableBinding ( <var>N</var>, <var>D</var> )","number":"8.1.1.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CreateMutableBinding ( N, D )"},{"type":"clause","id":"sec-global-environment-records-createimmutablebinding-n-s","aoid":null,"title":"CreateImmutableBinding ( N, S )","titleHTML":"CreateImmutableBinding ( <var>N</var>, <var>S</var> )","number":"8.1.1.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CreateImmutableBinding ( N, S )"},{"type":"clause","id":"sec-global-environment-records-initializebinding-n-v","aoid":null,"title":"InitializeBinding ( N, V )","titleHTML":"InitializeBinding ( <var>N</var>, <var>V</var> )","number":"8.1.1.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"InitializeBinding ( N, V )"},{"type":"clause","id":"sec-global-environment-records-setmutablebinding-n-v-s","aoid":null,"title":"SetMutableBinding ( N, V, S )","titleHTML":"SetMutableBinding ( <var>N</var>, <var>V</var>, <var>S</var> )","number":"8.1.1.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SetMutableBinding ( N, V, S )"},{"type":"clause","id":"sec-global-environment-records-getbindingvalue-n-s","aoid":null,"title":"GetBindingValue ( N, S )","titleHTML":"GetBindingValue ( <var>N</var>, <var>S</var> )","number":"8.1.1.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GetBindingValue ( N, S )"},{"type":"clause","id":"sec-global-environment-records-deletebinding-n","aoid":null,"title":"DeleteBinding ( N )","titleHTML":"DeleteBinding ( <var>N</var> )","number":"8.1.1.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DeleteBinding ( N )"},{"type":"clause","id":"sec-global-environment-records-hasthisbinding","aoid":null,"title":"HasThisBinding ( )","titleHTML":"HasThisBinding ( )","number":"8.1.1.4.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasThisBinding ( )"},{"type":"clause","id":"sec-global-environment-records-hassuperbinding","aoid":null,"title":"HasSuperBinding ( )","titleHTML":"HasSuperBinding ( )","number":"8.1.1.4.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasSuperBinding ( )"},{"type":"clause","id":"sec-global-environment-records-withbaseobject","aoid":null,"title":"WithBaseObject ( )","titleHTML":"WithBaseObject ( )","number":"8.1.1.4.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WithBaseObject ( )"},{"type":"clause","id":"sec-global-environment-records-getthisbinding","aoid":null,"title":"GetThisBinding ( )","titleHTML":"GetThisBinding ( )","number":"8.1.1.4.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GetThisBinding ( )"},{"type":"clause","id":"sec-hasvardeclaration","aoid":null,"title":"HasVarDeclaration ( N )","titleHTML":"HasVarDeclaration ( <var>N</var> )","number":"8.1.1.4.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasVarDeclaration ( N )"},{"type":"clause","id":"sec-haslexicaldeclaration","aoid":null,"title":"HasLexicalDeclaration ( N )","titleHTML":"HasLexicalDeclaration ( <var>N</var> )","number":"8.1.1.4.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasLexicalDeclaration ( N )"},{"type":"clause","id":"sec-hasrestrictedglobalproperty","aoid":null,"title":"HasRestrictedGlobalProperty ( N )","titleHTML":"HasRestrictedGlobalProperty ( <var>N</var> )","number":"8.1.1.4.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasRestrictedGlobalProperty ( N )"},{"type":"clause","id":"sec-candeclareglobalvar","aoid":null,"title":"CanDeclareGlobalVar ( N )","titleHTML":"CanDeclareGlobalVar ( <var>N</var> )","number":"8.1.1.4.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_800"],"key":"CanDeclareGlobalVar ( N )"},{"type":"clause","id":"sec-candeclareglobalfunction","aoid":null,"title":"CanDeclareGlobalFunction ( N )","titleHTML":"CanDeclareGlobalFunction ( <var>N</var> )","number":"8.1.1.4.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CanDeclareGlobalFunction ( N )"},{"type":"clause","id":"sec-createglobalvarbinding","aoid":null,"title":"CreateGlobalVarBinding ( N, D )","titleHTML":"CreateGlobalVarBinding ( <var>N</var>, <var>D</var> )","number":"8.1.1.4.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CreateGlobalVarBinding ( N, D )"},{"type":"clause","id":"sec-createglobalfunctionbinding","aoid":null,"title":"CreateGlobalFunctionBinding ( N, V, D )","titleHTML":"CreateGlobalFunctionBinding ( <var>N</var>, <var>V</var>, <var>D</var> )","number":"8.1.1.4.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_801"],"key":"CreateGlobalFunctionBinding ( N, V, D )"},{"type":"clause","id":"sec-global-environment-records","aoid":null,"title":"Global Environment Records","titleHTML":"Global Environment Records","number":"8.1.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Global Environment Records"},{"type":"table","id":"table-20","number":19,"caption":"Table 19: Additional Methods of Module Environment Records","referencingIds":["_ref_167"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 19: Additional Methods of Module Environment Records"},{"type":"clause","id":"sec-module-environment-records-getbindingvalue-n-s","aoid":null,"title":"GetBindingValue ( N, S )","titleHTML":"GetBindingValue ( <var>N</var>, <var>S</var> )","number":"8.1.1.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GetBindingValue ( N, S )"},{"type":"clause","id":"sec-module-environment-records-deletebinding-n","aoid":null,"title":"DeleteBinding ( N )","titleHTML":"DeleteBinding ( <var>N</var> )","number":"8.1.1.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DeleteBinding ( N )"},{"type":"clause","id":"sec-module-environment-records-hasthisbinding","aoid":null,"title":"HasThisBinding ( )","titleHTML":"HasThisBinding ( )","number":"8.1.1.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HasThisBinding ( )"},{"type":"clause","id":"sec-module-environment-records-getthisbinding","aoid":null,"title":"GetThisBinding ( )","titleHTML":"GetThisBinding ( )","number":"8.1.1.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GetThisBinding ( )"},{"type":"clause","id":"sec-createimportbinding","aoid":null,"title":"CreateImportBinding ( N, M, N2 )","titleHTML":"CreateImportBinding ( <var>N</var>, <var>M</var>, <var>N2</var> )","number":"8.1.1.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CreateImportBinding ( N, M, N2 )"},{"type":"clause","id":"sec-module-environment-records","aoid":null,"title":"Module Environment Records","titleHTML":"Module Environment Records","number":"8.1.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Module Environment Records"},{"type":"clause","id":"sec-environment-records","aoid":null,"title":"Environment Records","titleHTML":"Environment Records","number":"8.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_126","_ref_127","_ref_1211","_ref_1269","_ref_1271","_ref_1307","_ref_1327","_ref_1343","_ref_1389","_ref_1802","_ref_1803","_ref_1814","_ref_1816","_ref_1817","_ref_1818","_ref_1819","_ref_1821","_ref_1823","_ref_1825","_ref_1826","_ref_1827","_ref_1828","_ref_1829","_ref_1830","_ref_1831","_ref_1832","_ref_1833","_ref_1834","_ref_1835","_ref_1838","_ref_1839","_ref_1840","_ref_1843","_ref_1844","_ref_1848","_ref_1849","_ref_1853","_ref_1854","_ref_1856","_ref_1857","_ref_1859","_ref_1860","_ref_1861","_ref_1862","_ref_1863","_ref_1864","_ref_1865","_ref_1871","_ref_1872","_ref_1873","_ref_1877","_ref_1878","_ref_1879","_ref_1882","_ref_1883","_ref_1884","_ref_1885","_ref_1887","_ref_1888","_ref_1891","_ref_1892","_ref_1893","_ref_1894","_ref_1896","_ref_1897","_ref_1898","_ref_1899","_ref_1900","_ref_1901","_ref_1911","_ref_1913","_ref_1915","_ref_1916","_ref_1917","_ref_1918","_ref_1922","_ref_1923","_ref_1924","_ref_1925","_ref_1926","_ref_1928","_ref_1929","_ref_1931","_ref_1932","_ref_1935","_ref_1939","_ref_1940","_ref_1941","_ref_1943","_ref_1945","_ref_1947","_ref_1948","_ref_1949","_ref_1950","_ref_1951","_ref_1952","_ref_1953","_ref_1954","_ref_1955","_ref_1957","_ref_1958","_ref_1959","_ref_1960","_ref_1961","_ref_1962","_ref_1963","_ref_1965","_ref_1966","_ref_1967","_ref_1968","_ref_1969","_ref_1970","_ref_1972","_ref_1975","_ref_1977","_ref_1980","_ref_1981","_ref_1984","_ref_1985","_ref_1987","_ref_1991","_ref_1992","_ref_1994","_ref_2000","_ref_2001","_ref_2002","_ref_2003","_ref_2004","_ref_2006","_ref_2007","_ref_2008","_ref_2010","_ref_2014","_ref_2018","_ref_2019","_ref_2020","_ref_2022","_ref_2023","_ref_2037","_ref_2041","_ref_2050","_ref_2051","_ref_2052","_ref_2057","_ref_2148","_ref_2455","_ref_2566","_ref_2567","_ref_2568","_ref_2581","_ref_2586","_ref_2589","_ref_2797","_ref_2812","_ref_2816","_ref_3312","_ref_3403","_ref_3658","_ref_3659","_ref_3664","_ref_3691","_ref_3824","_ref_3903","_ref_4030","_ref_4036","_ref_4423","_ref_4473","_ref_4839","_ref_4842","_ref_4847","_ref_4849","_ref_4850","_ref_4854","_ref_4857","_ref_8755","_ref_8756","_ref_8757","_ref_8770","_ref_8771"],"key":"Environment Records"},{"type":"op","aoid":"GetIdentifierReference","refId":"sec-getidentifierreference","location":"","referencingIds":[],"key":"GetIdentifierReference"},{"type":"clause","id":"sec-getidentifierreference","aoid":"GetIdentifierReference","title":"GetIdentifierReference ( lex, name, strict )","titleHTML":"GetIdentifierReference ( <var>lex</var>, <var>name</var>, <var>strict</var> )","number":"8.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2034","_ref_2146"],"key":"GetIdentifierReference ( lex, name, strict )"},{"type":"op","aoid":"NewDeclarativeEnvironment","refId":"sec-newdeclarativeenvironment","location":"","referencingIds":[],"key":"NewDeclarativeEnvironment"},{"type":"clause","id":"sec-newdeclarativeenvironment","aoid":"NewDeclarativeEnvironment","title":"NewDeclarativeEnvironment ( E )","titleHTML":"NewDeclarativeEnvironment ( <var>E</var> )","number":"8.1.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2582","_ref_2585","_ref_3651","_ref_3793","_ref_3814","_ref_3846","_ref_3867","_ref_3963","_ref_3986","_ref_4029","_ref_4035","_ref_4055","_ref_4151","_ref_4243","_ref_4259","_ref_4328","_ref_4814","_ref_4815"],"key":"NewDeclarativeEnvironment ( E )"},{"type":"op","aoid":"NewObjectEnvironment","refId":"sec-newobjectenvironment","location":"","referencingIds":[],"key":"NewObjectEnvironment"},{"type":"clause","id":"sec-newobjectenvironment","aoid":"NewObjectEnvironment","title":"NewObjectEnvironment ( O, E )","titleHTML":"NewObjectEnvironment ( <var>O</var>, <var>E</var> )","number":"8.1.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3910"],"key":"NewObjectEnvironment ( O, E )"},{"type":"op","aoid":"NewFunctionEnvironment","refId":"sec-newfunctionenvironment","location":"","referencingIds":[],"key":"NewFunctionEnvironment"},{"type":"clause","id":"sec-newfunctionenvironment","aoid":"NewFunctionEnvironment","title":"NewFunctionEnvironment ( F, newTarget )","titleHTML":"NewFunctionEnvironment ( <var>F</var>, <var>newTarget</var> )","number":"8.1.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2447"],"key":"NewFunctionEnvironment ( F, newTarget )"},{"type":"op","aoid":"NewGlobalEnvironment","refId":"sec-newglobalenvironment","location":"","referencingIds":[],"key":"NewGlobalEnvironment"},{"type":"clause","id":"sec-newglobalenvironment","aoid":"NewGlobalEnvironment","title":"NewGlobalEnvironment ( G, thisValue )","titleHTML":"NewGlobalEnvironment ( <var>G</var>, <var>thisValue</var> )","number":"8.1.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2096"],"key":"NewGlobalEnvironment ( G, thisValue )"},{"type":"op","aoid":"NewModuleEnvironment","refId":"sec-newmoduleenvironment","location":"","referencingIds":[],"key":"NewModuleEnvironment"},{"type":"clause","id":"sec-newmoduleenvironment","aoid":"NewModuleEnvironment","title":"NewModuleEnvironment ( E )","titleHTML":"NewModuleEnvironment ( <var>E</var> )","number":"8.1.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4639"],"key":"NewModuleEnvironment ( E )"},{"type":"clause","id":"sec-lexical-environment-operations","aoid":null,"title":"Lexical Environment Operations","titleHTML":"Lexical Environment Operations","number":"8.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Lexical Environment Operations"},{"type":"clause","id":"sec-lexical-environments","aoid":null,"title":"Lexical Environments","titleHTML":"Lexical Environments","number":"8.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_131","_ref_1210","_ref_1388","_ref_2012","_ref_2030","_ref_2032","_ref_2035","_ref_2036","_ref_2038","_ref_2039","_ref_2040","_ref_2042","_ref_2046","_ref_2048","_ref_2049","_ref_2054","_ref_2055","_ref_2056","_ref_2058","_ref_2068","_ref_2127","_ref_2129","_ref_2130","_ref_2141","_ref_2144","_ref_2150","_ref_2413","_ref_2414","_ref_2453","_ref_2458","_ref_2477","_ref_2493","_ref_2498","_ref_2504","_ref_2510","_ref_2516","_ref_2572","_ref_2583","_ref_2590","_ref_2921","_ref_3148","_ref_3661","_ref_3662","_ref_3666","_ref_3680","_ref_3794","_ref_3812","_ref_3815","_ref_3822","_ref_3847","_ref_3911","_ref_3987","_ref_4056","_ref_4152","_ref_4244","_ref_4260","_ref_4329","_ref_4391","_ref_4392","_ref_4421","_ref_4470","_ref_4471","_ref_4481","_ref_4640","_ref_4837","_ref_4838","_ref_4841","_ref_8740","_ref_8742","_ref_8747","_ref_8749","_ref_8754","_ref_8759","_ref_8761"],"key":"Lexical Environments"},{"type":"term","term":"realm","refId":"sec-code-realms","referencingIds":["_ref_1000","_ref_1001","_ref_1002","_ref_1003","_ref_1912","_ref_1934","_ref_1936","_ref_1938","_ref_2059","_ref_2062","_ref_2065","_ref_2067","_ref_2070","_ref_2074","_ref_2112","_ref_2124","_ref_2161","_ref_2188","_ref_2192","_ref_2215","_ref_2404","_ref_2418","_ref_2446","_ref_2528","_ref_2607","_ref_2691","_ref_2692","_ref_2694","_ref_3248","_ref_4390","_ref_4404","_ref_4469","_ref_4651","_ref_4772","_ref_4797","_ref_4817","_ref_5002","_ref_5110"],"id":"realm","namespace":"https://tc39.github.io/ecma262/","location":"","key":"realm"},{"type":"term","term":"Realm Record","refId":"sec-code-realms","referencingIds":["_ref_1920","_ref_2063","_ref_2075","_ref_2078","_ref_2079","_ref_2113","_ref_2168","_ref_2169","_ref_2417","_ref_2521","_ref_2621","_ref_2682","_ref_4389","_ref_4468","_ref_4771"],"id":"realm-record","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Realm Record"},{"type":"table","id":"table-21","number":20,"caption":"Table 20: Realm Record Fields","referencingIds":["_ref_170"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 20: Realm Record Fields"},{"type":"op","aoid":"CreateRealm","refId":"sec-createrealm","location":"","referencingIds":[],"key":"CreateRealm"},{"type":"clause","id":"sec-createrealm","aoid":"CreateRealm","title":"CreateRealm ( )","titleHTML":"CreateRealm ( )","number":"8.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2190"],"key":"CreateRealm ( )"},{"type":"op","aoid":"CreateIntrinsics","refId":"sec-createintrinsics","location":"","referencingIds":[],"key":"CreateIntrinsics"},{"type":"clause","id":"sec-createintrinsics","aoid":"CreateIntrinsics","title":"CreateIntrinsics ( realmRec )","titleHTML":"CreateIntrinsics ( <var>realmRec</var> )","number":"8.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2080"],"key":"CreateIntrinsics ( realmRec )"},{"type":"op","aoid":"SetRealmGlobalObject","refId":"sec-setrealmglobalobject","location":"","referencingIds":[],"key":"SetRealmGlobalObject"},{"type":"clause","id":"sec-setrealmglobalobject","aoid":"SetRealmGlobalObject","title":"SetRealmGlobalObject ( realmRec, globalObj, thisValue )","titleHTML":"SetRealmGlobalObject ( <var>realmRec</var>, <var>globalObj</var>, <var>thisValue</var> )","number":"8.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2200"],"key":"SetRealmGlobalObject ( realmRec, globalObj, thisValue )"},{"type":"op","aoid":"SetDefaultGlobalBindings","refId":"sec-setdefaultglobalbindings","location":"","referencingIds":[],"key":"SetDefaultGlobalBindings"},{"type":"clause","id":"sec-setdefaultglobalbindings","aoid":"SetDefaultGlobalBindings","title":"SetDefaultGlobalBindings ( realmRec )","titleHTML":"SetDefaultGlobalBindings ( <var>realmRec</var> )","number":"8.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2201"],"key":"SetDefaultGlobalBindings ( realmRec )"},{"type":"clause","id":"sec-code-realms","aoid":null,"title":"Realms","titleHTML":"Realms","number":"8.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_25"],"key":"Realms"},{"type":"term","term":"execution context","refId":"sec-execution-contexts","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"execution context"},{"type":"term","term":"running execution context","refId":"sec-execution-contexts","referencingIds":["_ref_1219","_ref_1228","_ref_1239","_ref_1242","_ref_1246","_ref_1253","_ref_1256","_ref_1260","_ref_2102","_ref_2103","_ref_2105","_ref_2106","_ref_2107","_ref_2118","_ref_2119","_ref_2120","_ref_2121","_ref_2122","_ref_2123","_ref_2125","_ref_2126","_ref_2133","_ref_2135","_ref_2136","_ref_2142","_ref_2149","_ref_2153","_ref_2155","_ref_2159","_ref_2160","_ref_2162","_ref_2176","_ref_2179","_ref_2187","_ref_2194","_ref_2210","_ref_2217","_ref_2221","_ref_2239","_ref_2295","_ref_2405","_ref_2428","_ref_2431","_ref_2435","_ref_2444","_ref_2449","_ref_2471","_ref_2475","_ref_2480","_ref_2571","_ref_2605","_ref_2609","_ref_2612","_ref_2693","_ref_2695","_ref_3650","_ref_3653","_ref_3654","_ref_3665","_ref_3678","_ref_3679","_ref_3792","_ref_3795","_ref_3797","_ref_3800","_ref_3811","_ref_3816","_ref_3843","_ref_3848","_ref_3849","_ref_3856","_ref_3868","_ref_3878","_ref_3882","_ref_3904","_ref_3909","_ref_3912","_ref_3913","_ref_3962","_ref_3965","_ref_3966","_ref_3985","_ref_3988","_ref_3990","_ref_3992","_ref_4026","_ref_4032","_ref_4050","_ref_4054","_ref_4083","_ref_4090","_ref_4100","_ref_4107","_ref_4134","_ref_4144","_ref_4150","_ref_4226","_ref_4236","_ref_4242","_ref_4258","_ref_4263","_ref_4264","_ref_4273","_ref_4282","_ref_4284","_ref_4286","_ref_4315","_ref_4324","_ref_4327","_ref_4358","_ref_4361","_ref_4371","_ref_4375","_ref_4377","_ref_4406","_ref_4408","_ref_4416","_ref_4655","_ref_4657","_ref_4661","_ref_4741","_ref_4746","_ref_4810","_ref_4819","_ref_4825","_ref_7923","_ref_7929","_ref_7940","_ref_7943","_ref_7947","_ref_7954","_ref_7957","_ref_7960","_ref_7962","_ref_7964","_ref_7972","_ref_7992","_ref_7998","_ref_8027","_ref_8030","_ref_8035","_ref_8057","_ref_8066","_ref_8321","_ref_8327","_ref_8333","_ref_8336","_ref_8739","_ref_8741","_ref_8746","_ref_8748","_ref_8758","_ref_8760"],"id":"running-execution-context","namespace":"https://tc39.github.io/ecma262/","location":"","key":"running execution context"},{"type":"term","term":"execution context stack","refId":"sec-execution-contexts","referencingIds":["_ref_1225","_ref_1227","_ref_1241","_ref_1245","_ref_1255","_ref_1259","_ref_2134","_ref_2137","_ref_2139","_ref_2163","_ref_2177","_ref_2193","_ref_2211","_ref_2213","_ref_2216","_ref_2220","_ref_2240","_ref_2434","_ref_2439","_ref_2448","_ref_2479","_ref_2608","_ref_2611","_ref_2613","_ref_4373","_ref_4407","_ref_4412","_ref_4414","_ref_4415","_ref_4656","_ref_4659","_ref_4660","_ref_4795","_ref_4796","_ref_4818","_ref_4823","_ref_4824","_ref_5000","_ref_5001","_ref_7926","_ref_7928","_ref_7942","_ref_7946","_ref_7956","_ref_7959","_ref_7969","_ref_7971","_ref_7995","_ref_7997","_ref_8029","_ref_8034","_ref_8063","_ref_8065","_ref_8324","_ref_8326","_ref_8332","_ref_8335"],"id":"execution-context-stack","namespace":"https://tc39.github.io/ecma262/","location":"","key":"execution context stack"},{"type":"table","id":"table-22","number":21,"caption":"Table 21: State Components for All Execution Contexts","referencingIds":["_ref_177"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 21: State Components for All Execution Contexts"},{"type":"term","term":"the current Realm Record","refId":"sec-execution-contexts","referencingIds":["_ref_1729","_ref_2489","_ref_2619","_ref_2680","_ref_3237","_ref_3299","_ref_4437","_ref_4678","_ref_4798","_ref_5003"],"id":"current-realm","namespace":"https://tc39.github.io/ecma262/","location":"","key":"the current Realm Record"},{"type":"term","term":"active function object","refId":"sec-execution-contexts","referencingIds":["_ref_1238","_ref_1252","_ref_2815","_ref_2819","_ref_4994","_ref_5137","_ref_5157","_ref_6089","_ref_6325","_ref_6330","_ref_6340","_ref_7861","_ref_7878","_ref_7897","_ref_8040","_ref_8047","_ref_8094","_ref_8097","_ref_8126","_ref_8200","_ref_8263","_ref_8274","_ref_8308","_ref_8385"],"id":"active-function-object","namespace":"https://tc39.github.io/ecma262/","location":"","key":"active function object"},{"type":"table","id":"table-23","number":22,"caption":"Table 22: Additional State Components for ECMAScript Code Execution Contexts","referencingIds":["_ref_178"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 22: Additional State Components for ECMAScript Code Execution Contexts"},{"type":"table","id":"table-24","number":23,"caption":"Table 23: Additional State Components for Generator Execution Contexts","referencingIds":["_ref_179"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 23: Additional State Components for Generator Execution Contexts"},{"type":"op","aoid":"GetActiveScriptOrModule","refId":"sec-getactivescriptormodule","location":"","referencingIds":[],"key":"GetActiveScriptOrModule"},{"type":"clause","id":"sec-getactivescriptormodule","aoid":"GetActiveScriptOrModule","title":"GetActiveScriptOrModule ( )","titleHTML":"GetActiveScriptOrModule ( )","number":"8.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2495"],"key":"GetActiveScriptOrModule ( )"},{"type":"op","aoid":"ResolveBinding","refId":"sec-resolvebinding","location":"","referencingIds":[],"key":"ResolveBinding"},{"type":"clause","id":"sec-resolvebinding","aoid":"ResolveBinding","title":"ResolveBinding ( name [ , env ] )","titleHTML":"ResolveBinding ( <var>name</var> [ , <var>env</var> ] )","number":"8.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3150","_ref_3152","_ref_3153","_ref_3154","_ref_3567","_ref_3670","_ref_3673","_ref_3686","_ref_3705","_ref_3713","_ref_3731","_ref_3757","_ref_3870","_ref_3890","_ref_8781"],"key":"ResolveBinding ( name [ , env ] )"},{"type":"op","aoid":"GetThisEnvironment","refId":"sec-getthisenvironment","location":"","referencingIds":[],"key":"GetThisEnvironment"},{"type":"clause","id":"sec-getthisenvironment","aoid":"GetThisEnvironment","title":"GetThisEnvironment ( )","titleHTML":"GetThisEnvironment ( )","number":"8.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2154","_ref_2156","_ref_3326","_ref_3331","_ref_3340","_ref_3341","_ref_3347","_ref_4803"],"key":"GetThisEnvironment ( )"},{"type":"op","aoid":"ResolveThisBinding","refId":"sec-resolvethisbinding","location":"","referencingIds":[],"key":"ResolveThisBinding"},{"type":"clause","id":"sec-resolvethisbinding","aoid":"ResolveThisBinding","title":"ResolveThisBinding ( )","titleHTML":"ResolveThisBinding ( )","number":"8.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3159"],"key":"ResolveThisBinding ( )"},{"type":"op","aoid":"GetNewTarget","refId":"sec-getnewtarget","location":"","referencingIds":[],"key":"GetNewTarget"},{"type":"clause","id":"sec-getnewtarget","aoid":"GetNewTarget","title":"GetNewTarget ( )","titleHTML":"GetNewTarget ( )","number":"8.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3334","_ref_3374"],"key":"GetNewTarget ( )"},{"type":"op","aoid":"GetGlobalObject","refId":"sec-getglobalobject","location":"","referencingIds":[],"key":"GetGlobalObject"},{"type":"clause","id":"sec-getglobalobject","aoid":"GetGlobalObject","title":"GetGlobalObject ( )","titleHTML":"GetGlobalObject ( )","number":"8.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1317"],"key":"GetGlobalObject ( )"},{"type":"clause","id":"sec-execution-contexts","aoid":null,"title":"Execution Contexts","titleHTML":"Execution Contexts","number":"8.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_50","_ref_1226","_ref_2108","_ref_2109","_ref_2116","_ref_2128","_ref_2131","_ref_2132","_ref_2138","_ref_2140","_ref_2170","_ref_2173","_ref_2178","_ref_2191","_ref_2214","_ref_2445","_ref_2451","_ref_2564","_ref_2570","_ref_2606","_ref_2753","_ref_4374","_ref_4378","_ref_4403","_ref_4418","_ref_4420","_ref_4483","_ref_4649","_ref_4792","_ref_4811","_ref_4813","_ref_4816","_ref_7921","_ref_7924","_ref_7927","_ref_7930","_ref_7950","_ref_7966","_ref_7970","_ref_7985","_ref_7993","_ref_7996","_ref_8059","_ref_8064","_ref_8322","_ref_8325"],"key":"Execution Contexts"},{"type":"table","id":"table-25","number":24,"caption":"Table 24: PendingJob Record Fields","referencingIds":["_ref_180"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 24: PendingJob Record Fields"},{"type":"table","id":"table-26","number":25,"caption":"Table 25: Required Job Queues","referencingIds":["_ref_181"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 25: Required Job Queues"},{"type":"op","aoid":"EnqueueJob","refId":"sec-enqueuejob","location":"","referencingIds":[],"key":"EnqueueJob"},{"type":"clause","id":"sec-enqueuejob","aoid":"EnqueueJob","title":"EnqueueJob ( queueName, job, arguments )","titleHTML":"EnqueueJob ( <var>queueName</var>, <var>job</var>, <var>arguments</var> )","number":"8.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2205","_ref_2207","_ref_8108","_ref_8133","_ref_8295","_ref_8299"],"key":"EnqueueJob ( queueName, job, arguments )"},{"type":"clause","id":"sec-jobs-and-job-queues","aoid":null,"title":"Jobs and Job Queues","titleHTML":"Jobs and Job Queues","number":"8.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Jobs and Job Queues"},{"type":"op","aoid":"InitializeHostDefinedRealm","refId":"sec-initializehostdefinedrealm","location":"","referencingIds":[],"key":"InitializeHostDefinedRealm"},{"type":"clause","id":"sec-initializehostdefinedrealm","aoid":"InitializeHostDefinedRealm","title":"InitializeHostDefinedRealm ( )","titleHTML":"InitializeHostDefinedRealm ( )","number":"8.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2117","_ref_2204"],"key":"InitializeHostDefinedRealm ( )"},{"type":"op","aoid":"RunJobs","refId":"sec-runjobs","location":"","referencingIds":[],"key":"RunJobs"},{"type":"clause","id":"sec-runjobs","aoid":"RunJobs","title":"RunJobs ( )","titleHTML":"RunJobs ( )","number":"8.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RunJobs ( )"},{"type":"term","term":"agent","refId":"sec-agents","referencingIds":["_ref_856","_ref_2100","_ref_2101","_ref_2174","_ref_2180","_ref_2223","_ref_2224","_ref_2225","_ref_2227","_ref_2228","_ref_2233","_ref_2235","_ref_2236","_ref_2238","_ref_2245","_ref_2246","_ref_2251","_ref_2255","_ref_2260","_ref_2261","_ref_2262","_ref_2263","_ref_2264","_ref_2265","_ref_2266","_ref_2267","_ref_2268","_ref_2269","_ref_2270","_ref_2271","_ref_2272","_ref_2273","_ref_2274","_ref_2275","_ref_2276","_ref_2277","_ref_2278","_ref_2279","_ref_2280","_ref_2286","_ref_2288","_ref_2293","_ref_2294","_ref_2297","_ref_2298","_ref_2301","_ref_2302","_ref_2303","_ref_7569","_ref_7580","_ref_7581","_ref_7591","_ref_7593","_ref_7594","_ref_7597","_ref_7599","_ref_7601","_ref_7605","_ref_7607","_ref_7611","_ref_7615","_ref_7617","_ref_7624","_ref_7627","_ref_7630","_ref_7632","_ref_7639","_ref_7670","_ref_7683","_ref_7708","_ref_8390","_ref_8412","_ref_8417","_ref_8432","_ref_8433","_ref_8495","_ref_8496","_ref_8567","_ref_8569","_ref_8570","_ref_8571","_ref_8572","_ref_8573","_ref_8578","_ref_8582","_ref_8584"],"id":"agent","namespace":"https://tc39.github.io/ecma262/","location":"","key":"agent"},{"type":"term","term":"Agent Record","refId":"sec-agents","referencingIds":["_ref_1405","_ref_1416","_ref_2231","_ref_2241","_ref_2242","_ref_2256","_ref_2258","_ref_2281","_ref_2290","_ref_2296","_ref_7388","_ref_7396","_ref_7409","_ref_7413","_ref_7424","_ref_7427","_ref_7635","_ref_7661","_ref_7668"],"id":"agent-record","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Agent Record"},{"type":"term","term":"executing thread","refId":"sec-agents","referencingIds":["_ref_2222","_ref_2226","_ref_2229","_ref_2230","_ref_2232","_ref_2234","_ref_2299","_ref_2300"],"id":"executing-thread","namespace":"https://tc39.github.io/ecma262/","location":"","key":"executing thread"},{"type":"term","term":"surrounding agent","refId":"sec-agents","referencingIds":["_ref_1404","_ref_1415","_ref_2104","_ref_2175","_ref_2237","_ref_2257","_ref_2259","_ref_7387","_ref_7395","_ref_7408","_ref_7412","_ref_7423","_ref_7426","_ref_7634","_ref_7660","_ref_7669"],"id":"surrounding-agent","namespace":"https://tc39.github.io/ecma262/","location":"","key":"surrounding agent"},{"type":"table","id":"table-agent-record","number":26,"caption":"Table 26: Agent Record Fields","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 26: Agent Record Fields"},{"type":"op","aoid":"AgentSignifier","refId":"sec-agentsignifier","location":"","referencingIds":[],"key":"AgentSignifier"},{"type":"clause","id":"sec-agentsignifier","aoid":"AgentSignifier","title":"AgentSignifier ( )","titleHTML":"AgentSignifier ( )","number":"8.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1406","_ref_1417","_ref_7389","_ref_7414","_ref_7428","_ref_7619","_ref_7637","_ref_7694"],"key":"AgentSignifier ( )"},{"type":"op","aoid":"AgentCanSuspend","refId":"sec-agentcansuspend","location":"","referencingIds":[],"key":"AgentCanSuspend"},{"type":"clause","id":"sec-agentcansuspend","aoid":"AgentCanSuspend","title":"AgentCanSuspend ( )","titleHTML":"AgentCanSuspend ( )","number":"8.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7622","_ref_7689"],"key":"AgentCanSuspend ( )"},{"type":"clause","id":"sec-agents","aoid":null,"title":"Agents","titleHTML":"Agents","number":"8.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Agents"},{"type":"term","term":"agent cluster","refId":"sec-agent-clusters","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"agent cluster"},{"type":"clause","id":"sec-agent-clusters","aoid":null,"title":"Agent Clusters","titleHTML":"Agent Clusters","number":"8.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2247","_ref_2252","_ref_7579","_ref_7582","_ref_8394","_ref_8413","_ref_8428"],"key":"Agent Clusters"},{"type":"clause","id":"sec-forward-progress","aoid":null,"title":"Forward Progress","titleHTML":"Forward Progress","number":"8.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Forward Progress"},{"type":"clause","id":"sec-executable-code-and-execution-contexts","aoid":null,"title":"Executable Code and Execution Contexts","titleHTML":"Executable Code and Execution Contexts","number":"8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Executable Code and Execution Contexts"},{"type":"op","aoid":"OrdinaryGetPrototypeOf","refId":"sec-ordinarygetprototypeof","location":"","referencingIds":[],"key":"OrdinaryGetPrototypeOf"},{"type":"clause","id":"sec-ordinarygetprototypeof","aoid":"OrdinaryGetPrototypeOf","title":"OrdinaryGetPrototypeOf ( O )","titleHTML":"OrdinaryGetPrototypeOf ( <var>O</var> )","number":"9.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2307"],"key":"OrdinaryGetPrototypeOf ( O )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-getprototypeof","aoid":null,"title":"[[GetPrototypeOf]] ( )","titleHTML":"[[GetPrototypeOf]] ( )","number":"9.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_185","_ref_242"],"key":"[[GetPrototypeOf]] ( )"},{"type":"op","aoid":"OrdinarySetPrototypeOf","refId":"sec-ordinarysetprototypeof","location":"","referencingIds":[],"key":"OrdinarySetPrototypeOf"},{"type":"clause","id":"sec-ordinarysetprototypeof","aoid":"OrdinarySetPrototypeOf","title":"OrdinarySetPrototypeOf ( O, V )","titleHTML":"OrdinarySetPrototypeOf ( <var>O</var>, <var>V</var> )","number":"9.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2308"],"key":"OrdinarySetPrototypeOf ( O, V )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-setprototypeof-v","aoid":null,"title":"[[SetPrototypeOf]] ( V )","titleHTML":"[[SetPrototypeOf]] ( <var>V</var> )","number":"9.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[SetPrototypeOf]] ( V )"},{"type":"op","aoid":"OrdinaryIsExtensible","refId":"sec-ordinaryisextensible","location":"","referencingIds":[],"key":"OrdinaryIsExtensible"},{"type":"clause","id":"sec-ordinaryisextensible","aoid":"OrdinaryIsExtensible","title":"OrdinaryIsExtensible ( O )","titleHTML":"OrdinaryIsExtensible ( <var>O</var> )","number":"9.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2314"],"key":"OrdinaryIsExtensible ( O )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-isextensible","aoid":null,"title":"[[IsExtensible]] ( )","titleHTML":"[[IsExtensible]] ( )","number":"9.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[IsExtensible]] ( )"},{"type":"op","aoid":"OrdinaryPreventExtensions","refId":"sec-ordinarypreventextensions","location":"","referencingIds":[],"key":"OrdinaryPreventExtensions"},{"type":"clause","id":"sec-ordinarypreventextensions","aoid":"OrdinaryPreventExtensions","title":"OrdinaryPreventExtensions ( O )","titleHTML":"OrdinaryPreventExtensions ( <var>O</var> )","number":"9.1.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2315"],"key":"OrdinaryPreventExtensions ( O )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-preventextensions","aoid":null,"title":"[[PreventExtensions]] ( )","titleHTML":"[[PreventExtensions]] ( )","number":"9.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[PreventExtensions]] ( )"},{"type":"op","aoid":"OrdinaryGetOwnProperty","refId":"sec-ordinarygetownproperty","location":"","referencingIds":[],"key":"OrdinaryGetOwnProperty"},{"type":"clause","id":"sec-ordinarygetownproperty","aoid":"OrdinaryGetOwnProperty","title":"OrdinaryGetOwnProperty ( O, P )","titleHTML":"OrdinaryGetOwnProperty ( <var>O</var>, <var>P</var> )","number":"9.1.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2316","_ref_2662","_ref_2701","_ref_2715","_ref_2758","_ref_2830","_ref_2902"],"key":"OrdinaryGetOwnProperty ( O, P )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-getownproperty-p","aoid":null,"title":"[[GetOwnProperty]] ( P )","titleHTML":"[[GetOwnProperty]] ( <var>P</var> )","number":"9.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[GetOwnProperty]] ( P )"},{"type":"op","aoid":"OrdinaryDefineOwnProperty","refId":"sec-ordinarydefineownproperty","location":"","referencingIds":[],"key":"OrdinaryDefineOwnProperty"},{"type":"clause","id":"sec-ordinarydefineownproperty","aoid":"OrdinaryDefineOwnProperty","title":"OrdinaryDefineOwnProperty ( O, P, Desc )","titleHTML":"OrdinaryDefineOwnProperty ( <var>O</var>, <var>P</var>, <var>Desc</var> )","number":"9.1.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2323","_ref_2666","_ref_2667","_ref_2669","_ref_2673","_ref_2698","_ref_2704","_ref_2705","_ref_2707","_ref_2708","_ref_2723","_ref_2766","_ref_2850","_ref_2906"],"key":"OrdinaryDefineOwnProperty ( O, P, Desc )"},{"type":"op","aoid":"IsCompatiblePropertyDescriptor","refId":"sec-iscompatiblepropertydescriptor","location":"","referencingIds":[],"key":"IsCompatiblePropertyDescriptor"},{"type":"clause","id":"sec-iscompatiblepropertydescriptor","aoid":"IsCompatiblePropertyDescriptor","title":"IsCompatiblePropertyDescriptor ( Extensible, Desc, Current )","titleHTML":"IsCompatiblePropertyDescriptor ( <var>Extensible</var>, <var>Desc</var>, <var>Current</var> )","number":"9.1.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2722","_ref_2992","_ref_3004"],"key":"IsCompatiblePropertyDescriptor ( Extensible, Desc, Current )"},{"type":"op","aoid":"ValidateAndApplyPropertyDescriptor","refId":"sec-validateandapplypropertydescriptor","location":"","referencingIds":[],"key":"ValidateAndApplyPropertyDescriptor"},{"type":"clause","id":"sec-validateandapplypropertydescriptor","aoid":"ValidateAndApplyPropertyDescriptor","title":"ValidateAndApplyPropertyDescriptor ( O, P, extensible, Desc, current )","titleHTML":"ValidateAndApplyPropertyDescriptor ( <var>O</var>, <var>P</var>, <var>extensible</var>, <var>Desc</var>, <var>current</var> )","number":"9.1.6.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2326","_ref_2327"],"key":"ValidateAndApplyPropertyDescriptor ( O, P, extensible, Desc, current )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-defineownproperty-p-desc","aoid":null,"title":"[[DefineOwnProperty]] ( P, Desc )","titleHTML":"[[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )","number":"9.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[DefineOwnProperty]] ( P, Desc )"},{"type":"op","aoid":"OrdinaryHasProperty","refId":"sec-ordinaryhasproperty","location":"","referencingIds":[],"key":"OrdinaryHasProperty"},{"type":"clause","id":"sec-ordinaryhasproperty","aoid":"OrdinaryHasProperty","title":"OrdinaryHasProperty ( O, P )","titleHTML":"OrdinaryHasProperty ( <var>O</var>, <var>P</var> )","number":"9.1.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2351","_ref_2839","_ref_2911"],"key":"OrdinaryHasProperty ( O, P )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-hasproperty-p","aoid":null,"title":"[[HasProperty]] ( P )","titleHTML":"[[HasProperty]] ( <var>P</var> )","number":"9.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[HasProperty]] ( P )"},{"type":"op","aoid":"OrdinaryGet","refId":"sec-ordinaryget","location":"","referencingIds":[],"key":"OrdinaryGet"},{"type":"clause","id":"sec-ordinaryget","aoid":"OrdinaryGet","title":"OrdinaryGet ( O, P, Receiver )","titleHTML":"OrdinaryGet ( <var>O</var>, <var>P</var>, <var>Receiver</var> )","number":"9.1.8.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2355","_ref_2773","_ref_2858","_ref_2917"],"key":"OrdinaryGet ( O, P, Receiver )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-get-p-receiver","aoid":null,"title":"[[Get]] ( P, Receiver )","titleHTML":"[[Get]] ( <var>P</var>, <var>Receiver</var> )","number":"9.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[Get]] ( P, Receiver )"},{"type":"op","aoid":"OrdinarySet","refId":"sec-ordinaryset","location":"","referencingIds":[],"key":"OrdinarySet"},{"type":"clause","id":"sec-ordinaryset","aoid":"OrdinarySet","title":"OrdinarySet ( O, P, V, Receiver )","titleHTML":"OrdinarySet ( <var>O</var>, <var>P</var>, <var>V</var>, <var>Receiver</var> )","number":"9.1.9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2364","_ref_2781","_ref_2866"],"key":"OrdinarySet ( O, P, V, Receiver )"},{"type":"op","aoid":"OrdinarySetWithOwnDescriptor","refId":"sec-ordinarysetwithowndescriptor","location":"","referencingIds":[],"key":"OrdinarySetWithOwnDescriptor"},{"type":"clause","id":"sec-ordinarysetwithowndescriptor","aoid":"OrdinarySetWithOwnDescriptor","title":"OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )","titleHTML":"OrdinarySetWithOwnDescriptor ( <var>O</var>, <var>P</var>, <var>V</var>, <var>Receiver</var>, <var>ownDesc</var> )","number":"9.1.9.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2368"],"key":"OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-set-p-v-receiver","aoid":null,"title":"[[Set]] ( P, V, Receiver )","titleHTML":"[[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )","number":"9.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[Set]] ( P, V, Receiver )"},{"type":"op","aoid":"OrdinaryDelete","refId":"sec-ordinarydelete","location":"","referencingIds":[],"key":"OrdinaryDelete"},{"type":"clause","id":"sec-ordinarydelete","aoid":"OrdinaryDelete","title":"OrdinaryDelete ( O, P )","titleHTML":"OrdinaryDelete ( <var>O</var>, <var>P</var> )","number":"9.1.10.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2380","_ref_2784","_ref_2929"],"key":"OrdinaryDelete ( O, P )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-delete-p","aoid":null,"title":"[[Delete]] ( P )","titleHTML":"[[Delete]] ( <var>P</var> )","number":"9.1.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[Delete]] ( P )"},{"type":"op","aoid":"OrdinaryOwnPropertyKeys","refId":"sec-ordinaryownpropertykeys","location":"","referencingIds":[],"key":"OrdinaryOwnPropertyKeys"},{"type":"clause","id":"sec-ordinaryownpropertykeys","aoid":"OrdinaryOwnPropertyKeys","title":"OrdinaryOwnPropertyKeys ( O )","titleHTML":"OrdinaryOwnPropertyKeys ( <var>O</var> )","number":"9.1.11.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2383","_ref_2931"],"key":"OrdinaryOwnPropertyKeys ( O )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots-ownpropertykeys","aoid":null,"title":"[[OwnPropertyKeys]] ( )","titleHTML":"[[OwnPropertyKeys]] ( )","number":"9.1.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[OwnPropertyKeys]] ( )"},{"type":"op","aoid":"ObjectCreate","refId":"sec-objectcreate","location":"","referencingIds":[],"key":"ObjectCreate"},{"type":"clause","id":"sec-objectcreate","aoid":"ObjectCreate","title":"ObjectCreate ( proto [ , internalSlotsList ] )","titleHTML":"ObjectCreate ( <var>proto</var> [ , <var>internalSlotsList</var> ] )","number":"9.1.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1352","_ref_1788","_ref_1792","_ref_2083","_ref_2092","_ref_2395","_ref_2535","_ref_2785","_ref_2801","_ref_3198","_ref_3200","_ref_3576","_ref_3706","_ref_4122","_ref_4127","_ref_4137","_ref_4146","_ref_4154","_ref_4214","_ref_4220","_ref_4229","_ref_4238","_ref_4246","_ref_4270","_ref_4890","_ref_4903","_ref_4924","_ref_4938","_ref_5017","_ref_5020","_ref_5962","_ref_6150","_ref_6768","_ref_6789","_ref_7219","_ref_7283","_ref_7721","_ref_7763","_ref_7824","_ref_8381"],"key":"ObjectCreate ( proto [ , internalSlotsList ] )"},{"type":"op","aoid":"OrdinaryCreateFromConstructor","refId":"sec-ordinarycreatefromconstructor","location":"","referencingIds":[],"key":"OrdinaryCreateFromConstructor"},{"type":"clause","id":"sec-ordinarycreatefromconstructor","aoid":"OrdinaryCreateFromConstructor","title":"OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )","titleHTML":"OrdinaryCreateFromConstructor ( <var>constructor</var>, <var>intrinsicDefaultProto</var> [ , <var>internalSlotsList</var> ] )","number":"9.1.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2472","_ref_4117","_ref_4209","_ref_4889","_ref_5084","_ref_5138","_ref_5158","_ref_5176","_ref_5425","_ref_5440","_ref_5446","_ref_6097","_ref_7152","_ref_7238","_ref_7300","_ref_7334","_ref_7361","_ref_7472","_ref_7531","_ref_8159"],"key":"OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )"},{"type":"op","aoid":"GetPrototypeFromConstructor","refId":"sec-getprototypefromconstructor","location":"","referencingIds":[],"key":"GetPrototypeFromConstructor"},{"type":"clause","id":"sec-getprototypefromconstructor","aoid":"GetPrototypeFromConstructor","title":"GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )","titleHTML":"GetPrototypeFromConstructor ( <var>constructor</var>, <var>intrinsicDefaultProto</var> )","number":"9.1.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2394","_ref_5014","_ref_5761","_ref_6326","_ref_6331","_ref_6341","_ref_7082"],"key":"GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )"},{"type":"clause","id":"sec-ordinary-object-internal-methods-and-internal-slots","aoid":null,"title":"Ordinary Object Internal Methods and Internal Slots","titleHTML":"Ordinary Object Internal Methods and Internal Slots","number":"9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_186","_ref_191","_ref_199","_ref_203","_ref_204","_ref_208","_ref_209","_ref_211","_ref_212","_ref_217","_ref_223","_ref_226","_ref_228"],"key":"Ordinary Object Internal Methods and Internal Slots"},{"type":"term","term":"strict function","refId":"sec-ecmascript-function-objects","referencingIds":["_ref_2422","_ref_4760","_ref_4762","_ref_8606"],"id":"strict-function","namespace":"https://tc39.github.io/ecma262/","location":"","key":"strict function"},{"type":"term","term":"non-strict function","refId":"sec-ecmascript-function-objects","referencingIds":["_ref_2423"],"id":"non-strict-function","namespace":"https://tc39.github.io/ecma262/","location":"","key":"non-strict function"},{"type":"table","id":"table-27","number":27,"caption":"Table 27: Internal Slots of ECMAScript Function Objects","referencingIds":["_ref_188","_ref_190","_ref_201","_ref_475","_ref_691","_ref_693","_ref_697","_ref_699","_ref_717","_ref_718"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 27: Internal Slots of ECMAScript Function Objects"},{"type":"op","aoid":"PrepareForOrdinaryCall","refId":"sec-prepareforordinarycall","location":"","referencingIds":[],"key":"PrepareForOrdinaryCall"},{"type":"clause","id":"sec-prepareforordinarycall","aoid":"PrepareForOrdinaryCall","title":"PrepareForOrdinaryCall ( F, newTarget )","titleHTML":"PrepareForOrdinaryCall ( <var>F</var>, <var>newTarget</var> )","number":"9.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2429","_ref_2473"],"key":"PrepareForOrdinaryCall ( F, newTarget )"},{"type":"op","aoid":"OrdinaryCallBindThis","refId":"sec-ordinarycallbindthis","location":"","referencingIds":[],"key":"OrdinaryCallBindThis"},{"type":"clause","id":"sec-ordinarycallbindthis","aoid":"OrdinaryCallBindThis","title":"OrdinaryCallBindThis ( F, calleeContext, thisArgument )","titleHTML":"OrdinaryCallBindThis ( <var>F</var>, <var>calleeContext</var>, <var>thisArgument</var> )","number":"9.2.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_791","_ref_2432","_ref_2476"],"key":"OrdinaryCallBindThis ( F, calleeContext, thisArgument )"},{"type":"op","aoid":"OrdinaryCallEvaluateBody","refId":"sec-ordinarycallevaluatebody","location":"","referencingIds":[],"key":"OrdinaryCallEvaluateBody"},{"type":"clause","id":"sec-ordinarycallevaluatebody","aoid":"OrdinaryCallEvaluateBody","title":"OrdinaryCallEvaluateBody ( F, argumentsList )","titleHTML":"OrdinaryCallEvaluateBody ( <var>F</var>, <var>argumentsList</var> )","number":"9.2.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2433","_ref_2478"],"key":"OrdinaryCallEvaluateBody ( F, argumentsList )"},{"type":"clause","id":"sec-ecmascript-function-objects-call-thisargument-argumentslist","aoid":null,"title":"[[Call]] ( thisArgument, argumentsList )","titleHTML":"[[Call]] ( <var>thisArgument</var>, <var>argumentsList</var> )","number":"9.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_192","_ref_354"],"key":"[[Call]] ( thisArgument, argumentsList )"},{"type":"clause","id":"sec-ecmascript-function-objects-construct-argumentslist-newtarget","aoid":null,"title":"[[Construct]] ( argumentsList, newTarget )","titleHTML":"[[Construct]] ( <var>argumentsList</var>, <var>newTarget</var> )","number":"9.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_193"],"key":"[[Construct]] ( argumentsList, newTarget )"},{"type":"op","aoid":"FunctionAllocate","refId":"sec-functionallocate","location":"","referencingIds":[],"key":"FunctionAllocate"},{"type":"clause","id":"sec-functionallocate","aoid":"FunctionAllocate","title":"FunctionAllocate ( functionPrototype, strict, functionKind )","titleHTML":"FunctionAllocate ( <var>functionPrototype</var>, <var>strict</var>, <var>functionKind</var> )","number":"9.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2500","_ref_2506","_ref_2512","_ref_2518","_ref_5015"],"key":"FunctionAllocate ( functionPrototype, strict, functionKind )"},{"type":"op","aoid":"FunctionInitialize","refId":"sec-functioninitialize","location":"","referencingIds":[],"key":"FunctionInitialize"},{"type":"clause","id":"sec-functioninitialize","aoid":"FunctionInitialize","title":"FunctionInitialize ( F, kind, ParameterList, Body, Scope )","titleHTML":"FunctionInitialize ( <var>F</var>, <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var> )","number":"9.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2501","_ref_2507","_ref_2513","_ref_2519","_ref_5016"],"key":"FunctionInitialize ( F, kind, ParameterList, Body, Scope )"},{"type":"op","aoid":"FunctionCreate","refId":"sec-functioncreate","location":"","referencingIds":[],"key":"FunctionCreate"},{"type":"clause","id":"sec-functioncreate","aoid":"FunctionCreate","title":"FunctionCreate ( kind, ParameterList, Body, Scope, Strict [ , prototype ] )","titleHTML":"FunctionCreate ( <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>, <var>Strict</var> [ , <var>prototype</var> ] )","number":"9.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4039","_ref_4042","_ref_4051","_ref_4057","_ref_4084","_ref_4092","_ref_4101","_ref_4108"],"key":"FunctionCreate ( kind, ParameterList, Body, Scope, Strict [ , prototype ] )"},{"type":"op","aoid":"GeneratorFunctionCreate","refId":"sec-generatorfunctioncreate","location":"","referencingIds":[],"key":"GeneratorFunctionCreate"},{"type":"clause","id":"sec-generatorfunctioncreate","aoid":"GeneratorFunctionCreate","title":"GeneratorFunctionCreate ( kind, ParameterList, Body, Scope, Strict )","titleHTML":"GeneratorFunctionCreate ( <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>, <var>Strict</var> )","number":"9.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4121","_ref_4126","_ref_4135","_ref_4145","_ref_4153"],"key":"GeneratorFunctionCreate ( kind, ParameterList, Body, Scope, Strict )"},{"type":"op","aoid":"AsyncGeneratorFunctionCreate","refId":"sec-asyncgeneratorfunctioncreate","location":"","referencingIds":[],"key":"AsyncGeneratorFunctionCreate"},{"type":"clause","id":"sec-asyncgeneratorfunctioncreate","aoid":"AsyncGeneratorFunctionCreate","title":"AsyncGeneratorFunctionCreate ( kind, ParameterList, Body, Scope, Strict )","titleHTML":"AsyncGeneratorFunctionCreate ( <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>, <var>Strict</var> )","number":"9.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4213","_ref_4219","_ref_4227","_ref_4237","_ref_4245"],"key":"AsyncGeneratorFunctionCreate ( kind, ParameterList, Body, Scope, Strict )"},{"type":"op","aoid":"AsyncFunctionCreate","refId":"sec-async-functions-abstract-operations-async-function-create","location":"","referencingIds":[],"key":"AsyncFunctionCreate"},{"type":"clause","id":"sec-async-functions-abstract-operations-async-function-create","aoid":"AsyncFunctionCreate","title":"AsyncFunctionCreate ( kind, parameters, body, Scope, Strict )","titleHTML":"AsyncFunctionCreate ( <var>kind</var>, <var>parameters</var>, <var>body</var>, <var>Scope</var>, <var>Strict</var> )","number":"9.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4299","_ref_4302","_ref_4316","_ref_4325","_ref_4330","_ref_4359","_ref_4362"],"key":"AsyncFunctionCreate ( kind, parameters, body, Scope, Strict )"},{"type":"term","term":"%ThrowTypeError%","refId":"sec-%throwtypeerror%","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ThrowTypeError%"},{"type":"clause","id":"sec-%throwtypeerror%","aoid":null,"title":"%ThrowTypeError% ( )","titleHTML":"%ThrowTypeError% ( )","number":"9.2.9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_171","_ref_1178","_ref_2085","_ref_2087","_ref_2523","_ref_2524","_ref_2793","_ref_2794"],"key":"%ThrowTypeError% ( )"},{"type":"op","aoid":"AddRestrictedFunctionProperties","refId":"sec-addrestrictedfunctionproperties","location":"","referencingIds":[],"key":"AddRestrictedFunctionProperties"},{"type":"clause","id":"sec-addrestrictedfunctionproperties","aoid":"AddRestrictedFunctionProperties","title":"AddRestrictedFunctionProperties ( F, realm )","titleHTML":"AddRestrictedFunctionProperties ( <var>F</var>, <var>realm</var> )","number":"9.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_359","_ref_2090"],"key":"AddRestrictedFunctionProperties ( F, realm )"},{"type":"op","aoid":"MakeConstructor","refId":"sec-makeconstructor","location":"","referencingIds":[],"key":"MakeConstructor"},{"type":"clause","id":"sec-makeconstructor","aoid":"MakeConstructor","title":"MakeConstructor ( F [ , writablePrototype [ , prototype ] ] )","titleHTML":"MakeConstructor ( <var>F</var> [ , <var>writablePrototype</var> [ , <var>prototype</var> ] ] )","number":"9.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4040","_ref_4043","_ref_4052","_ref_4058","_ref_4276","_ref_5023"],"key":"MakeConstructor ( F [ , writablePrototype [ , prototype ] ] )"},{"type":"op","aoid":"MakeClassConstructor","refId":"sec-makeclassconstructor","location":"","referencingIds":[],"key":"MakeClassConstructor"},{"type":"clause","id":"sec-makeclassconstructor","aoid":"MakeClassConstructor","title":"MakeClassConstructor ( F )","titleHTML":"MakeClassConstructor ( <var>F</var> )","number":"9.2.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4277"],"key":"MakeClassConstructor ( F )"},{"type":"op","aoid":"MakeMethod","refId":"sec-makemethod","location":"","referencingIds":[],"key":"MakeMethod"},{"type":"clause","id":"sec-makemethod","aoid":"MakeMethod","title":"MakeMethod ( F, homeObject )","titleHTML":"MakeMethod ( <var>F</var>, <var>homeObject</var> )","number":"9.2.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4086","_ref_4093","_ref_4102","_ref_4109","_ref_4136","_ref_4228","_ref_4317"],"key":"MakeMethod ( F, homeObject )"},{"type":"op","aoid":"SetFunctionName","refId":"sec-setfunctionname","location":"","referencingIds":[],"key":"SetFunctionName"},{"type":"clause","id":"sec-setfunctionname","aoid":"SetFunctionName","title":"SetFunctionName ( F, name [ , prefix ] )","titleHTML":"SetFunctionName ( <var>F</var>, <var>name</var> [ , <var>prefix</var> ] )","number":"9.2.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4041","_ref_4044","_ref_4046","_ref_4059","_ref_4081","_ref_4096","_ref_4103","_ref_4110","_ref_4125","_ref_4130","_ref_4140","_ref_4142","_ref_4157","_ref_4217","_ref_4223","_ref_4232","_ref_4234","_ref_4249","_ref_4278","_ref_4300","_ref_4303","_ref_4318","_ref_4320","_ref_4331","_ref_4356","_ref_5024","_ref_5055"],"key":"SetFunctionName ( F, name [ , prefix ] )"},{"type":"op","aoid":"SetFunctionLength","refId":"sec-setfunctionlength","location":"","referencingIds":[],"key":"SetFunctionLength"},{"type":"clause","id":"sec-setfunctionlength","aoid":"SetFunctionLength","title":"SetFunctionLength ( F, length )","titleHTML":"SetFunctionLength ( <var>F</var>, <var>length</var> )","number":"9.2.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2494","_ref_5052"],"key":"SetFunctionLength ( F, length )"},{"type":"op","aoid":"FunctionDeclarationInstantiation","refId":"sec-functiondeclarationinstantiation","location":"","referencingIds":[],"key":"FunctionDeclarationInstantiation"},{"type":"clause","id":"sec-functiondeclarationinstantiation","aoid":"FunctionDeclarationInstantiation","title":"FunctionDeclarationInstantiation ( func, argumentsList )","titleHTML":"FunctionDeclarationInstantiation ( <var>func</var>, <var>argumentsList</var> )","number":"9.2.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_304","_ref_347","_ref_788","_ref_4023","_ref_4078","_ref_4116","_ref_4208","_ref_4307","_ref_4350","_ref_8738"],"key":"FunctionDeclarationInstantiation ( func, argumentsList )"},{"type":"clause","id":"sec-ecmascript-function-objects","aoid":null,"title":"ECMAScript Function Objects","titleHTML":"ECMAScript Function Objects","number":"9.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_198","_ref_254","_ref_353"],"key":"ECMAScript Function Objects"},{"type":"clause","id":"sec-built-in-function-objects-call-thisargument-argumentslist","aoid":null,"title":"[[Call]] ( thisArgument, argumentsList )","titleHTML":"[[Call]] ( <var>thisArgument</var>, <var>argumentsList</var> )","number":"9.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_200"],"key":"[[Call]] ( thisArgument, argumentsList )"},{"type":"clause","id":"sec-built-in-function-objects-construct-argumentslist-newtarget","aoid":null,"title":"[[Construct]] ( argumentsList, newTarget )","titleHTML":"[[Construct]] ( <var>argumentsList</var>, <var>newTarget</var> )","number":"9.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[Construct]] ( argumentsList, newTarget )"},{"type":"op","aoid":"CreateBuiltinFunction","refId":"sec-createbuiltinfunction","location":"","referencingIds":[],"key":"CreateBuiltinFunction"},{"type":"clause","id":"sec-createbuiltinfunction","aoid":"CreateBuiltinFunction","title":"CreateBuiltinFunction ( steps, internalSlotsList [ , realm [ , prototype ] ] )","titleHTML":"CreateBuiltinFunction ( <var>steps</var>, <var>internalSlotsList</var> [ , <var>realm</var> [ , <var>prototype</var> ] ] )","number":"9.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_402","_ref_1222","_ref_1223","_ref_1794","_ref_2086","_ref_2088","_ref_2091","_ref_2814","_ref_2818","_ref_4781","_ref_4927","_ref_7872","_ref_8020","_ref_8021","_ref_8091","_ref_8092","_ref_8119","_ref_8197","_ref_8257","_ref_8258","_ref_8380"],"key":"CreateBuiltinFunction ( steps, internalSlotsList [ , realm [ , prototype ] ] )"},{"type":"clause","id":"sec-built-in-function-objects","aoid":null,"title":"Built-in Function Objects","titleHTML":"Built-in Function Objects","number":"9.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_398","_ref_399","_ref_473"],"key":"Built-in Function Objects"},{"type":"term","term":"bound function","refId":"sec-bound-function-exotic-objects","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"bound function"},{"type":"table","id":"table-28","number":28,"caption":"Table 28: Internal Slots of Bound Function Exotic Objects","referencingIds":["_ref_202","_ref_477"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 28: Internal Slots of Bound Function Exotic Objects"},{"type":"clause","id":"sec-bound-function-exotic-objects-call-thisargument-argumentslist","aoid":null,"title":"[[Call]] ( thisArgument, argumentsList )","titleHTML":"[[Call]] ( <var>thisArgument</var>, <var>argumentsList</var> )","number":"9.4.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_205"],"key":"[[Call]] ( thisArgument, argumentsList )"},{"type":"clause","id":"sec-bound-function-exotic-objects-construct-argumentslist-newtarget","aoid":null,"title":"[[Construct]] ( argumentsList, newTarget )","titleHTML":"[[Construct]] ( <var>argumentsList</var>, <var>newTarget</var> )","number":"9.4.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_206"],"key":"[[Construct]] ( argumentsList, newTarget )"},{"type":"op","aoid":"BoundFunctionCreate","refId":"sec-boundfunctioncreate","location":"","referencingIds":[],"key":"BoundFunctionCreate"},{"type":"clause","id":"sec-boundfunctioncreate","aoid":"BoundFunctionCreate","title":"BoundFunctionCreate ( targetFunction, boundThis, boundArgs )","titleHTML":"BoundFunctionCreate ( <var>targetFunction</var>, <var>boundThis</var>, <var>boundArgs</var> )","number":"9.4.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5047"],"key":"BoundFunctionCreate ( targetFunction, boundThis, boundArgs )"},{"type":"clause","id":"sec-bound-function-exotic-objects","aoid":null,"title":"Bound Function Exotic Objects","titleHTML":"Bound Function Exotic Objects","number":"9.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_472","_ref_2629","_ref_2633","_ref_5044","_ref_5056","_ref_5063","_ref_5072","_ref_8628"],"key":"Bound Function Exotic Objects"},{"type":"clause","id":"sec-array-exotic-objects-defineownproperty-p-desc","aoid":null,"title":"[[DefineOwnProperty]] ( P, Desc )","titleHTML":"[[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )","number":"9.4.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_210","_ref_578","_ref_802"],"key":"[[DefineOwnProperty]] ( P, Desc )"},{"type":"op","aoid":"ArrayCreate","refId":"sec-arraycreate","location":"","referencingIds":[],"key":"ArrayCreate"},{"type":"clause","id":"sec-arraycreate","aoid":"ArrayCreate","title":"ArrayCreate ( length [ , proto ] )","titleHTML":"ArrayCreate ( <var>length</var> [ , <var>proto</var> ] )","number":"9.4.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1678","_ref_2677","_ref_2687","_ref_3181","_ref_3184","_ref_3185","_ref_3189","_ref_3190","_ref_3194","_ref_3241","_ref_3242","_ref_3601","_ref_3732","_ref_3744","_ref_5911","_ref_6145","_ref_6200","_ref_6277","_ref_6327","_ref_6332","_ref_6342","_ref_6354","_ref_6373","_ref_6384"],"key":"ArrayCreate ( length [ , proto ] )"},{"type":"op","aoid":"ArraySpeciesCreate","refId":"sec-arrayspeciescreate","location":"","referencingIds":[],"key":"ArraySpeciesCreate"},{"type":"clause","id":"sec-arrayspeciescreate","aoid":"ArraySpeciesCreate","title":"ArraySpeciesCreate ( originalArray, length )","titleHTML":"ArraySpeciesCreate ( <var>originalArray</var>, <var>length</var> )","number":"9.4.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6397","_ref_6460","_ref_6488","_ref_6505","_ref_6563","_ref_6646","_ref_6712"],"key":"ArraySpeciesCreate ( originalArray, length )"},{"type":"op","aoid":"ArraySetLength","refId":"sec-arraysetlength","location":"","referencingIds":[],"key":"ArraySetLength"},{"type":"clause","id":"sec-arraysetlength","aoid":"ArraySetLength","title":"ArraySetLength ( A, Desc )","titleHTML":"ArraySetLength ( <var>A</var>, <var>Desc</var> )","number":"9.4.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2660"],"key":"ArraySetLength ( A, Desc )"},{"type":"clause","id":"sec-array-exotic-objects","aoid":null,"title":"Array Exotic Objects","titleHTML":"Array Exotic Objects","number":"9.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_575"],"key":"Array Exotic Objects"},{"type":"clause","id":"sec-string-exotic-objects-getownproperty-p","aoid":null,"title":"[[GetOwnProperty]] ( P )","titleHTML":"[[GetOwnProperty]] ( <var>P</var> )","number":"9.4.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_213"],"key":"[[GetOwnProperty]] ( P )"},{"type":"clause","id":"sec-string-exotic-objects-defineownproperty-p-desc","aoid":null,"title":"[[DefineOwnProperty]] ( P, Desc )","titleHTML":"[[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )","number":"9.4.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_214"],"key":"[[DefineOwnProperty]] ( P, Desc )"},{"type":"clause","id":"sec-string-exotic-objects-ownpropertykeys","aoid":null,"title":"[[OwnPropertyKeys]] ( )","titleHTML":"[[OwnPropertyKeys]] ( )","number":"9.4.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_215"],"key":"[[OwnPropertyKeys]] ( )"},{"type":"op","aoid":"StringCreate","refId":"sec-stringcreate","location":"","referencingIds":[],"key":"StringCreate"},{"type":"clause","id":"sec-stringcreate","aoid":"StringCreate","title":"StringCreate ( value, prototype )","titleHTML":"StringCreate ( <var>value</var>, <var>prototype</var> )","number":"9.4.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5760"],"key":"StringCreate ( value, prototype )"},{"type":"op","aoid":"StringGetOwnProperty","refId":"sec-stringgetownproperty","location":"","referencingIds":[],"key":"StringGetOwnProperty"},{"type":"clause","id":"sec-stringgetownproperty","aoid":"StringGetOwnProperty","title":"StringGetOwnProperty ( S, P )","titleHTML":"StringGetOwnProperty ( <var>S</var>, <var>P</var> )","number":"9.4.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2716","_ref_2721"],"key":"StringGetOwnProperty ( S, P )"},{"type":"clause","id":"sec-string-exotic-objects","aoid":null,"title":"String Exotic Objects","titleHTML":"String Exotic Objects","number":"9.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String Exotic Objects"},{"type":"clause","id":"sec-arguments-exotic-objects-getownproperty-p","aoid":null,"title":"[[GetOwnProperty]] ( P )","titleHTML":"[[GetOwnProperty]] ( <var>P</var> )","number":"9.4.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_218"],"key":"[[GetOwnProperty]] ( P )"},{"type":"clause","id":"sec-arguments-exotic-objects-defineownproperty-p-desc","aoid":null,"title":"[[DefineOwnProperty]] ( P, Desc )","titleHTML":"[[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )","number":"9.4.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_219"],"key":"[[DefineOwnProperty]] ( P, Desc )"},{"type":"clause","id":"sec-arguments-exotic-objects-get-p-receiver","aoid":null,"title":"[[Get]] ( P, Receiver )","titleHTML":"[[Get]] ( <var>P</var>, <var>Receiver</var> )","number":"9.4.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_220"],"key":"[[Get]] ( P, Receiver )"},{"type":"clause","id":"sec-arguments-exotic-objects-set-p-v-receiver","aoid":null,"title":"[[Set]] ( P, V, Receiver )","titleHTML":"[[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )","number":"9.4.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_221"],"key":"[[Set]] ( P, V, Receiver )"},{"type":"clause","id":"sec-arguments-exotic-objects-delete-p","aoid":null,"title":"[[Delete]] ( P )","titleHTML":"[[Delete]] ( <var>P</var> )","number":"9.4.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_222"],"key":"[[Delete]] ( P )"},{"type":"op","aoid":"CreateUnmappedArgumentsObject","refId":"sec-createunmappedargumentsobject","location":"","referencingIds":[],"key":"CreateUnmappedArgumentsObject"},{"type":"clause","id":"sec-createunmappedargumentsobject","aoid":"CreateUnmappedArgumentsObject","title":"CreateUnmappedArgumentsObject ( argumentsList )","titleHTML":"CreateUnmappedArgumentsObject ( <var>argumentsList</var> )","number":"9.4.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_785","_ref_2576"],"key":"CreateUnmappedArgumentsObject ( argumentsList )"},{"type":"op","aoid":"MakeArgGetter","refId":"sec-makearggetter","location":"","referencingIds":[],"key":"MakeArgGetter"},{"type":"clause","id":"sec-makearggetter","aoid":"MakeArgGetter","title":"MakeArgGetter ( name, env )","titleHTML":"MakeArgGetter ( <var>name</var>, <var>env</var> )","number":"9.4.4.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2806"],"key":"MakeArgGetter ( name, env )"},{"type":"op","aoid":"MakeArgSetter","refId":"sec-makeargsetter","location":"","referencingIds":[],"key":"MakeArgSetter"},{"type":"clause","id":"sec-makeargsetter","aoid":"MakeArgSetter","title":"MakeArgSetter ( name, env )","titleHTML":"MakeArgSetter ( <var>name</var>, <var>env</var> )","number":"9.4.4.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2807"],"key":"MakeArgSetter ( name, env )"},{"type":"op","aoid":"CreateMappedArgumentsObject","refId":"sec-createmappedargumentsobject","location":"","referencingIds":[],"key":"CreateMappedArgumentsObject"},{"type":"clause","id":"sec-createmappedargumentsobject","aoid":"CreateMappedArgumentsObject","title":"CreateMappedArgumentsObject ( func, formals, argumentsList, env )","titleHTML":"CreateMappedArgumentsObject ( <var>func</var>, <var>formals</var>, <var>argumentsList</var>, <var>env</var> )","number":"9.4.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2577"],"key":"CreateMappedArgumentsObject ( func, formals, argumentsList, env )"},{"type":"clause","id":"sec-arguments-exotic-objects","aoid":null,"title":"Arguments Exotic Objects","titleHTML":"Arguments Exotic Objects","number":"9.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_787"],"key":"Arguments Exotic Objects"},{"type":"term","term":"Integer-Indexed exotic object","refId":"sec-integer-indexed-exotic-objects","referencingIds":["_ref_224","_ref_225","_ref_227","_ref_650","_ref_2822","_ref_2823","_ref_2831","_ref_2840","_ref_2851","_ref_2859","_ref_2867"],"id":"integer-indexed-exotic-object","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Integer-Indexed exotic object"},{"type":"clause","id":"sec-integer-indexed-exotic-objects-getownproperty-p","aoid":null,"title":"[[GetOwnProperty]] ( P )","titleHTML":"[[GetOwnProperty]] ( <var>P</var> )","number":"9.4.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_229"],"key":"[[GetOwnProperty]] ( P )"},{"type":"clause","id":"sec-integer-indexed-exotic-objects-hasproperty-p","aoid":null,"title":"[[HasProperty]] ( P )","titleHTML":"[[HasProperty]] ( <var>P</var> )","number":"9.4.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_230"],"key":"[[HasProperty]] ( P )"},{"type":"clause","id":"sec-integer-indexed-exotic-objects-defineownproperty-p-desc","aoid":null,"title":"[[DefineOwnProperty]] ( P, Desc )","titleHTML":"[[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )","number":"9.4.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_231"],"key":"[[DefineOwnProperty]] ( P, Desc )"},{"type":"clause","id":"sec-integer-indexed-exotic-objects-get-p-receiver","aoid":null,"title":"[[Get]] ( P, Receiver )","titleHTML":"[[Get]] ( <var>P</var>, <var>Receiver</var> )","number":"9.4.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_232"],"key":"[[Get]] ( P, Receiver )"},{"type":"clause","id":"sec-integer-indexed-exotic-objects-set-p-v-receiver","aoid":null,"title":"[[Set]] ( P, V, Receiver )","titleHTML":"[[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )","number":"9.4.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_233"],"key":"[[Set]] ( P, V, Receiver )"},{"type":"clause","id":"sec-integer-indexed-exotic-objects-ownpropertykeys","aoid":null,"title":"[[OwnPropertyKeys]] ( )","titleHTML":"[[OwnPropertyKeys]] ( )","number":"9.4.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_234"],"key":"[[OwnPropertyKeys]] ( )"},{"type":"op","aoid":"IntegerIndexedObjectCreate","refId":"sec-integerindexedobjectcreate","location":"","referencingIds":[],"key":"IntegerIndexedObjectCreate"},{"type":"clause","id":"sec-integerindexedobjectcreate","aoid":"IntegerIndexedObjectCreate","title":"IntegerIndexedObjectCreate ( prototype, internalSlotsList )","titleHTML":"IntegerIndexedObjectCreate ( <var>prototype</var>, <var>internalSlotsList</var> )","number":"9.4.5.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7083"],"key":"IntegerIndexedObjectCreate ( prototype, internalSlotsList )"},{"type":"op","aoid":"IntegerIndexedElementGet","refId":"sec-integerindexedelementget","location":"","referencingIds":[],"key":"IntegerIndexedElementGet"},{"type":"clause","id":"sec-integerindexedelementget","aoid":"IntegerIndexedElementGet","title":"IntegerIndexedElementGet ( O, index )","titleHTML":"IntegerIndexedElementGet ( <var>O</var>, <var>index</var> )","number":"9.4.5.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2829","_ref_2857"],"key":"IntegerIndexedElementGet ( O, index )"},{"type":"op","aoid":"IntegerIndexedElementSet","refId":"sec-integerindexedelementset","location":"","referencingIds":[],"key":"IntegerIndexedElementSet"},{"type":"clause","id":"sec-integerindexedelementset","aoid":"IntegerIndexedElementSet","title":"IntegerIndexedElementSet ( O, index, value )","titleHTML":"IntegerIndexedElementSet ( <var>O</var>, <var>index</var>, <var>value</var> )","number":"9.4.5.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2849","_ref_2865"],"key":"IntegerIndexedElementSet ( O, index, value )"},{"type":"clause","id":"sec-integer-indexed-exotic-objects","aoid":null,"title":"Integer-Indexed Exotic Objects","titleHTML":"Integer-Indexed Exotic Objects","number":"9.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Integer-Indexed Exotic Objects"},{"type":"table","id":"table-29","number":29,"caption":"Table 29: Internal Slots of Module Namespace Exotic Objects","referencingIds":["_ref_240"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 29: Internal Slots of Module Namespace Exotic Objects"},{"type":"clause","id":"sec-module-namespace-exotic-objects-setprototypeof-v","aoid":null,"title":"[[SetPrototypeOf]] ( V )","titleHTML":"[[SetPrototypeOf]] ( <var>V</var> )","number":"9.4.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_241"],"key":"[[SetPrototypeOf]] ( V )"},{"type":"clause","id":"sec-module-namespace-exotic-objects-isextensible","aoid":null,"title":"[[IsExtensible]] ( )","titleHTML":"[[IsExtensible]] ( )","number":"9.4.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[IsExtensible]] ( )"},{"type":"clause","id":"sec-module-namespace-exotic-objects-preventextensions","aoid":null,"title":"[[PreventExtensions]] ( )","titleHTML":"[[PreventExtensions]] ( )","number":"9.4.6.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[PreventExtensions]] ( )"},{"type":"clause","id":"sec-module-namespace-exotic-objects-getownproperty-p","aoid":null,"title":"[[GetOwnProperty]] ( P )","titleHTML":"[[GetOwnProperty]] ( <var>P</var> )","number":"9.4.6.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[GetOwnProperty]] ( P )"},{"type":"clause","id":"sec-module-namespace-exotic-objects-defineownproperty-p-desc","aoid":null,"title":"[[DefineOwnProperty]] ( P, Desc )","titleHTML":"[[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )","number":"9.4.6.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[DefineOwnProperty]] ( P, Desc )"},{"type":"clause","id":"sec-module-namespace-exotic-objects-hasproperty-p","aoid":null,"title":"[[HasProperty]] ( P )","titleHTML":"[[HasProperty]] ( <var>P</var> )","number":"9.4.6.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[HasProperty]] ( P )"},{"type":"clause","id":"sec-module-namespace-exotic-objects-get-p-receiver","aoid":null,"title":"[[Get]] ( P, Receiver )","titleHTML":"[[Get]] ( <var>P</var>, <var>Receiver</var> )","number":"9.4.6.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[Get]] ( P, Receiver )"},{"type":"clause","id":"sec-module-namespace-exotic-objects-set-p-v-receiver","aoid":null,"title":"[[Set]] ( P, V, Receiver )","titleHTML":"[[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )","number":"9.4.6.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[Set]] ( P, V, Receiver )"},{"type":"clause","id":"sec-module-namespace-exotic-objects-delete-p","aoid":null,"title":"[[Delete]] ( P )","titleHTML":"[[Delete]] ( <var>P</var> )","number":"9.4.6.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[Delete]] ( P )"},{"type":"clause","id":"sec-module-namespace-exotic-objects-ownpropertykeys","aoid":null,"title":"[[OwnPropertyKeys]] ( )","titleHTML":"[[OwnPropertyKeys]] ( )","number":"9.4.6.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[OwnPropertyKeys]] ( )"},{"type":"op","aoid":"ModuleNamespaceCreate","refId":"sec-modulenamespacecreate","location":"","referencingIds":[],"key":"ModuleNamespaceCreate"},{"type":"clause","id":"sec-modulenamespacecreate","aoid":"ModuleNamespaceCreate","title":"ModuleNamespaceCreate ( module, exports )","titleHTML":"ModuleNamespaceCreate ( <var>module</var>, <var>exports</var> )","number":"9.4.6.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4675"],"key":"ModuleNamespaceCreate ( module, exports )"},{"type":"clause","id":"sec-module-namespace-exotic-objects","aoid":null,"title":"Module Namespace Exotic Objects","titleHTML":"Module Namespace Exotic Objects","number":"9.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_243","_ref_722"],"key":"Module Namespace Exotic Objects"},{"type":"term","term":"immutable prototype exotic object","refId":"sec-immutable-prototype-exotic-objects","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"immutable prototype exotic object"},{"type":"clause","id":"sec-immutable-prototype-exotic-objects-setprototypeof-v","aoid":null,"title":"[[SetPrototypeOf]] ( V )","titleHTML":"[[SetPrototypeOf]] ( <var>V</var> )","number":"9.4.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[SetPrototypeOf]] ( V )"},{"type":"op","aoid":"SetImmutablePrototype","refId":"sec-set-immutable-prototype","location":"","referencingIds":[],"key":"SetImmutablePrototype"},{"type":"clause","id":"sec-set-immutable-prototype","aoid":"SetImmutablePrototype","title":"SetImmutablePrototype ( O, V )","titleHTML":"SetImmutablePrototype ( <var>O</var>, <var>V</var> )","number":"9.4.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2897","_ref_2940"],"key":"SetImmutablePrototype ( O, V )"},{"type":"clause","id":"sec-immutable-prototype-exotic-objects","aoid":null,"title":"Immutable Prototype Exotic Objects","titleHTML":"Immutable Prototype Exotic Objects","number":"9.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2939","_ref_4971"],"key":"Immutable Prototype Exotic Objects"},{"type":"clause","id":"sec-built-in-exotic-object-internal-methods-and-slots","aoid":null,"title":"Built-in Exotic Object Internal Methods and Slots","titleHTML":"Built-in Exotic Object Internal Methods and Slots","number":"9.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Built-in Exotic Object Internal Methods and Slots"},{"type":"table","id":"table-30","number":30,"caption":"Table 30: Proxy Handler Methods","referencingIds":["_ref_245"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 30: Proxy Handler Methods"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-getprototypeof","aoid":null,"title":"[[GetPrototypeOf]] ( )","titleHTML":"[[GetPrototypeOf]] ( )","number":"9.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[GetPrototypeOf]] ( )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-setprototypeof-v","aoid":null,"title":"[[SetPrototypeOf]] ( V )","titleHTML":"[[SetPrototypeOf]] ( <var>V</var> )","number":"9.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[SetPrototypeOf]] ( V )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-isextensible","aoid":null,"title":"[[IsExtensible]] ( )","titleHTML":"[[IsExtensible]] ( )","number":"9.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[IsExtensible]] ( )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-preventextensions","aoid":null,"title":"[[PreventExtensions]] ( )","titleHTML":"[[PreventExtensions]] ( )","number":"9.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[PreventExtensions]] ( )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p","aoid":null,"title":"[[GetOwnProperty]] ( P )","titleHTML":"[[GetOwnProperty]] ( <var>P</var> )","number":"9.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[GetOwnProperty]] ( P )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-defineownproperty-p-desc","aoid":null,"title":"[[DefineOwnProperty]] ( P, Desc )","titleHTML":"[[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )","number":"9.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[DefineOwnProperty]] ( P, Desc )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-hasproperty-p","aoid":null,"title":"[[HasProperty]] ( P )","titleHTML":"[[HasProperty]] ( <var>P</var> )","number":"9.5.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[HasProperty]] ( P )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver","aoid":null,"title":"[[Get]] ( P, Receiver )","titleHTML":"[[Get]] ( <var>P</var>, <var>Receiver</var> )","number":"9.5.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[Get]] ( P, Receiver )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver","aoid":null,"title":"[[Set]] ( P, V, Receiver )","titleHTML":"[[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )","number":"9.5.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[Set]] ( P, V, Receiver )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-delete-p","aoid":null,"title":"[[Delete]] ( P )","titleHTML":"[[Delete]] ( <var>P</var> )","number":"9.5.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[Delete]] ( P )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys","aoid":null,"title":"[[OwnPropertyKeys]] ( )","titleHTML":"[[OwnPropertyKeys]] ( )","number":"9.5.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"[[OwnPropertyKeys]] ( )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist","aoid":null,"title":"[[Call]] ( thisArgument, argumentsList )","titleHTML":"[[Call]] ( <var>thisArgument</var>, <var>argumentsList</var> )","number":"9.5.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_249"],"key":"[[Call]] ( thisArgument, argumentsList )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget","aoid":null,"title":"[[Construct]] ( argumentsList, newTarget )","titleHTML":"[[Construct]] ( <var>argumentsList</var>, <var>newTarget</var> )","number":"9.5.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_250"],"key":"[[Construct]] ( argumentsList, newTarget )"},{"type":"op","aoid":"ProxyCreate","refId":"sec-proxycreate","location":"","referencingIds":[],"key":"ProxyCreate"},{"type":"clause","id":"sec-proxycreate","aoid":"ProxyCreate","title":"ProxyCreate ( target, handler )","titleHTML":"ProxyCreate ( <var>target</var>, <var>handler</var> )","number":"9.5.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8376","_ref_8379"],"key":"ProxyCreate ( target, handler )"},{"type":"clause","id":"sec-proxy-object-internal-methods-and-internal-slots","aoid":null,"title":"Proxy Object Internal Methods and Internal Slots","titleHTML":"Proxy Object Internal Methods and Internal Slots","number":"9.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_248"],"key":"Proxy Object Internal Methods and Internal Slots"},{"type":"clause","id":"sec-ordinary-and-exotic-objects-behaviours","aoid":null,"title":"Ordinary and Exotic Objects Behaviours","titleHTML":"Ordinary and Exotic Objects Behaviours","number":"9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_48","_ref_750"],"key":"Ordinary and Exotic Objects Behaviours"},{"type":"production","id":"prod-SourceCharacter","name":"SourceCharacter","referencingIds":["_ref_8795","_ref_8802","_ref_8804","_ref_9095","_ref_9096","_ref_9216","_ref_9230","_ref_9231","_ref_9235","_ref_9265","_ref_9267","_ref_9302","_ref_9343","_ref_9450","_ref_9454","_ref_9466","_ref_9480","_ref_9501","_ref_9503","_ref_9507","_ref_9509","_ref_9523","_ref_9526","_ref_9560","_ref_9592","_ref_9638","_ref_9640","_ref_9663","_ref_9665","_ref_9709","_ref_9714","_ref_9738","_ref_14388","_ref_14427","_ref_14462","_ref_14522","_ref_14525","_ref_14526","_ref_14567","_ref_14568","_ref_14569","_ref_14769","_ref_14770","_ref_14788","_ref_14929","_ref_14934","_ref_14971","_ref_14987","_ref_14988","_ref_14989"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SourceCharacter"},{"type":"op","aoid":"UTF16Encoding","refId":"sec-utf16encoding","location":"","referencingIds":[],"key":"UTF16Encoding"},{"type":"clause","id":"sec-utf16encoding","aoid":"UTF16Encoding","title":"Static Semantics: UTF16Encoding ( cp )","titleHTML":"Static Semantics: UTF16Encoding ( <var>cp</var> )","number":"10.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_287","_ref_3115","_ref_3116","_ref_3117","_ref_3118","_ref_3123","_ref_3124","_ref_3125","_ref_3126","_ref_3128","_ref_3129","_ref_3219","_ref_3220","_ref_4874","_ref_5773","_ref_5947","_ref_5973","_ref_5974","_ref_5975","_ref_5987","_ref_6155","_ref_7793"],"key":"Static Semantics: UTF16Encoding ( cp )"},{"type":"op","aoid":"UTF16Decode","refId":"sec-utf16decode","location":"","referencingIds":[],"key":"UTF16Decode"},{"type":"clause","id":"sec-utf16decode","aoid":"UTF16Decode","title":"Static Semantics: UTF16Decode ( lead, trail )","titleHTML":"Static Semantics: UTF16Decode ( <var>lead</var>, <var>trail</var> )","number":"10.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_18","_ref_4867","_ref_5805","_ref_5985","_ref_5993"],"key":"Static Semantics: UTF16Decode ( lead, trail )"},{"type":"clause","id":"sec-source-text","aoid":null,"title":"Source Text","titleHTML":"Source Text","number":"10.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8","_ref_189","_ref_291"],"key":"Source Text"},{"type":"term","term":"strict mode code","refId":"sec-strict-mode-code","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"strict mode code"},{"type":"term","term":"non-strict code","refId":"sec-strict-mode-code","referencingIds":["_ref_2409","_ref_3156","_ref_3157","_ref_4365","_ref_8621","_ref_8734","_ref_8736","_ref_8768","_ref_8772"],"id":"non-strict-code","namespace":"https://tc39.github.io/ecma262/","location":"","key":"non-strict code"},{"type":"clause","id":"sec-strict-mode-code","aoid":null,"title":"Strict Mode Code","titleHTML":"Strict Mode Code","number":"10.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_187","_ref_1824","_ref_2013","_ref_2145","_ref_2408","_ref_2411","_ref_2412","_ref_3119","_ref_3120","_ref_3121","_ref_3122","_ref_3131","_ref_3132","_ref_3136","_ref_3141","_ref_3276","_ref_3280","_ref_3298","_ref_3329","_ref_3332","_ref_3389","_ref_3406","_ref_3407","_ref_3534","_ref_3905","_ref_4012","_ref_4013","_ref_4014","_ref_4038","_ref_4045","_ref_4049","_ref_4053","_ref_4082","_ref_4089","_ref_4099","_ref_4106","_ref_4113","_ref_4114","_ref_4120","_ref_4131","_ref_4133","_ref_4143","_ref_4149","_ref_4205","_ref_4206","_ref_4212","_ref_4218","_ref_4225","_ref_4235","_ref_4241","_ref_4250","_ref_4298","_ref_4301","_ref_4314","_ref_4323","_ref_4326","_ref_4357","_ref_4360","_ref_4366","_ref_4754","_ref_4755","_ref_4764","_ref_4765","_ref_4827","_ref_8589","_ref_8590","_ref_8591","_ref_8592","_ref_8594","_ref_8599","_ref_8600","_ref_8602","_ref_8603","_ref_8604","_ref_8605","_ref_8619","_ref_8634","_ref_8635","_ref_8763","_ref_8764"],"key":"Strict Mode Code"},{"type":"clause","id":"sec-non-ecmascript-functions","aoid":null,"title":"Non-ECMAScript Functions","titleHTML":"Non-ECMAScript Functions","number":"10.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Non-ECMAScript Functions"},{"type":"clause","id":"sec-types-of-source-code","aoid":null,"title":"Types of Source Code","titleHTML":"Types of Source Code","number":"10.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_196"],"key":"Types of Source Code"},{"type":"clause","id":"sec-ecmascript-language-source-code","aoid":null,"title":"ECMAScript Language: Source Code","titleHTML":"ECMAScript Language: Source Code","number":"10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_183","_ref_363","_ref_366","_ref_375","_ref_382","_ref_383"],"key":"ECMAScript Language: Source Code"},{"type":"production","id":"prod-InputElementDiv","name":"InputElementDiv","referencingIds":["_ref_8796","_ref_9170"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"InputElementDiv"},{"type":"production","id":"prod-InputElementRegExp","name":"InputElementRegExp","referencingIds":["_ref_8798","_ref_9162"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"InputElementRegExp"},{"type":"production","id":"prod-InputElementRegExpOrTemplateTail","name":"InputElementRegExpOrTemplateTail","referencingIds":["_ref_8799","_ref_9158","_ref_12936"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"InputElementRegExpOrTemplateTail"},{"type":"production","id":"prod-InputElementTemplateTail","name":"InputElementTemplateTail","referencingIds":["_ref_8797","_ref_9166","_ref_9621"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"InputElementTemplateTail"},{"type":"table","id":"table-31","number":31,"caption":"Table 31: Format-Control Code Point Usage","referencingIds":["_ref_267"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 31: Format-Control Code Point Usage"},{"type":"clause","id":"sec-unicode-format-control-characters","aoid":null,"title":"Unicode Format-Control Characters","titleHTML":"Unicode Format-Control Characters","number":"11.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Unicode Format-Control Characters"},{"type":"table","id":"table-32","number":32,"caption":"Table 32: White Space Code Points","referencingIds":["_ref_268","_ref_269","_ref_273"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 32: White Space Code Points"},{"type":"production","id":"prod-WhiteSpace","name":"WhiteSpace","referencingIds":["_ref_8941","_ref_9174","_ref_9180","_ref_9186","_ref_9192","_ref_9201","_ref_9207","_ref_9208","_ref_14359","_ref_14715","_ref_14936"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"WhiteSpace"},{"type":"clause","id":"sec-white-space","aoid":null,"title":"White Space","titleHTML":"White Space","number":"11.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_266","_ref_563"],"key":"White Space"},{"type":"table","id":"table-33","number":33,"caption":"Table 33: Line Terminator Code Points","referencingIds":["_ref_271","_ref_272"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 33: Line Terminator Code Points"},{"type":"production","id":"prod-LineTerminator","name":"LineTerminator","referencingIds":["_ref_8909","_ref_8910","_ref_8911","_ref_8913","_ref_8915","_ref_8916","_ref_8942","_ref_9172","_ref_9173","_ref_9175","_ref_9181","_ref_9187","_ref_9193","_ref_9217","_ref_9218","_ref_9220","_ref_9236","_ref_9451","_ref_9455","_ref_9468","_ref_9502","_ref_9508","_ref_9525","_ref_9561","_ref_9593","_ref_9639","_ref_9664","_ref_9745","_ref_9746","_ref_9747","_ref_9749","_ref_9751","_ref_9752","_ref_9754","_ref_9756","_ref_9758","_ref_9761","_ref_9763","_ref_9765","_ref_9767","_ref_9768","_ref_9772","_ref_9773","_ref_10388","_ref_10390","_ref_11458","_ref_12047","_ref_12056","_ref_12065","_ref_12387","_ref_12740","_ref_12932","_ref_12934","_ref_13070","_ref_13074","_ref_13078","_ref_13081","_ref_13350","_ref_13354","_ref_13357","_ref_13360","_ref_13364","_ref_13523","_ref_13525","_ref_13528","_ref_13538","_ref_14110","_ref_14360","_ref_14637","_ref_14638","_ref_14661","_ref_14716","_ref_14793","_ref_14915","_ref_14930","_ref_14935","_ref_14943","_ref_15267"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LineTerminator"},{"type":"production","id":"prod-LineTerminatorSequence","name":"LineTerminatorSequence","referencingIds":["_ref_9458","_ref_9591","_ref_9646","_ref_9647","_ref_9648","_ref_9672","_ref_9673","_ref_9740","_ref_9741","_ref_9743","_ref_14920"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LineTerminatorSequence"},{"type":"clause","id":"sec-line-terminators","aoid":null,"title":"Line Terminators","titleHTML":"Line Terminators","number":"11.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Line Terminators"},{"type":"production","id":"prod-Comment","name":"Comment","referencingIds":["_ref_9176","_ref_9182","_ref_9188","_ref_9194","_ref_9206"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Comment"},{"type":"production","id":"prod-MultiLineComment","name":"MultiLineComment","referencingIds":["_ref_8800","_ref_8801","_ref_9214","_ref_9219","_ref_9221"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MultiLineComment"},{"type":"production","id":"prod-MultiLineCommentChars","name":"MultiLineCommentChars","referencingIds":["_ref_9223","_ref_9225","_ref_9228","_ref_14916"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MultiLineCommentChars"},{"type":"production","id":"prod-PostAsteriskCommentChars","name":"PostAsteriskCommentChars","referencingIds":["_ref_9226","_ref_9229"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"PostAsteriskCommentChars"},{"type":"production","id":"prod-MultiLineNotAsteriskChar","name":"MultiLineNotAsteriskChar","referencingIds":["_ref_9224"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MultiLineNotAsteriskChar"},{"type":"production","id":"prod-MultiLineNotForwardSlashOrAsteriskChar","name":"MultiLineNotForwardSlashOrAsteriskChar","referencingIds":["_ref_9227"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MultiLineNotForwardSlashOrAsteriskChar"},{"type":"production","id":"prod-SingleLineComment","name":"SingleLineComment","referencingIds":["_ref_9215","_ref_9222","_ref_14795","_ref_14910"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SingleLineComment"},{"type":"production","id":"prod-SingleLineCommentChars","name":"SingleLineCommentChars","referencingIds":["_ref_9232","_ref_9234","_ref_14919","_ref_14925"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SingleLineCommentChars"},{"type":"production","id":"prod-SingleLineCommentChar","name":"SingleLineCommentChar","referencingIds":["_ref_9233"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SingleLineCommentChar"},{"type":"clause","id":"sec-comments","aoid":null,"title":"Comments","titleHTML":"Comments","number":"11.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_726"],"key":"Comments"},{"type":"production","id":"prod-CommonToken","name":"CommonToken","referencingIds":["_ref_9177","_ref_9183","_ref_9189","_ref_9195","_ref_9246"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CommonToken"},{"type":"clause","id":"sec-tokens","aoid":null,"title":"Tokens","titleHTML":"Tokens","number":"11.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Tokens"},{"type":"production","id":"prod-IdentifierName","name":"IdentifierName","referencingIds":["_ref_8917","_ref_8920","_ref_9034","_ref_9198","_ref_9237","_ref_9247","_ref_9250","_ref_9252","_ref_9254","_ref_9255","_ref_9256","_ref_9257","_ref_9261","_ref_9263","_ref_9266","_ref_9268","_ref_9269","_ref_9270","_ref_9273","_ref_9289","_ref_9291","_ref_9294","_ref_9295","_ref_9777","_ref_9788","_ref_9790","_ref_9792","_ref_9793","_ref_9795","_ref_9796","_ref_9804","_ref_9806","_ref_9956","_ref_9985","_ref_9988","_ref_9997","_ref_9998","_ref_10015","_ref_10016","_ref_10181","_ref_10189","_ref_10200","_ref_10222","_ref_10226","_ref_10227","_ref_10231","_ref_10233","_ref_10237","_ref_10241","_ref_10257","_ref_10269","_ref_10281","_ref_10285","_ref_10299","_ref_10301","_ref_10307","_ref_10310","_ref_10312","_ref_10319","_ref_10321","_ref_10329","_ref_10331","_ref_10357","_ref_10358","_ref_13112","_ref_13113","_ref_13788","_ref_13793","_ref_14045","_ref_14067","_ref_14093","_ref_14095","_ref_14117","_ref_14118","_ref_14119","_ref_14121","_ref_14156","_ref_14157","_ref_14158","_ref_14159","_ref_14160","_ref_14177","_ref_14178","_ref_14179","_ref_14180","_ref_14181","_ref_14203","_ref_14204","_ref_14205","_ref_14206","_ref_14207","_ref_14208","_ref_14242","_ref_14243","_ref_14244","_ref_14245","_ref_14246","_ref_15262","_ref_15263"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"IdentifierName"},{"type":"production","id":"prod-IdentifierStart","name":"IdentifierStart","referencingIds":["_ref_9272","_ref_9288","_ref_9345"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"IdentifierStart"},{"type":"production","id":"prod-IdentifierPart","name":"IdentifierPart","referencingIds":["_ref_9199","_ref_9200","_ref_9274","_ref_9280","_ref_9290","_ref_9568","_ref_9570","_ref_9571"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"IdentifierPart"},{"type":"production","id":"prod-UnicodeIDStart","name":"UnicodeIDStart","referencingIds":["_ref_9275","_ref_9284","_ref_14405","_ref_14502"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnicodeIDStart"},{"type":"production","id":"prod-UnicodeIDContinue","name":"UnicodeIDContinue","referencingIds":["_ref_9277","_ref_9281","_ref_9287","_ref_14407","_ref_14428","_ref_14505"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnicodeIDContinue"},{"type":"clause","id":"sec-identifier-names-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"11.6.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-identifier-names-static-semantics-stringvalue","aoid":null,"title":"Static Semantics: StringValue","titleHTML":"Static Semantics: StringValue","number":"11.6.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: StringValue"},{"type":"clause","id":"sec-identifier-names","aoid":null,"title":"Identifier Names","titleHTML":"Identifier Names","number":"11.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Identifier Names"},{"type":"production","id":"prod-ReservedWord","name":"ReservedWord","referencingIds":["_ref_8918","_ref_8921","_ref_9248","_ref_9249","_ref_9253","_ref_9301","_ref_9303","_ref_9778","_ref_9789","_ref_9794","_ref_9798","_ref_9805","_ref_9986","_ref_10224","_ref_10228","_ref_10229","_ref_10235","_ref_14123"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ReservedWord"},{"type":"production","id":"prod-Keyword","name":"Keyword","referencingIds":["_ref_9297"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Keyword"},{"type":"clause","id":"sec-keywords","aoid":null,"title":"Keywords","titleHTML":"Keywords","number":"11.6.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Keywords"},{"type":"production","id":"prod-FutureReservedWord","name":"FutureReservedWord","referencingIds":["_ref_9298","_ref_14820"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"FutureReservedWord"},{"type":"clause","id":"sec-future-reserved-words","aoid":null,"title":"Future Reserved Words","titleHTML":"Future Reserved Words","number":"11.6.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1"],"key":"Future Reserved Words"},{"type":"clause","id":"sec-reserved-words","aoid":null,"title":"Reserved Words","titleHTML":"Reserved Words","number":"11.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_776"],"key":"Reserved Words"},{"type":"clause","id":"sec-names-and-keywords","aoid":null,"title":"Names and Keywords","titleHTML":"Names and Keywords","number":"11.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_816"],"key":"Names and Keywords"},{"type":"production","id":"prod-Punctuator","name":"Punctuator","referencingIds":["_ref_9238"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Punctuator"},{"type":"production","id":"prod-DivPunctuator","name":"DivPunctuator","referencingIds":["_ref_9178","_ref_9196","_ref_9242"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DivPunctuator"},{"type":"production","id":"prod-RightBracePunctuator","name":"RightBracePunctuator","referencingIds":["_ref_9179","_ref_9184","_ref_9244"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RightBracePunctuator"},{"type":"clause","id":"sec-punctuators","aoid":null,"title":"Punctuators","titleHTML":"Punctuators","number":"11.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Punctuators"},{"type":"production","id":"prod-NullLiteral","name":"NullLiteral","referencingIds":["_ref_9299","_ref_9875","_ref_9879"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NullLiteral"},{"type":"clause","id":"sec-null-literals","aoid":null,"title":"Null Literals","titleHTML":"Null Literals","number":"11.8.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Null Literals"},{"type":"production","id":"prod-BooleanLiteral","name":"BooleanLiteral","referencingIds":["_ref_9300","_ref_9876","_ref_9880","_ref_9881","_ref_9882"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BooleanLiteral"},{"type":"clause","id":"sec-boolean-literals","aoid":null,"title":"Boolean Literals","titleHTML":"Boolean Literals","number":"11.8.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Boolean Literals"},{"type":"production","id":"prod-NumericLiteral","name":"NumericLiteral","referencingIds":["_ref_8958","_ref_8964","_ref_9239","_ref_9344","_ref_9347","_ref_9877","_ref_9883","_ref_9884","_ref_9958","_ref_10001","_ref_10002","_ref_10019","_ref_10020","_ref_14285","_ref_15243"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NumericLiteral"},{"type":"production","id":"prod-DecimalLiteral","name":"DecimalLiteral","referencingIds":["_ref_9307","_ref_9349","_ref_9350","_ref_9441","_ref_14831"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DecimalLiteral"},{"type":"production","id":"prod-DecimalIntegerLiteral","name":"DecimalIntegerLiteral","referencingIds":["_ref_9311","_ref_9316","_ref_9348","_ref_9357","_ref_9358","_ref_9359","_ref_9361","_ref_9364","_ref_9366","_ref_9368","_ref_9371","_ref_9383","_ref_9384","_ref_9385","_ref_9387","_ref_14286","_ref_15244"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DecimalIntegerLiteral"},{"type":"production","id":"prod-DecimalDigits","name":"DecimalDigits","referencingIds":["_ref_8950","_ref_8951","_ref_8953","_ref_8955","_ref_8985","_ref_8986","_ref_8987","_ref_8988","_ref_8989","_ref_8990","_ref_8991","_ref_8992","_ref_8994","_ref_8996","_ref_8997","_ref_8999","_ref_9000","_ref_9001","_ref_9003","_ref_9004","_ref_9005","_ref_9006","_ref_9008","_ref_9009","_ref_9011","_ref_9012","_ref_9013","_ref_9015","_ref_9312","_ref_9314","_ref_9319","_ref_9321","_ref_9325","_ref_9326","_ref_9327","_ref_9360","_ref_9362","_ref_9363","_ref_9369","_ref_9372","_ref_9373","_ref_9375","_ref_9376","_ref_9377","_ref_9378","_ref_9380","_ref_9381","_ref_9392","_ref_9394","_ref_9395","_ref_9398","_ref_9400","_ref_9405","_ref_9406","_ref_9407","_ref_9408","_ref_9409","_ref_9410","_ref_14378","_ref_14379","_ref_14380","_ref_14381","_ref_14430","_ref_14470","_ref_14471","_ref_14472","_ref_14473","_ref_14516","_ref_14517","_ref_14519","_ref_14521","_ref_14651","_ref_14652","_ref_14653","_ref_14654","_ref_14655","_ref_14656","_ref_14657","_ref_14658","_ref_14713","_ref_14840","_ref_14967","_ref_14968","_ref_14969","_ref_14970"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DecimalDigits"},{"type":"production","id":"prod-DecimalDigit","name":"DecimalDigit","referencingIds":["_ref_9320","_ref_9322","_ref_9346","_ref_9396","_ref_9397","_ref_9399","_ref_9401","_ref_9460","_ref_9470","_ref_9594","_ref_9595","_ref_9680","_ref_9681","_ref_14327","_ref_14396","_ref_14431","_ref_14530","_ref_14706","_ref_14846","_ref_14865","_ref_14867","_ref_14980","_ref_14994"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DecimalDigit"},{"type":"production","id":"prod-NonZeroDigit","name":"NonZeroDigit","referencingIds":["_ref_9318","_ref_9389","_ref_9390","_ref_9391","_ref_9393","_ref_14429","_ref_14513","_ref_14514","_ref_14515","_ref_14518","_ref_14520","_ref_14712","_ref_14839"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NonZeroDigit"},{"type":"production","id":"prod-ExponentPart","name":"ExponentPart","referencingIds":["_ref_8952","_ref_8954","_ref_8956","_ref_8993","_ref_8995","_ref_8998","_ref_9002","_ref_9007","_ref_9010","_ref_9014","_ref_9016","_ref_9018","_ref_9019","_ref_9313","_ref_9315","_ref_9317","_ref_9365","_ref_9367","_ref_9370","_ref_9374","_ref_9379","_ref_9382","_ref_9386","_ref_9388","_ref_9442","_ref_9443"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ExponentPart"},{"type":"production","id":"prod-ExponentIndicator","name":"ExponentIndicator","referencingIds":["_ref_9323","_ref_9402"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ExponentIndicator"},{"type":"production","id":"prod-SignedInteger","name":"SignedInteger","referencingIds":["_ref_9324","_ref_9403","_ref_9404"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SignedInteger"},{"type":"production","id":"prod-BinaryIntegerLiteral","name":"BinaryIntegerLiteral","referencingIds":["_ref_8944","_ref_8972","_ref_8973","_ref_9308","_ref_9351","_ref_9352","_ref_14832","_ref_15260"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BinaryIntegerLiteral"},{"type":"production","id":"prod-BinaryDigits","name":"BinaryDigits","referencingIds":["_ref_9328","_ref_9329","_ref_9331","_ref_9411","_ref_9412","_ref_9413","_ref_9414","_ref_9417","_ref_9419"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BinaryDigits"},{"type":"production","id":"prod-BinaryDigit","name":"BinaryDigit","referencingIds":["_ref_9330","_ref_9332","_ref_9415","_ref_9416","_ref_9418","_ref_9420"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BinaryDigit"},{"type":"production","id":"prod-OctalIntegerLiteral","name":"OctalIntegerLiteral","referencingIds":["_ref_8945","_ref_8974","_ref_8975","_ref_9309","_ref_9353","_ref_9354","_ref_14833","_ref_15261"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"OctalIntegerLiteral"},{"type":"production","id":"prod-OctalDigits","name":"OctalDigits","referencingIds":["_ref_9333","_ref_9334","_ref_9336","_ref_9421","_ref_9422","_ref_9423","_ref_9424","_ref_9427","_ref_9429"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"OctalDigits"},{"type":"production","id":"prod-OctalDigit","name":"OctalDigit","referencingIds":["_ref_9335","_ref_9337","_ref_9425","_ref_9426","_ref_9428","_ref_9430","_ref_14836","_ref_14838","_ref_14847","_ref_14849","_ref_14850","_ref_14851","_ref_14853","_ref_14855","_ref_14868","_ref_14869","_ref_14871","_ref_14873","_ref_14878","_ref_14879","_ref_14881","_ref_14882","_ref_14884","_ref_14886","_ref_14887","_ref_14892","_ref_14893","_ref_14895","_ref_14897","_ref_14899","_ref_14901","_ref_14903","_ref_14904","_ref_14906","_ref_14907"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"OctalDigit"},{"type":"production","id":"prod-HexIntegerLiteral","name":"HexIntegerLiteral","referencingIds":["_ref_8946","_ref_8976","_ref_8977","_ref_9310","_ref_9355","_ref_9356","_ref_14834"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"HexIntegerLiteral"},{"type":"production","id":"prod-HexDigits","name":"HexDigits","referencingIds":["_ref_9338","_ref_9339","_ref_9341","_ref_9431","_ref_9432","_ref_9433","_ref_9434","_ref_9437","_ref_9439","_ref_9614","_ref_9615","_ref_9616","_ref_9617","_ref_9733","_ref_9735","_ref_14550"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"HexDigits"},{"type":"production","id":"prod-HexDigit","name":"HexDigit","referencingIds":["_ref_9340","_ref_9342","_ref_9435","_ref_9436","_ref_9438","_ref_9440","_ref_9471","_ref_9472","_ref_9475","_ref_9476","_ref_9477","_ref_9478","_ref_9479","_ref_9527","_ref_9528","_ref_9529","_ref_9530","_ref_9533","_ref_9534","_ref_9535","_ref_9536","_ref_9537","_ref_9538","_ref_9539","_ref_9540","_ref_9596","_ref_9597","_ref_9598","_ref_9599","_ref_9600","_ref_9601","_ref_9602","_ref_9603","_ref_9604","_ref_9605","_ref_9606","_ref_9607","_ref_9608","_ref_9609","_ref_9611","_ref_9613","_ref_9682","_ref_9683","_ref_9684","_ref_9685","_ref_9686","_ref_9687","_ref_9688","_ref_9689","_ref_9690","_ref_9691","_ref_9692","_ref_9693","_ref_9694","_ref_9695","_ref_9696","_ref_9697","_ref_9698","_ref_9699","_ref_9700","_ref_9701","_ref_9702","_ref_9704","_ref_9707","_ref_9715","_ref_9716","_ref_9717","_ref_9718","_ref_9723","_ref_9724","_ref_9725","_ref_9726","_ref_9727","_ref_9728","_ref_9729","_ref_9730","_ref_9731","_ref_9732","_ref_9734","_ref_9736","_ref_9737","_ref_9739","_ref_14329","_ref_14330"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"HexDigit"},{"type":"clause","id":"sec-static-semantics-mv","aoid":null,"title":"Static Semantics: MV","titleHTML":"Static Semantics: MV","number":"11.8.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_141"],"key":"Static Semantics: MV"},{"type":"clause","id":"sec-literals-numeric-literals","aoid":null,"title":"Numeric Literals","titleHTML":"Numeric Literals","number":"11.8.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_139","_ref_140","_ref_290","_ref_292","_ref_300","_ref_306","_ref_546","_ref_553","_ref_723","_ref_724"],"key":"Numeric Literals"},{"type":"production","id":"prod-StringLiteral","name":"StringLiteral","referencingIds":["_ref_9202","_ref_9209","_ref_9212","_ref_9240","_ref_9484","_ref_9878","_ref_9885","_ref_9886","_ref_9957","_ref_9999","_ref_10000","_ref_10017","_ref_10018","_ref_12548","_ref_12550","_ref_14047","_ref_14100","_ref_14101","_ref_14781","_ref_14782","_ref_14783"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"StringLiteral"},{"type":"production","id":"prod-DoubleStringCharacters","name":"DoubleStringCharacters","referencingIds":["_ref_9444","_ref_9447","_ref_9482","_ref_9485","_ref_9486","_ref_9492","_ref_9494"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DoubleStringCharacters"},{"type":"production","id":"prod-SingleStringCharacters","name":"SingleStringCharacters","referencingIds":["_ref_9445","_ref_9449","_ref_9483","_ref_9487","_ref_9488","_ref_9498","_ref_9500"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SingleStringCharacters"},{"type":"production","id":"prod-DoubleStringCharacter","name":"DoubleStringCharacter","referencingIds":["_ref_9446","_ref_9489","_ref_9490","_ref_9491","_ref_9493"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DoubleStringCharacter"},{"type":"production","id":"prod-SingleStringCharacter","name":"SingleStringCharacter","referencingIds":["_ref_9448","_ref_9495","_ref_9496","_ref_9497","_ref_9499"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SingleStringCharacter"},{"type":"production","id":"prod-LineContinuation","name":"LineContinuation","referencingIds":["_ref_9213","_ref_9453","_ref_9457","_ref_9481","_ref_9506","_ref_9512","_ref_9590","_ref_9644","_ref_9645","_ref_9670","_ref_9671","_ref_9742","_ref_12552"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LineContinuation"},{"type":"production","id":"prod-EscapeSequence","name":"EscapeSequence","referencingIds":["_ref_9452","_ref_9456","_ref_9463","_ref_9504","_ref_9505","_ref_9510","_ref_9511","_ref_9588","_ref_9618","_ref_9641","_ref_9642","_ref_9666","_ref_9667","_ref_9744","_ref_12551","_ref_15245"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"EscapeSequence"},{"type":"production","id":"prod-CharacterEscapeSequence","name":"CharacterEscapeSequence","referencingIds":["_ref_9459","_ref_9513","_ref_9514","_ref_9674","_ref_9675","_ref_14874"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CharacterEscapeSequence"},{"type":"production","id":"prod-SingleEscapeCharacter","name":"SingleEscapeCharacter","referencingIds":["_ref_9464","_ref_9469","_ref_9519","_ref_9520","_ref_9710","_ref_9711"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SingleEscapeCharacter"},{"type":"production","id":"prod-NonEscapeCharacter","name":"NonEscapeCharacter","referencingIds":["_ref_9465","_ref_9521","_ref_9522","_ref_9712","_ref_9713"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NonEscapeCharacter"},{"type":"production","id":"prod-EscapeCharacter","name":"EscapeCharacter","referencingIds":["_ref_9467","_ref_9524"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"EscapeCharacter"},{"type":"production","id":"prod-HexEscapeSequence","name":"HexEscapeSequence","referencingIds":["_ref_9461","_ref_9515","_ref_9516","_ref_9676","_ref_9677","_ref_14397","_ref_14531","_ref_14532","_ref_14707","_ref_14876","_ref_14981"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"HexEscapeSequence"},{"type":"production","id":"prod-UnicodeEscapeSequence","name":"UnicodeEscapeSequence","referencingIds":["_ref_9259","_ref_9260","_ref_9262","_ref_9264","_ref_9271","_ref_9276","_ref_9278","_ref_9279","_ref_9282","_ref_9283","_ref_9285","_ref_9286","_ref_9292","_ref_9293","_ref_9304","_ref_9462","_ref_9517","_ref_9518","_ref_9678","_ref_9679","_ref_14877"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnicodeEscapeSequence"},{"type":"production","id":"prod-Hex4Digits","name":"Hex4Digits","referencingIds":["_ref_9473","_ref_9531","_ref_9532","_ref_9719","_ref_9720","_ref_14414","_ref_14420","_ref_14421","_ref_14422","_ref_14423","_ref_14424","_ref_14425","_ref_14543","_ref_14544","_ref_14547","_ref_14548","_ref_14549"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Hex4Digits"},{"type":"clause","id":"sec-string-literals-static-semantics-stringvalue","aoid":null,"title":"Static Semantics: StringValue","titleHTML":"Static Semantics: StringValue","number":"11.8.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_307"],"key":"Static Semantics: StringValue"},{"type":"table","id":"table-34","number":34,"caption":"Table 34: String Single Character Escape Sequences","referencingIds":["_ref_293"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 34: String Single Character Escape Sequences"},{"type":"clause","id":"sec-static-semantics-sv","aoid":null,"title":"Static Semantics: SV","titleHTML":"Static Semantics: SV","number":"11.8.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: SV"},{"type":"clause","id":"sec-literals-string-literals","aoid":null,"title":"String Literals","titleHTML":"String Literals","number":"11.8.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_275","_ref_276","_ref_299","_ref_725"],"key":"String Literals"},{"type":"production","id":"prod-RegularExpressionLiteral","name":"RegularExpressionLiteral","referencingIds":["_ref_9159","_ref_9163","_ref_9169","_ref_9171","_ref_9185","_ref_9190","_ref_9203","_ref_9243","_ref_9823","_ref_9846","_ref_9859","_ref_9870","_ref_10043","_ref_10044","_ref_10046","_ref_10047","_ref_10048","_ref_10049","_ref_13807","_ref_14794","_ref_14796","_ref_14800"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionLiteral"},{"type":"production","id":"prod-RegularExpressionBody","name":"RegularExpressionBody","referencingIds":["_ref_9543","_ref_9545","_ref_9547","_ref_9572","_ref_9574","_ref_9575"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionBody"},{"type":"production","id":"prod-RegularExpressionChars","name":"RegularExpressionChars","referencingIds":["_ref_9550","_ref_9551"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionChars"},{"type":"production","id":"prod-RegularExpressionFirstChar","name":"RegularExpressionFirstChar","referencingIds":["_ref_9549"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionFirstChar"},{"type":"production","id":"prod-RegularExpressionChar","name":"RegularExpressionChar","referencingIds":["_ref_9552"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionChar"},{"type":"production","id":"prod-RegularExpressionBackslashSequence","name":"RegularExpressionBackslashSequence","referencingIds":["_ref_9554","_ref_9557","_ref_9566"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionBackslashSequence"},{"type":"production","id":"prod-RegularExpressionNonTerminator","name":"RegularExpressionNonTerminator","referencingIds":["_ref_9553","_ref_9556","_ref_9559","_ref_9565"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionNonTerminator"},{"type":"production","id":"prod-RegularExpressionClass","name":"RegularExpressionClass","referencingIds":["_ref_9555","_ref_9558"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionClass"},{"type":"production","id":"prod-RegularExpressionClassChars","name":"RegularExpressionClassChars","referencingIds":["_ref_9562","_ref_9563"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionClassChars"},{"type":"production","id":"prod-RegularExpressionClassChar","name":"RegularExpressionClassChar","referencingIds":["_ref_9564"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionClassChar"},{"type":"production","id":"prod-RegularExpressionFlags","name":"RegularExpressionFlags","referencingIds":["_ref_9544","_ref_9546","_ref_9548","_ref_9567","_ref_9569","_ref_9573","_ref_9576","_ref_9577"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegularExpressionFlags"},{"type":"clause","id":"sec-literals-regular-expression-literals-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"11.8.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-static-semantics-bodytext","aoid":null,"title":"Static Semantics: BodyText","titleHTML":"Static Semantics: BodyText","number":"11.8.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BodyText"},{"type":"clause","id":"sec-static-semantics-flagtext","aoid":null,"title":"Static Semantics: FlagText","titleHTML":"Static Semantics: FlagText","number":"11.8.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: FlagText"},{"type":"clause","id":"sec-literals-regular-expression-literals","aoid":null,"title":"Regular Expression Literals","titleHTML":"Regular Expression Literals","number":"11.8.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_315"],"key":"Regular Expression Literals"},{"type":"production","id":"prod-Template","name":"Template","referencingIds":["_ref_9204","_ref_9210","_ref_9241"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Template"},{"type":"production","id":"prod-NoSubstitutionTemplate","name":"NoSubstitutionTemplate","referencingIds":["_ref_9578","_ref_10050","_ref_10063","_ref_10065","_ref_10082","_ref_10083","_ref_10084","_ref_10109","_ref_10131","_ref_10132"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NoSubstitutionTemplate"},{"type":"production","id":"prod-TemplateHead","name":"TemplateHead","referencingIds":["_ref_9579","_ref_10052","_ref_10067","_ref_10070","_ref_10085","_ref_10088","_ref_10089","_ref_10111","_ref_10133","_ref_10136"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TemplateHead"},{"type":"production","id":"prod-TemplateSubstitutionTail","name":"TemplateSubstitutionTail","referencingIds":["_ref_9191","_ref_9197","_ref_9205","_ref_9211","_ref_9245","_ref_9620"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TemplateSubstitutionTail"},{"type":"production","id":"prod-TemplateMiddle","name":"TemplateMiddle","referencingIds":["_ref_9160","_ref_9164","_ref_9167","_ref_9582","_ref_10058","_ref_10061","_ref_10075","_ref_10078","_ref_10080","_ref_10099","_ref_10101","_ref_10102","_ref_10104","_ref_10107","_ref_10108","_ref_10123","_ref_10127","_ref_10146","_ref_10148","_ref_10152","_ref_10155"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TemplateMiddle"},{"type":"production","id":"prod-TemplateTail","name":"TemplateTail","referencingIds":["_ref_9161","_ref_9165","_ref_9168","_ref_9583","_ref_10055","_ref_10057","_ref_10072","_ref_10073","_ref_10091","_ref_10092","_ref_10093","_ref_10095","_ref_10097","_ref_10098","_ref_10119","_ref_10121","_ref_10140","_ref_10141","_ref_10143","_ref_10145"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TemplateTail"},{"type":"production","id":"prod-TemplateCharacters","name":"TemplateCharacters","referencingIds":["_ref_9580","_ref_9581","_ref_9584","_ref_9585","_ref_9587","_ref_9622","_ref_9623","_ref_9624","_ref_9625","_ref_9626","_ref_9627","_ref_9628","_ref_9629","_ref_9633","_ref_9635","_ref_9637","_ref_9649","_ref_9650","_ref_9651","_ref_9652","_ref_9653","_ref_9654","_ref_9655","_ref_9656","_ref_9660","_ref_9662"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TemplateCharacters"},{"type":"production","id":"prod-TemplateCharacter","name":"TemplateCharacter","referencingIds":["_ref_9586","_ref_9619","_ref_9630","_ref_9631","_ref_9632","_ref_9634","_ref_9636","_ref_9657","_ref_9658","_ref_9659","_ref_9661","_ref_14287","_ref_14889"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TemplateCharacter"},{"type":"production","id":"prod-NotEscapeSequence","name":"NotEscapeSequence","referencingIds":["_ref_9589","_ref_9643","_ref_9668","_ref_9669","_ref_10066","_ref_10071","_ref_10074","_ref_10081"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NotEscapeSequence"},{"type":"production","id":"prod-NotCodePoint","name":"NotCodePoint","referencingIds":["_ref_9610","_ref_9703","_ref_9705"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NotCodePoint"},{"type":"production","id":"prod-CodePoint","name":"CodePoint","referencingIds":["_ref_9258","_ref_9474","_ref_9541","_ref_9542","_ref_9612","_ref_9706","_ref_9708","_ref_9721","_ref_9722","_ref_14415","_ref_14545","_ref_14546"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CodePoint"},{"type":"clause","id":"sec-static-semantics-tv-and-trv","aoid":null,"title":"Static Semantics: TV and TRV","titleHTML":"Static Semantics: TV and TRV","number":"11.8.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: TV and TRV"},{"type":"clause","id":"sec-template-literal-lexical-components","aoid":null,"title":"Template Literal Lexical Components","titleHTML":"Template Literal Lexical Components","number":"11.8.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_318","_ref_319","_ref_320","_ref_321","_ref_322","_ref_323"],"key":"Template Literal Lexical Components"},{"type":"clause","id":"sec-ecmascript-language-lexical-grammar-literals","aoid":null,"title":"Literals","titleHTML":"Literals","number":"11.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Literals"},{"type":"clause","id":"sec-rules-of-automatic-semicolon-insertion","aoid":null,"title":"Rules of Automatic Semicolon Insertion","titleHTML":"Rules of Automatic Semicolon Insertion","number":"11.9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_817"],"key":"Rules of Automatic Semicolon Insertion"},{"type":"clause","id":"sec-examples-of-automatic-semicolon-insertion","aoid":null,"title":"Examples of Automatic Semicolon Insertion","titleHTML":"Examples of Automatic Semicolon Insertion","number":"11.9.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Examples of Automatic Semicolon Insertion"},{"type":"clause","id":"sec-automatic-semicolon-insertion","aoid":null,"title":"Automatic Semicolon Insertion","titleHTML":"Automatic Semicolon Insertion","number":"11.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_9","_ref_265","_ref_270","_ref_274"],"key":"Automatic Semicolon Insertion"},{"type":"clause","id":"sec-ecmascript-language-lexical-grammar","aoid":null,"title":"ECMAScript Language: Lexical Grammar","titleHTML":"ECMAScript Language: Lexical Grammar","number":"11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7","_ref_301"],"key":"ECMAScript Language: Lexical Grammar"},{"type":"production","id":"prod-IdentifierReference","name":"IdentifierReference","referencingIds":["_ref_9802","_ref_9811","_ref_9812","_ref_9814","_ref_9842","_ref_9850","_ref_9874","_ref_9948","_ref_9960","_ref_9991","_ref_9992","_ref_10029","_ref_10030","_ref_10031","_ref_10445","_ref_10801","_ref_10809","_ref_10811","_ref_10856","_ref_10858","_ref_13798","_ref_14125","_ref_15099","_ref_15107","_ref_15110","_ref_15114","_ref_15117","_ref_15248"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"IdentifierReference"},{"type":"production","id":"prod-BindingIdentifier","name":"BindingIdentifier","referencingIds":["_ref_8832","_ref_8834","_ref_8835","_ref_8884","_ref_8886","_ref_8887","_ref_8888","_ref_8890","_ref_8892","_ref_9087","_ref_9779","_ref_9828","_ref_9831","_ref_11155","_ref_11163","_ref_11175","_ref_11177","_ref_11191","_ref_11192","_ref_11194","_ref_11196","_ref_11204","_ref_11215","_ref_11223","_ref_11225","_ref_11243","_ref_11244","_ref_11246","_ref_11251","_ref_11270","_ref_11285","_ref_11287","_ref_11315","_ref_11317","_ref_11350","_ref_11351","_ref_11353","_ref_11359","_ref_11360","_ref_11365","_ref_11366","_ref_11392","_ref_11393","_ref_11430","_ref_11432","_ref_11442","_ref_11443","_ref_11451","_ref_11453","_ref_11581","_ref_11901","_ref_12045","_ref_12046","_ref_12402","_ref_12520","_ref_12525","_ref_12556","_ref_12561","_ref_12565","_ref_12566","_ref_12585","_ref_12594","_ref_12597","_ref_12608","_ref_12613","_ref_12644","_ref_12649","_ref_12654","_ref_12693","_ref_12697","_ref_12710","_ref_12721","_ref_12725","_ref_12729","_ref_12734","_ref_12742","_ref_12776","_ref_12778","_ref_12781","_ref_12784","_ref_12787","_ref_12790","_ref_12799","_ref_12800","_ref_12923","_ref_12928","_ref_12950","_ref_12955","_ref_12959","_ref_12960","_ref_12975","_ref_12978","_ref_12985","_ref_12990","_ref_13002","_ref_13005","_ref_13010","_ref_13019","_ref_13023","_ref_13050","_ref_13054","_ref_13058","_ref_13063","_ref_13075","_ref_13082","_ref_13102","_ref_13107","_ref_13111","_ref_13130","_ref_13133","_ref_13140","_ref_13145","_ref_13157","_ref_13160","_ref_13165","_ref_13174","_ref_13178","_ref_13206","_ref_13210","_ref_13214","_ref_13219","_ref_13222","_ref_13225","_ref_13250","_ref_13252","_ref_13283","_ref_13285","_ref_13288","_ref_13327","_ref_13329","_ref_13339","_ref_13344","_ref_13346","_ref_13347","_ref_13351","_ref_13361","_ref_13386","_ref_13402","_ref_13409","_ref_13417","_ref_13418","_ref_13429","_ref_13432","_ref_13439","_ref_13446","_ref_13458","_ref_13461","_ref_13468","_ref_13475","_ref_13479","_ref_13502","_ref_13513","_ref_13517","_ref_13532","_ref_13578","_ref_13579","_ref_13584","_ref_13592","_ref_13593","_ref_13869","_ref_13876","_ref_14048","_ref_14284","_ref_14308","_ref_14315","_ref_15252","_ref_15258"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BindingIdentifier"},{"type":"production","id":"prod-LabelIdentifier","name":"LabelIdentifier","referencingIds":["_ref_9753","_ref_9755","_ref_9771","_ref_12048","_ref_12049","_ref_12052","_ref_12053","_ref_12054","_ref_12055","_ref_12057","_ref_12061","_ref_12062","_ref_12063","_ref_12064","_ref_12300","_ref_12309","_ref_12311","_ref_12314","_ref_12316","_ref_12319","_ref_12321","_ref_12328","_ref_12334","_ref_12340","_ref_12342","_ref_12344","_ref_12354","_ref_12364","_ref_12368","_ref_12372","_ref_12374","_ref_12384","_ref_13686"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LabelIdentifier"},{"type":"production","id":"prod-Identifier","name":"Identifier","referencingIds":["_ref_9020","_ref_9251","_ref_9296","_ref_9305","_ref_9306","_ref_9774","_ref_9775","_ref_9776","_ref_9780","_ref_9781","_ref_9783","_ref_9784","_ref_9785","_ref_9786","_ref_9787","_ref_9797","_ref_9799","_ref_9800","_ref_9801","_ref_9803","_ref_9807","_ref_9808","_ref_9809","_ref_9810","_ref_9813","_ref_9987","_ref_10225","_ref_10230","_ref_10236","_ref_11253","_ref_15219","_ref_15264","_ref_15268","_ref_15270","_ref_15298","_ref_15303"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Identifier"},{"type":"clause","id":"sec-identifiers-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"12.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_277","_ref_278","_ref_282","_ref_789"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-identifiers-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"12.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-identifiers-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-identifiers-static-semantics-stringvalue","aoid":null,"title":"Static Semantics: StringValue","titleHTML":"Static Semantics: StringValue","number":"12.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: StringValue"},{"type":"op","aoid":"InitializeBoundName","refId":"sec-initializeboundname","location":"","referencingIds":[],"key":"InitializeBoundName"},{"type":"clause","id":"sec-initializeboundname","aoid":"InitializeBoundName","title":"Runtime Semantics: InitializeBoundName ( name, value, environment )","titleHTML":"Runtime Semantics: InitializeBoundName ( <var>name</var>, <var>value</var>, <var>environment</var> )","number":"12.1.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3143","_ref_3144","_ref_3145","_ref_4287","_ref_4742","_ref_4747"],"key":"Runtime Semantics: InitializeBoundName ( name, value, environment )"},{"type":"clause","id":"sec-identifiers-runtime-semantics-bindinginitialization","aoid":null,"title":"Runtime Semantics: BindingInitialization","titleHTML":"Runtime Semantics: BindingInitialization","number":"12.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: BindingInitialization"},{"type":"clause","id":"sec-identifiers-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-identifiers","aoid":null,"title":"Identifiers","titleHTML":"Identifiers","number":"12.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_305"],"key":"Identifiers"},{"type":"production","id":"prod-PrimaryExpression","name":"PrimaryExpression","referencingIds":["_ref_10177","_ref_10250","_ref_10251","_ref_14805"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"PrimaryExpression"},{"type":"production","id":"prod-CoverParenthesizedExpressionAndArrowParameterList","name":"CoverParenthesizedExpressionAndArrowParameterList","referencingIds":["_ref_9825","_ref_9834","_ref_9835","_ref_9839","_ref_9840","_ref_9841","_ref_9848","_ref_9849","_ref_9861","_ref_9872","_ref_9873","_ref_9971","_ref_9974","_ref_10158","_ref_10159","_ref_10162","_ref_10167","_ref_10168","_ref_10172","_ref_10173","_ref_10447","_ref_10448","_ref_12743","_ref_12746","_ref_12747","_ref_12759","_ref_12760","_ref_12763","_ref_12764","_ref_12765","_ref_12774","_ref_12775","_ref_12782","_ref_12783","_ref_12794","_ref_13833","_ref_13834","_ref_14821","_ref_14824","_ref_14825","_ref_15063"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CoverParenthesizedExpressionAndArrowParameterList"},{"type":"production","id":"prod-ParenthesizedExpression","name":"ParenthesizedExpression","referencingIds":["_ref_9838","_ref_10160","_ref_10161"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ParenthesizedExpression"},{"type":"clause","id":"sec-static-semantics-coveredparenthesizedexpression","aoid":null,"title":"Static Semantics: CoveredParenthesizedExpression","titleHTML":"Static Semantics: CoveredParenthesizedExpression","number":"12.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: CoveredParenthesizedExpression"},{"type":"clause","id":"sec-semantics-static-semantics-hasname","aoid":null,"title":"Static Semantics: HasName","titleHTML":"Static Semantics: HasName","number":"12.2.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasName"},{"type":"clause","id":"sec-semantics-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.2.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-semantics-static-semantics-isidentifierref","aoid":null,"title":"Static Semantics: IsIdentifierRef","titleHTML":"Static Semantics: IsIdentifierRef","number":"12.2.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsIdentifierRef"},{"type":"clause","id":"sec-semantics-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.2.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-primary-expression-semantics","aoid":null,"title":"Semantics","titleHTML":"Semantics","number":"12.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Semantics"},{"type":"clause","id":"sec-this-keyword-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-this-keyword","aoid":null,"title":"The this Keyword","titleHTML":"The <code>this</code> Keyword","number":"12.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The this Keyword"},{"type":"clause","id":"sec-identifier-reference","aoid":null,"title":"Identifier Reference","titleHTML":"Identifier Reference","number":"12.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Identifier Reference"},{"type":"production","id":"prod-Literal","name":"Literal","referencingIds":["_ref_9815","_ref_9843","_ref_9851","_ref_9862","_ref_13799"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Literal"},{"type":"clause","id":"sec-literals-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.2.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-primary-expression-literals","aoid":null,"title":"Literals","titleHTML":"Literals","number":"12.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Literals"},{"type":"production","id":"prod-ArrayLiteral","name":"ArrayLiteral","referencingIds":["_ref_9816","_ref_9844","_ref_9852","_ref_9863","_ref_9887","_ref_10253","_ref_10725","_ref_10730","_ref_10734","_ref_10761","_ref_10814","_ref_10819","_ref_10824","_ref_10887","_ref_10896","_ref_10904","_ref_10908","_ref_10915","_ref_10924","_ref_11783","_ref_11788","_ref_13800","_ref_14803"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ArrayLiteral"},{"type":"production","id":"prod-ElementList","name":"ElementList","referencingIds":["_ref_9890","_ref_9891","_ref_9897","_ref_9900","_ref_9917","_ref_9920","_ref_9924","_ref_9927","_ref_9936","_ref_9937","_ref_9938","_ref_9940"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ElementList"},{"type":"production","id":"prod-Elision","name":"Elision","referencingIds":["_ref_9889","_ref_9892","_ref_9893","_ref_9895","_ref_9898","_ref_9901","_ref_9903","_ref_9905","_ref_9906","_ref_9907","_ref_9909","_ref_9910","_ref_9912","_ref_9914","_ref_9915","_ref_9918","_ref_9921","_ref_9922","_ref_9925","_ref_9928","_ref_9929","_ref_9933","_ref_9934","_ref_9935","_ref_9939","_ref_9941","_ref_9942","_ref_10786","_ref_10790","_ref_10799","_ref_10829","_ref_10830","_ref_10831","_ref_10833","_ref_10834","_ref_10839","_ref_10842","_ref_10843","_ref_10877","_ref_10879","_ref_10881","_ref_10882","_ref_11264","_ref_11268","_ref_11277","_ref_11289","_ref_11290","_ref_11294","_ref_11297","_ref_11309","_ref_11321","_ref_11322","_ref_11326","_ref_11329","_ref_11341","_ref_11394","_ref_11395","_ref_11396","_ref_11398","_ref_11399","_ref_11406","_ref_11408","_ref_11410","_ref_11413","_ref_11414","_ref_11424","_ref_11426"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Elision"},{"type":"production","id":"prod-SpreadElement","name":"SpreadElement","referencingIds":["_ref_9896","_ref_9902","_ref_9913","_ref_9916","_ref_9926","_ref_9930"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SpreadElement"},{"type":"clause","id":"sec-static-semantics-elisionwidth","aoid":null,"title":"Static Semantics: ElisionWidth","titleHTML":"Static Semantics: ElisionWidth","number":"12.2.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ElisionWidth"},{"type":"clause","id":"sec-runtime-semantics-arrayaccumulation","aoid":null,"title":"Runtime Semantics: ArrayAccumulation","titleHTML":"Runtime Semantics: ArrayAccumulation","number":"12.2.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: ArrayAccumulation"},{"type":"clause","id":"sec-array-initializer-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.2.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-array-initializer","aoid":null,"title":"Array Initializer","titleHTML":"Array Initializer","number":"12.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array Initializer"},{"type":"production","id":"prod-ObjectLiteral","name":"ObjectLiteral","referencingIds":["_ref_9817","_ref_9845","_ref_9853","_ref_9864","_ref_9964","_ref_9966","_ref_9969","_ref_9972","_ref_9977","_ref_10252","_ref_10724","_ref_10729","_ref_10733","_ref_10760","_ref_10815","_ref_10818","_ref_10823","_ref_10886","_ref_10895","_ref_10903","_ref_10907","_ref_10914","_ref_10923","_ref_11782","_ref_11787","_ref_13801","_ref_14804","_ref_15315"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ObjectLiteral"},{"type":"production","id":"prod-PropertyDefinitionList","name":"PropertyDefinitionList","referencingIds":["_ref_9943","_ref_9944","_ref_9946","_ref_10007","_ref_10009","_ref_10012","_ref_10013","_ref_10014","_ref_10023","_ref_10025","_ref_15065","_ref_15066","_ref_15067"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"PropertyDefinitionList"},{"type":"production","id":"prod-PropertyDefinition","name":"PropertyDefinition","referencingIds":["_ref_9945","_ref_9947","_ref_10004","_ref_10005","_ref_10006","_ref_10008","_ref_10010","_ref_10011","_ref_10024","_ref_10026"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"PropertyDefinition"},{"type":"production","id":"prod-PropertyName","name":"PropertyName","referencingIds":["_ref_9950","_ref_9994","_ref_9996","_ref_10032","_ref_10034","_ref_10803","_ref_10863","_ref_10865","_ref_11280","_ref_11312","_ref_11344","_ref_11346","_ref_11388","_ref_11390","_ref_12818","_ref_12824","_ref_12826","_ref_12830","_ref_12837","_ref_12845","_ref_12848","_ref_12850","_ref_12853","_ref_12856","_ref_12863","_ref_12867","_ref_12874","_ref_12877","_ref_12879","_ref_12882","_ref_12883","_ref_12889","_ref_12891","_ref_12894","_ref_12897","_ref_12902","_ref_12906","_ref_12908","_ref_12912","_ref_12915","_ref_12920","_ref_12940","_ref_12981","_ref_12984","_ref_12993","_ref_13013","_ref_13016","_ref_13033","_ref_13036","_ref_13071","_ref_13090","_ref_13136","_ref_13139","_ref_13148","_ref_13168","_ref_13171","_ref_13189","_ref_13192","_ref_13273","_ref_13365","_ref_13392","_ref_13435","_ref_13438","_ref_13449","_ref_13471","_ref_13474","_ref_13491","_ref_13494","_ref_14351","_ref_14353","_ref_15068","_ref_15071","_ref_15073","_ref_15075","_ref_15076"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"PropertyName"},{"type":"production","id":"prod-LiteralPropertyName","name":"LiteralPropertyName","referencingIds":["_ref_9954","_ref_9979","_ref_9989"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LiteralPropertyName"},{"type":"production","id":"prod-ComputedPropertyName","name":"ComputedPropertyName","referencingIds":["_ref_9955","_ref_9980","_ref_9981","_ref_9990","_ref_15070"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ComputedPropertyName"},{"type":"production","id":"prod-CoverInitializedName","name":"CoverInitializedName","referencingIds":["_ref_9949","_ref_9965","_ref_9976"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CoverInitializedName"},{"type":"production","id":"prod-Initializer","name":"Initializer","referencingIds":["_ref_8833","_ref_8836","_ref_8885","_ref_8889","_ref_8891","_ref_9092","_ref_9961","_ref_10802","_ref_10806","_ref_10810","_ref_10857","_ref_10859","_ref_10860","_ref_10861","_ref_10862","_ref_10884","_ref_10889","_ref_10890","_ref_10892","_ref_10893","_ref_10900","_ref_10912","_ref_10917","_ref_10918","_ref_10920","_ref_10921","_ref_11143","_ref_11144","_ref_11148","_ref_11156","_ref_11158","_ref_11164","_ref_11165","_ref_11176","_ref_11179","_ref_11195","_ref_11197","_ref_11198","_ref_11199","_ref_11201","_ref_11202","_ref_11207","_ref_11208","_ref_11216","_ref_11218","_ref_11224","_ref_11227","_ref_11245","_ref_11247","_ref_11248","_ref_11249","_ref_11255","_ref_11256","_ref_11284","_ref_11286","_ref_11316","_ref_11319","_ref_11349","_ref_11352","_ref_11358","_ref_11361","_ref_11364","_ref_11367","_ref_11431","_ref_11433","_ref_11434","_ref_11435","_ref_11436","_ref_11438","_ref_11439","_ref_11440","_ref_11447","_ref_11448","_ref_11449","_ref_11452","_ref_11454","_ref_11455","_ref_11456","_ref_11457","_ref_12648","_ref_15194","_ref_15201","_ref_15205","_ref_15210","_ref_15215","_ref_15221","_ref_15227","_ref_15233","_ref_15237","_ref_15238","_ref_15239","_ref_15300"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Initializer"},{"type":"clause","id":"sec-object-initializer-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"12.2.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_747","_ref_818"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-object-initializer-static-semantics-computedpropertycontains","aoid":null,"title":"Static Semantics: ComputedPropertyContains","titleHTML":"Static Semantics: ComputedPropertyContains","number":"12.2.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ComputedPropertyContains"},{"type":"clause","id":"sec-object-initializer-static-semantics-contains","aoid":null,"title":"Static Semantics: Contains","titleHTML":"Static Semantics: Contains","number":"12.2.6.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Contains"},{"type":"clause","id":"sec-static-semantics-iscomputedpropertykey","aoid":null,"title":"Static Semantics: IsComputedPropertyKey","titleHTML":"Static Semantics: IsComputedPropertyKey","number":"12.2.6.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsComputedPropertyKey"},{"type":"clause","id":"sec-object-initializer-static-semantics-propname","aoid":null,"title":"Static Semantics: PropName","titleHTML":"Static Semantics: PropName","number":"12.2.6.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: PropName"},{"type":"clause","id":"sec-static-semantics-propertynamelist","aoid":null,"title":"Static Semantics: PropertyNameList","titleHTML":"Static Semantics: PropertyNameList","number":"12.2.6.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: PropertyNameList"},{"type":"clause","id":"sec-object-initializer-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.2.6.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-object-initializer-runtime-semantics-propertydefinitionevaluation","aoid":null,"title":"Runtime Semantics: PropertyDefinitionEvaluation","titleHTML":"Runtime Semantics: PropertyDefinitionEvaluation","number":"12.2.6.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_748"],"key":"Runtime Semantics: PropertyDefinitionEvaluation"},{"type":"clause","id":"sec-object-initializer","aoid":null,"title":"Object Initializer","titleHTML":"Object Initializer","number":"12.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object Initializer"},{"type":"clause","id":"sec-function-defining-expressions","aoid":null,"title":"Function Defining Expressions","titleHTML":"Function Defining Expressions","number":"12.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function Defining Expressions"},{"type":"clause","id":"sec-primary-expression-regular-expression-literals-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"12.2.8.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-regular-expression-literals-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.2.8.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-primary-expression-regular-expression-literals","aoid":null,"title":"Regular Expression Literals","titleHTML":"Regular Expression Literals","number":"12.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Regular Expression Literals"},{"type":"production","id":"prod-TemplateLiteral","name":"TemplateLiteral","referencingIds":["_ref_9079","_ref_9824","_ref_9847","_ref_9860","_ref_9871","_ref_10064","_ref_10110","_ref_10114","_ref_10117","_ref_10118","_ref_10183","_ref_10202","_ref_10243","_ref_10259","_ref_10271","_ref_10292","_ref_10295","_ref_10374","_ref_10375","_ref_10377","_ref_10380","_ref_10382","_ref_10385","_ref_13808","_ref_13828","_ref_13831"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TemplateLiteral"},{"type":"production","id":"prod-SubstitutionTemplate","name":"SubstitutionTemplate","referencingIds":["_ref_10051"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SubstitutionTemplate"},{"type":"production","id":"prod-TemplateSpans","name":"TemplateSpans","referencingIds":["_ref_10054","_ref_10069","_ref_10087","_ref_10090","_ref_10113","_ref_10116","_ref_10135","_ref_10138"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TemplateSpans"},{"type":"production","id":"prod-TemplateMiddleList","name":"TemplateMiddleList","referencingIds":["_ref_10056","_ref_10060","_ref_10077","_ref_10094","_ref_10096","_ref_10103","_ref_10106","_ref_10120","_ref_10122","_ref_10126","_ref_10129","_ref_10142","_ref_10144","_ref_10151","_ref_10154"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TemplateMiddleList"},{"type":"clause","id":"sec-static-semantics-template-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"12.2.9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-static-semantics-templatestrings","aoid":null,"title":"Static Semantics: TemplateStrings","titleHTML":"Static Semantics: TemplateStrings","number":"12.2.9.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: TemplateStrings"},{"type":"clause","id":"sec-template-literals-runtime-semantics-argumentlistevaluation","aoid":null,"title":"Runtime Semantics: ArgumentListEvaluation","titleHTML":"Runtime Semantics: ArgumentListEvaluation","number":"12.2.9.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: ArgumentListEvaluation"},{"type":"op","aoid":"GetTemplateObject","refId":"sec-gettemplateobject","location":"","referencingIds":[],"key":"GetTemplateObject"},{"type":"clause","id":"sec-gettemplateobject","aoid":"GetTemplateObject","title":"Runtime Semantics: GetTemplateObject ( templateLiteral )","titleHTML":"Runtime Semantics: GetTemplateObject ( <var>templateLiteral</var> )","number":"12.2.9.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_325","_ref_3228","_ref_3230"],"key":"Runtime Semantics: GetTemplateObject ( templateLiteral )"},{"type":"clause","id":"sec-runtime-semantics-substitutionevaluation","aoid":null,"title":"Runtime Semantics: SubstitutionEvaluation","titleHTML":"Runtime Semantics: SubstitutionEvaluation","number":"12.2.9.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: SubstitutionEvaluation"},{"type":"clause","id":"sec-template-literals-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.2.9.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_317"],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-template-literals","aoid":null,"title":"Template Literals","titleHTML":"Template Literals","number":"12.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_324"],"key":"Template Literals"},{"type":"clause","id":"sec-grouping-operator-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"12.2.10.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-grouping-operator-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.2.10.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-grouping-operator-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.2.10.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-grouping-operator-runtime-semantics-namedevaluation","aoid":null,"title":"Runtime Semantics: NamedEvaluation","titleHTML":"Runtime Semantics: NamedEvaluation","number":"12.2.10.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: NamedEvaluation"},{"type":"clause","id":"sec-grouping-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.2.10.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-grouping-operator","aoid":null,"title":"The Grouping Operator","titleHTML":"The Grouping Operator","number":"12.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Grouping Operator"},{"type":"clause","id":"sec-primary-expression","aoid":null,"title":"Primary Expression","titleHTML":"Primary Expression","number":"12.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Primary Expression"},{"type":"production","id":"prod-MemberExpression","name":"MemberExpression","referencingIds":["_ref_10178","_ref_10180","_ref_10182","_ref_10186","_ref_10191","_ref_10216","_ref_10221","_ref_10223","_ref_10238","_ref_10240","_ref_10242","_ref_10246","_ref_10254","_ref_10256","_ref_10258","_ref_10262","_ref_10266","_ref_10268","_ref_10270","_ref_10274","_ref_10282","_ref_10284","_ref_10294","_ref_10296","_ref_10298","_ref_10302","_ref_10306","_ref_10308","_ref_10313","_ref_10315","_ref_10317","_ref_10318","_ref_10320","_ref_10322","_ref_10325","_ref_10330","_ref_10335","_ref_10337","_ref_10340","_ref_10344","_ref_10376","_ref_10378","_ref_10379","_ref_13533","_ref_13558","_ref_13562","_ref_13585","_ref_13790","_ref_13792","_ref_13796","_ref_13830","_ref_13832"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MemberExpression"},{"type":"production","id":"prod-SuperProperty","name":"SuperProperty","referencingIds":["_ref_10184","_ref_10244","_ref_10260","_ref_10272","_ref_10286","_ref_10356","_ref_10359","_ref_12572","_ref_12574","_ref_12769","_ref_12968","_ref_12970","_ref_13123","_ref_13125","_ref_13422","_ref_13424","_ref_13568","_ref_13574","_ref_13794","_ref_14300","_ref_14346","_ref_14347"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SuperProperty"},{"type":"production","id":"prod-MetaProperty","name":"MetaProperty","referencingIds":["_ref_10185","_ref_10245","_ref_10261","_ref_10273","_ref_13795"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MetaProperty"},{"type":"production","id":"prod-NewTarget","name":"NewTarget","referencingIds":["_ref_10190","_ref_12768","_ref_13567","_ref_13573","_ref_13846","_ref_13847","_ref_13848","_ref_13899","_ref_14296"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NewTarget"},{"type":"production","id":"prod-NewExpression","name":"NewExpression","referencingIds":["_ref_10192","_ref_10212","_ref_10248","_ref_10264","_ref_10276","_ref_10293","_ref_10333","_ref_10334","_ref_10339","_ref_13789"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NewExpression"},{"type":"production","id":"prod-CallExpression","name":"CallExpression","referencingIds":["_ref_10195","_ref_10197","_ref_10199","_ref_10201","_ref_10213","_ref_10232","_ref_10234","_ref_10249","_ref_10265","_ref_10277","_ref_10278","_ref_10280","_ref_10289","_ref_10291","_ref_10300","_ref_10304","_ref_10309","_ref_10311","_ref_10323","_ref_10327","_ref_10328","_ref_10332","_ref_10346","_ref_10347","_ref_10348","_ref_10349","_ref_10351","_ref_10352","_ref_10381","_ref_10383","_ref_10384","_ref_13785","_ref_13787","_ref_13825","_ref_13827","_ref_13829"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CallExpression"},{"type":"production","id":"prod-SuperCall","name":"SuperCall","referencingIds":["_ref_10194","_ref_10288","_ref_12576","_ref_12578","_ref_12770","_ref_12860","_ref_12862","_ref_12866","_ref_12871","_ref_12873","_ref_12972","_ref_12974","_ref_12997","_ref_12999","_ref_13127","_ref_13129","_ref_13152","_ref_13154","_ref_13426","_ref_13428","_ref_13453","_ref_13455","_ref_13569","_ref_13575","_ref_13784","_ref_14305","_ref_14344","_ref_14345"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SuperCall"},{"type":"production","id":"prod-Arguments","name":"Arguments","referencingIds":["_ref_10187","_ref_10196","_ref_10203","_ref_10217","_ref_10247","_ref_10263","_ref_10275","_ref_10290","_ref_10297","_ref_10336","_ref_10338","_ref_10341","_ref_10345","_ref_10350","_ref_10353","_ref_10360","_ref_10361","_ref_13534","_ref_13559","_ref_13563","_ref_13586","_ref_13797","_ref_13826"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Arguments"},{"type":"production","id":"prod-ArgumentList","name":"ArgumentList","referencingIds":["_ref_10204","_ref_10205","_ref_10208","_ref_10210","_ref_10366","_ref_10368","_ref_10370","_ref_10372"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ArgumentList"},{"type":"production","id":"prod-LeftHandSideExpression","name":"LeftHandSideExpression","referencingIds":["_ref_9748","_ref_9750","_ref_10386","_ref_10387","_ref_10389","_ref_10393","_ref_10394","_ref_10395","_ref_10396","_ref_10401","_ref_10402","_ref_10405","_ref_10406","_ref_10409","_ref_10410","_ref_10411","_ref_10412","_ref_10716","_ref_10718","_ref_10721","_ref_10723","_ref_10726","_ref_10728","_ref_10731","_ref_10732","_ref_10735","_ref_10736","_ref_10739","_ref_10740","_ref_10744","_ref_10746","_ref_10752","_ref_10754","_ref_10757","_ref_10759","_ref_10762","_ref_10764","_ref_10768","_ref_10770","_ref_10773","_ref_10776","_ref_10777","_ref_10779","_ref_10808","_ref_10816","_ref_10817","_ref_10820","_ref_10822","_ref_10825","_ref_11552","_ref_11561","_ref_11570","_ref_11599","_ref_11608","_ref_11617","_ref_11772","_ref_11775","_ref_11778","_ref_11781","_ref_11784","_ref_11786","_ref_11789","_ref_11792","_ref_11793","_ref_11796","_ref_11814","_ref_11823","_ref_11832","_ref_11842","_ref_11851","_ref_11860","_ref_11870","_ref_11879","_ref_11888","_ref_11903","_ref_11916","_ref_11919","_ref_11938","_ref_11950","_ref_11954","_ref_11983","_ref_11987","_ref_12002","_ref_12006","_ref_12021","_ref_12025","_ref_12040","_ref_13229","_ref_13642","_ref_13674","_ref_13726","_ref_13728","_ref_13772","_ref_13773","_ref_14823","_ref_15246","_ref_15247","_ref_15249","_ref_15281"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LeftHandSideExpression"},{"type":"production","id":"prod-CallMemberExpression","name":"CallMemberExpression","referencingIds":["_ref_10219"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CallMemberExpression"},{"type":"clause","id":"sec-left-hand-side-expressions-static-semantics-coveredcallexpression","aoid":null,"title":"Static Semantics: CoveredCallExpression","titleHTML":"Static Semantics: CoveredCallExpression","number":"12.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: CoveredCallExpression"},{"type":"clause","id":"sec-static-semantics-static-semantics-contains","aoid":null,"title":"Static Semantics: Contains","titleHTML":"Static Semantics: Contains","number":"12.3.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Contains"},{"type":"clause","id":"sec-static-semantics-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.3.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-static-semantics-static-semantics-isdestructuring","aoid":null,"title":"Static Semantics: IsDestructuring","titleHTML":"Static Semantics: IsDestructuring","number":"12.3.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsDestructuring"},{"type":"clause","id":"sec-static-semantics-static-semantics-isidentifierref","aoid":null,"title":"Static Semantics: IsIdentifierRef","titleHTML":"Static Semantics: IsIdentifierRef","number":"12.3.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsIdentifierRef"},{"type":"clause","id":"sec-static-semantics-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.3.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-static-semantics","aoid":null,"title":"Static Semantics","titleHTML":"Static Semantics","number":"12.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics"},{"type":"clause","id":"sec-property-accessors-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.3.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-property-accessors","aoid":null,"title":"Property Accessors","titleHTML":"Property Accessors","number":"12.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Property Accessors"},{"type":"op","aoid":"EvaluateNew","refId":"sec-evaluatenew","location":"","referencingIds":[],"key":"EvaluateNew"},{"type":"clause","id":"sec-evaluatenew","aoid":"EvaluateNew","title":"Runtime Semantics: EvaluateNew ( constructExpr, arguments )","titleHTML":"Runtime Semantics: EvaluateNew ( <var>constructExpr</var>, <var>arguments</var> )","number":"12.3.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3282","_ref_3283"],"key":"Runtime Semantics: EvaluateNew ( constructExpr, arguments )"},{"type":"clause","id":"sec-new-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.3.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-new-operator","aoid":null,"title":"The new Operator","titleHTML":"The <code>new</code> Operator","number":"12.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The new Operator"},{"type":"term","term":"direct eval","refId":"sec-function-calls-runtime-semantics-evaluation","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"direct eval"},{"type":"clause","id":"sec-function-calls-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.3.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2587","_ref_2588","_ref_2593","_ref_3107","_ref_4031","_ref_4037","_ref_4379","_ref_4381","_ref_4382","_ref_4384","_ref_4812","_ref_4830","_ref_4833","_ref_4836","_ref_4843","_ref_8769"],"key":"Runtime Semantics: Evaluation"},{"type":"op","aoid":"EvaluateCall","refId":"sec-evaluatecall","location":"","referencingIds":[],"key":"EvaluateCall"},{"type":"clause","id":"sec-evaluatecall","aoid":"EvaluateCall","title":"Runtime Semantics: EvaluateCall ( func, ref, arguments, tailPosition )","titleHTML":"Runtime Semantics: EvaluateCall ( <var>func</var>, <var>ref</var>, <var>arguments</var>, <var>tailPosition</var> )","number":"12.3.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3303","_ref_3306","_ref_3370","_ref_3373"],"key":"Runtime Semantics: EvaluateCall ( func, ref, arguments, tailPosition )"},{"type":"clause","id":"sec-function-calls","aoid":null,"title":"Function Calls","titleHTML":"Function Calls","number":"12.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function Calls"},{"type":"clause","id":"sec-super-keyword-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.3.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"op","aoid":"GetSuperConstructor","refId":"sec-getsuperconstructor","location":"","referencingIds":[],"key":"GetSuperConstructor"},{"type":"clause","id":"sec-getsuperconstructor","aoid":"GetSuperConstructor","title":"Runtime Semantics: GetSuperConstructor ( )","titleHTML":"Runtime Semantics: GetSuperConstructor ( )","number":"12.3.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3337"],"key":"Runtime Semantics: GetSuperConstructor ( )"},{"type":"op","aoid":"MakeSuperPropertyReference","refId":"sec-makesuperpropertyreference","location":"","referencingIds":[],"key":"MakeSuperPropertyReference"},{"type":"clause","id":"sec-makesuperpropertyreference","aoid":"MakeSuperPropertyReference","title":"Runtime Semantics: MakeSuperPropertyReference ( actualThis, propertyKey, strict )","titleHTML":"Runtime Semantics: MakeSuperPropertyReference ( <var>actualThis</var>, <var>propertyKey</var>, <var>strict</var> )","number":"12.3.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3330","_ref_3333"],"key":"Runtime Semantics: MakeSuperPropertyReference ( actualThis, propertyKey, strict )"},{"type":"clause","id":"sec-super-keyword","aoid":null,"title":"The super Keyword","titleHTML":"The <code>super</code> Keyword","number":"12.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The super Keyword"},{"type":"clause","id":"sec-argument-lists-runtime-semantics-argumentlistevaluation","aoid":null,"title":"Runtime Semantics: ArgumentListEvaluation","titleHTML":"Runtime Semantics: ArgumentListEvaluation","number":"12.3.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: ArgumentListEvaluation"},{"type":"clause","id":"sec-argument-lists","aoid":null,"title":"Argument Lists","titleHTML":"Argument Lists","number":"12.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_122"],"key":"Argument Lists"},{"type":"clause","id":"sec-tagged-templates-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.3.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-tagged-templates","aoid":null,"title":"Tagged Templates","titleHTML":"Tagged Templates","number":"12.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_522"],"key":"Tagged Templates"},{"type":"clause","id":"sec-meta-properties-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.3.8.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-meta-properties","aoid":null,"title":"Meta Properties","titleHTML":"Meta Properties","number":"12.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Meta Properties"},{"type":"clause","id":"sec-left-hand-side-expressions","aoid":null,"title":"Left-Hand-Side Expressions","titleHTML":"Left-Hand-Side Expressions","number":"12.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Left-Hand-Side Expressions"},{"type":"production","id":"prod-UpdateExpression","name":"UpdateExpression","referencingIds":["_ref_10417","_ref_10466","_ref_10468","_ref_10470","_ref_10472","_ref_10474","_ref_13770","_ref_15250"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UpdateExpression"},{"type":"clause","id":"sec-update-expressions-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"12.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-update-expressions-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-update-expressions-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-postfix-increment-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.4.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-postfix-increment-operator","aoid":null,"title":"Postfix Increment Operator","titleHTML":"Postfix Increment Operator","number":"12.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Postfix Increment Operator"},{"type":"clause","id":"sec-postfix-decrement-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.4.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-postfix-decrement-operator","aoid":null,"title":"Postfix Decrement Operator","titleHTML":"Postfix Decrement Operator","number":"12.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Postfix Decrement Operator"},{"type":"clause","id":"sec-prefix-increment-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.4.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-prefix-increment-operator","aoid":null,"title":"Prefix Increment Operator","titleHTML":"Prefix Increment Operator","number":"12.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_783"],"key":"Prefix Increment Operator"},{"type":"clause","id":"sec-prefix-decrement-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.4.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-prefix-decrement-operator","aoid":null,"title":"Prefix Decrement Operator","titleHTML":"Prefix Decrement Operator","number":"12.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_784"],"key":"Prefix Decrement Operator"},{"type":"clause","id":"sec-update-expressions","aoid":null,"title":"Update Expressions","titleHTML":"Update Expressions","number":"12.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_782"],"key":"Update Expressions"},{"type":"production","id":"prod-UnaryExpression","name":"UnaryExpression","referencingIds":["_ref_10391","_ref_10392","_ref_10397","_ref_10398","_ref_10399","_ref_10400","_ref_10403","_ref_10404","_ref_10407","_ref_10408","_ref_10413","_ref_10414","_ref_10415","_ref_10416","_ref_10418","_ref_10419","_ref_10420","_ref_10421","_ref_10422","_ref_10423","_ref_10424","_ref_10426","_ref_10427","_ref_10428","_ref_10429","_ref_10430","_ref_10431","_ref_10432","_ref_10434","_ref_10435","_ref_10436","_ref_10437","_ref_10438","_ref_10439","_ref_10440","_ref_10442","_ref_10443","_ref_10444","_ref_10446","_ref_10449","_ref_10450","_ref_10451","_ref_10452","_ref_10453","_ref_10454","_ref_10455","_ref_10456","_ref_10457","_ref_10458","_ref_10459","_ref_10460","_ref_10461","_ref_10462","_ref_10463","_ref_10464","_ref_10465","_ref_13369","_ref_13521","_ref_13522","_ref_13774","_ref_13775","_ref_13776","_ref_13777","_ref_13778","_ref_13779","_ref_13780","_ref_13781","_ref_13782","_ref_15251","_ref_15253"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnaryExpression"},{"type":"clause","id":"sec-unary-operators-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-unary-operators-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-delete-operator-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"12.5.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_168","_ref_169","_ref_794"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-delete-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.5.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_795"],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-delete-operator","aoid":null,"title":"The delete Operator","titleHTML":"The <code>delete</code> Operator","number":"12.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The delete Operator"},{"type":"clause","id":"sec-void-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.5.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-void-operator","aoid":null,"title":"The void Operator","titleHTML":"The <code>void</code> Operator","number":"12.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The void Operator"},{"type":"table","id":"table-35","number":35,"caption":"Table 35: typeof Operator Results","referencingIds":["_ref_330","_ref_774"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 35: typeof Operator Results"},{"type":"clause","id":"sec-typeof-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.5.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-typeof-operator","aoid":null,"title":"The typeof Operator","titleHTML":"The <code>typeof</code> Operator","number":"12.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_771","_ref_775"],"key":"The typeof Operator"},{"type":"clause","id":"sec-unary-plus-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.5.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-unary-plus-operator","aoid":null,"title":"Unary + Operator","titleHTML":"Unary <code>+</code> Operator","number":"12.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Unary + Operator"},{"type":"clause","id":"sec-unary-minus-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.5.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-unary-minus-operator","aoid":null,"title":"Unary - Operator","titleHTML":"Unary <code>-</code> Operator","number":"12.5.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Unary - Operator"},{"type":"clause","id":"sec-bitwise-not-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.5.8.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-bitwise-not-operator","aoid":null,"title":"Bitwise NOT Operator ( ~ )","titleHTML":"Bitwise NOT Operator ( <code>~</code> )","number":"12.5.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Bitwise NOT Operator ( ~ )"},{"type":"clause","id":"sec-logical-not-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.5.9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-logical-not-operator","aoid":null,"title":"Logical NOT Operator ( ! )","titleHTML":"Logical NOT Operator ( <code>!</code> )","number":"12.5.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Logical NOT Operator ( ! )"},{"type":"clause","id":"sec-unary-operators","aoid":null,"title":"Unary Operators","titleHTML":"Unary Operators","number":"12.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Unary Operators"},{"type":"production","id":"prod-ExponentiationExpression","name":"ExponentiationExpression","referencingIds":["_ref_10467","_ref_10469","_ref_10471","_ref_10473","_ref_10475","_ref_10476","_ref_10479","_ref_10482","_ref_10485","_ref_10488","_ref_10490","_ref_13769","_ref_13771"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ExponentiationExpression"},{"type":"clause","id":"sec-exp-operator-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-exp-operator-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-exp-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.6.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-applying-the-exp-operator","aoid":null,"title":"Applying the ** Operator","titleHTML":"Applying the <code>**</code> Operator","number":"12.6.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_331","_ref_332","_ref_504","_ref_505"],"key":"Applying the ** Operator"},{"type":"clause","id":"sec-exp-operator","aoid":null,"title":"Exponentiation Operator","titleHTML":"Exponentiation Operator","number":"12.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Exponentiation Operator"},{"type":"production","id":"prod-MultiplicativeExpression","name":"MultiplicativeExpression","referencingIds":["_ref_10477","_ref_10480","_ref_10483","_ref_10486","_ref_10489","_ref_10495","_ref_10497","_ref_10499","_ref_10501","_ref_10503","_ref_10505","_ref_10507","_ref_10509","_ref_10511","_ref_10513","_ref_10515","_ref_13764","_ref_13766","_ref_13767"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MultiplicativeExpression"},{"type":"production","id":"prod-MultiplicativeOperator","name":"MultiplicativeOperator","referencingIds":["_ref_10478","_ref_10481","_ref_10484","_ref_10487","_ref_10491","_ref_10492","_ref_10493","_ref_10494","_ref_13768"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MultiplicativeOperator"},{"type":"clause","id":"sec-multiplicative-operators-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-multiplicative-operators-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-applying-the-mul-operator","aoid":null,"title":"Applying the * Operator","titleHTML":"Applying the <code>*</code> Operator","number":"12.7.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_333"],"key":"Applying the * Operator"},{"type":"clause","id":"sec-applying-the-div-operator","aoid":null,"title":"Applying the / Operator","titleHTML":"Applying the <code>/</code> Operator","number":"12.7.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_334"],"key":"Applying the / Operator"},{"type":"clause","id":"sec-applying-the-mod-operator","aoid":null,"title":"Applying the % Operator","titleHTML":"Applying the <code>%</code> Operator","number":"12.7.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_335"],"key":"Applying the % Operator"},{"type":"clause","id":"sec-multiplicative-operators-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.7.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-multiplicative-operators","aoid":null,"title":"Multiplicative Operators","titleHTML":"Multiplicative Operators","number":"12.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Multiplicative Operators"},{"type":"production","id":"prod-AdditiveExpression","name":"AdditiveExpression","referencingIds":["_ref_10496","_ref_10498","_ref_10500","_ref_10502","_ref_10504","_ref_10506","_ref_10508","_ref_10510","_ref_10512","_ref_10514","_ref_10516","_ref_10518","_ref_10520","_ref_10522","_ref_10524","_ref_10526","_ref_10528","_ref_10530","_ref_10532","_ref_10534","_ref_10536","_ref_10538","_ref_10540","_ref_10542","_ref_10544","_ref_10546","_ref_13758","_ref_13760","_ref_13762","_ref_13763","_ref_13765"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AdditiveExpression"},{"type":"clause","id":"sec-additive-operators-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.8.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-additive-operators-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.8.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-addition-operator-plus-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.8.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-addition-operator-plus","aoid":null,"title":"The Addition Operator ( + )","titleHTML":"The Addition Operator ( <code>+</code> )","number":"12.8.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_150"],"key":"The Addition Operator ( + )"},{"type":"clause","id":"sec-subtraction-operator-minus-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.8.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-subtraction-operator-minus","aoid":null,"title":"The Subtraction Operator ( - )","titleHTML":"The Subtraction Operator ( <code>-</code> )","number":"12.8.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Subtraction Operator ( - )"},{"type":"clause","id":"sec-applying-the-additive-operators-to-numbers","aoid":null,"title":"Applying the Additive Operators to Numbers","titleHTML":"Applying the Additive Operators to Numbers","number":"12.8.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_326","_ref_327","_ref_328","_ref_329","_ref_336","_ref_337"],"key":"Applying the Additive Operators to Numbers"},{"type":"clause","id":"sec-additive-operators","aoid":null,"title":"Additive Operators","titleHTML":"Additive Operators","number":"12.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Additive Operators"},{"type":"production","id":"prod-ShiftExpression","name":"ShiftExpression","referencingIds":["_ref_10517","_ref_10519","_ref_10521","_ref_10523","_ref_10525","_ref_10527","_ref_10529","_ref_10531","_ref_10533","_ref_10535","_ref_10537","_ref_10539","_ref_10541","_ref_10543","_ref_10545","_ref_10547","_ref_10549","_ref_10551","_ref_10553","_ref_10555","_ref_10557","_ref_10559","_ref_10561","_ref_10563","_ref_10565","_ref_10567","_ref_10569","_ref_10571","_ref_10573","_ref_10575","_ref_10577","_ref_10579","_ref_10581","_ref_10583","_ref_10585","_ref_10587","_ref_10589","_ref_10591","_ref_10593","_ref_10595","_ref_10597","_ref_10599","_ref_10601","_ref_10603","_ref_10605","_ref_10607","_ref_13746","_ref_13748","_ref_13750","_ref_13752","_ref_13754","_ref_13756","_ref_13757","_ref_13759","_ref_13761"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ShiftExpression"},{"type":"clause","id":"sec-bitwise-shift-operators-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-bitwise-shift-operators-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.9.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-left-shift-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.9.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-left-shift-operator","aoid":null,"title":"The Left Shift Operator ( << )","titleHTML":"The Left Shift Operator ( <code><<</code> )","number":"12.9.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Left Shift Operator ( << )"},{"type":"clause","id":"sec-signed-right-shift-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.9.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-signed-right-shift-operator","aoid":null,"title":"The Signed Right Shift Operator ( >> )","titleHTML":"The Signed Right Shift Operator ( <code>>></code> )","number":"12.9.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Signed Right Shift Operator ( >> )"},{"type":"clause","id":"sec-unsigned-right-shift-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.9.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-unsigned-right-shift-operator","aoid":null,"title":"The Unsigned Right Shift Operator ( >>> )","titleHTML":"The Unsigned Right Shift Operator ( <code>>>></code> )","number":"12.9.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Unsigned Right Shift Operator ( >>> )"},{"type":"clause","id":"sec-bitwise-shift-operators","aoid":null,"title":"Bitwise Shift Operators","titleHTML":"Bitwise Shift Operators","number":"12.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Bitwise Shift Operators"},{"type":"production","id":"prod-RelationalExpression","name":"RelationalExpression","referencingIds":["_ref_10548","_ref_10550","_ref_10552","_ref_10554","_ref_10556","_ref_10558","_ref_10560","_ref_10562","_ref_10564","_ref_10566","_ref_10568","_ref_10570","_ref_10572","_ref_10574","_ref_10576","_ref_10578","_ref_10580","_ref_10582","_ref_10584","_ref_10586","_ref_10588","_ref_10590","_ref_10592","_ref_10594","_ref_10596","_ref_10598","_ref_10600","_ref_10602","_ref_10604","_ref_10606","_ref_10608","_ref_10610","_ref_10612","_ref_10614","_ref_10616","_ref_10618","_ref_10620","_ref_10622","_ref_10624","_ref_10626","_ref_10628","_ref_10630","_ref_10632","_ref_10634","_ref_10636","_ref_10638","_ref_10640","_ref_10642","_ref_10644","_ref_10646","_ref_10648","_ref_13738","_ref_13740","_ref_13742","_ref_13744","_ref_13745","_ref_13747","_ref_13749","_ref_13751","_ref_13753","_ref_13755"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RelationalExpression"},{"type":"clause","id":"sec-relational-operators-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.10.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-relational-operators-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.10.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-relational-operators-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.10.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"op","aoid":"InstanceofOperator","refId":"sec-instanceofoperator","location":"","referencingIds":[],"key":"InstanceofOperator"},{"type":"clause","id":"sec-instanceofoperator","aoid":"InstanceofOperator","title":"Runtime Semantics: InstanceofOperator ( V, target )","titleHTML":"Runtime Semantics: InstanceofOperator ( <var>V</var>, <var>target</var> )","number":"12.10.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1701","_ref_3483"],"key":"Runtime Semantics: InstanceofOperator ( V, target )"},{"type":"clause","id":"sec-relational-operators","aoid":null,"title":"Relational Operators","titleHTML":"Relational Operators","number":"12.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Relational Operators"},{"type":"production","id":"prod-EqualityExpression","name":"EqualityExpression","referencingIds":["_ref_10609","_ref_10611","_ref_10613","_ref_10615","_ref_10617","_ref_10619","_ref_10621","_ref_10623","_ref_10625","_ref_10627","_ref_10629","_ref_10631","_ref_10633","_ref_10635","_ref_10637","_ref_10639","_ref_10641","_ref_10643","_ref_10645","_ref_10647","_ref_10649","_ref_10651","_ref_10659","_ref_10665","_ref_13732","_ref_13737","_ref_13739","_ref_13741","_ref_13743"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"EqualityExpression"},{"type":"clause","id":"sec-equality-operators-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.11.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-equality-operators-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.11.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-equality-operators-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.11.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-equality-operators","aoid":null,"title":"Equality Operators","titleHTML":"Equality Operators","number":"12.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Equality Operators"},{"type":"production","id":"prod-BitwiseANDExpression","name":"BitwiseANDExpression","referencingIds":["_ref_10650","_ref_10652","_ref_10654","_ref_10658","_ref_10661","_ref_10664","_ref_10667","_ref_13731","_ref_13734"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BitwiseANDExpression"},{"type":"production","id":"prod-BitwiseXORExpression","name":"BitwiseXORExpression","referencingIds":["_ref_10653","_ref_10655","_ref_10657","_ref_10660","_ref_10663","_ref_10666","_ref_10669","_ref_13733","_ref_13736"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BitwiseXORExpression"},{"type":"production","id":"prod-BitwiseORExpression","name":"BitwiseORExpression","referencingIds":["_ref_10656","_ref_10662","_ref_10668","_ref_10671","_ref_10673","_ref_10678","_ref_10682","_ref_10686","_ref_10688","_ref_13735","_ref_13819","_ref_13820"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BitwiseORExpression"},{"type":"clause","id":"sec-binary-bitwise-operators-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.12.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-binary-bitwise-operators-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.12.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"production","id":"prod-A","name":"A","referencingIds":["_ref_10670"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"A"},{"type":"clause","id":"sec-binary-bitwise-operators-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.12.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-binary-bitwise-operators","aoid":null,"title":"Binary Bitwise Operators","titleHTML":"Binary Bitwise Operators","number":"12.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Binary Bitwise Operators"},{"type":"production","id":"prod-LogicalANDExpression","name":"LogicalANDExpression","referencingIds":["_ref_10672","_ref_10674","_ref_10676","_ref_10677","_ref_10680","_ref_10681","_ref_10684","_ref_10685","_ref_10687","_ref_10690","_ref_10692","_ref_13818","_ref_13822","_ref_13823"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LogicalANDExpression"},{"type":"production","id":"prod-LogicalORExpression","name":"LogicalORExpression","referencingIds":["_ref_10675","_ref_10679","_ref_10683","_ref_10689","_ref_10691","_ref_10693","_ref_10694","_ref_10700","_ref_10703","_ref_10706","_ref_10709","_ref_13813","_ref_13821"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LogicalORExpression"},{"type":"clause","id":"sec-binary-logical-operators-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.13.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-binary-logical-operators-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.13.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-binary-logical-operators-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.13.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-binary-logical-operators","aoid":null,"title":"Binary Logical Operators","titleHTML":"Binary Logical Operators","number":"12.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Binary Logical Operators"},{"type":"production","id":"prod-ConditionalExpression","name":"ConditionalExpression","referencingIds":["_ref_10697","_ref_10699","_ref_10712"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ConditionalExpression"},{"type":"clause","id":"sec-conditional-operator-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.14.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-conditional-operator-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.14.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-conditional-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.14.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-conditional-operator","aoid":null,"title":"Conditional Operator ( ? : )","titleHTML":"Conditional Operator ( <code>? :</code> )","number":"12.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Conditional Operator ( ? : )"},{"type":"production","id":"prod-AssignmentExpression","name":"AssignmentExpression","referencingIds":["_ref_8822","_ref_8824","_ref_8826","_ref_8828","_ref_8831","_ref_9764","_ref_9766","_ref_9770","_ref_9888","_ref_9894","_ref_9899","_ref_9904","_ref_9908","_ref_9911","_ref_9919","_ref_9923","_ref_9931","_ref_9932","_ref_9951","_ref_9953","_ref_9959","_ref_9962","_ref_9993","_ref_9995","_ref_10003","_ref_10021","_ref_10022","_ref_10027","_ref_10028","_ref_10033","_ref_10035","_ref_10036","_ref_10037","_ref_10206","_ref_10207","_ref_10209","_ref_10211","_ref_10362","_ref_10363","_ref_10364","_ref_10365","_ref_10367","_ref_10369","_ref_10371","_ref_10373","_ref_10695","_ref_10696","_ref_10701","_ref_10702","_ref_10704","_ref_10705","_ref_10707","_ref_10708","_ref_10710","_ref_10711","_ref_10717","_ref_10720","_ref_10722","_ref_10738","_ref_10745","_ref_10748","_ref_10753","_ref_10756","_ref_10758","_ref_10763","_ref_10765","_ref_10766","_ref_10769","_ref_10772","_ref_10774","_ref_10778","_ref_10927","_ref_10929","_ref_10931","_ref_10933","_ref_10935","_ref_10937","_ref_11145","_ref_11209","_ref_11562","_ref_11565","_ref_11568","_ref_11571","_ref_11574","_ref_11577","_ref_11609","_ref_11612","_ref_11615","_ref_11618","_ref_11621","_ref_11624","_ref_11776","_ref_11779","_ref_11802","_ref_11805","_ref_11824","_ref_11827","_ref_11830","_ref_11833","_ref_11836","_ref_11839","_ref_11852","_ref_11855","_ref_11858","_ref_11861","_ref_11864","_ref_11867","_ref_11880","_ref_11883","_ref_11886","_ref_11889","_ref_11892","_ref_11895","_ref_11917","_ref_11920","_ref_11924","_ref_11927","_ref_11932","_ref_11935","_ref_11951","_ref_11955","_ref_11958","_ref_11962","_ref_11965","_ref_11970","_ref_11973","_ref_12003","_ref_12005","_ref_12009","_ref_12011","_ref_12015","_ref_12018","_ref_12022","_ref_12024","_ref_12028","_ref_12030","_ref_12034","_ref_12037","_ref_12647","_ref_12744","_ref_12777","_ref_12795","_ref_12796","_ref_12797","_ref_12798","_ref_12801","_ref_12802","_ref_12933","_ref_12935","_ref_13066","_ref_13067","_ref_13068","_ref_13069","_ref_13530","_ref_13588","_ref_13589","_ref_13590","_ref_13591","_ref_13594","_ref_13595","_ref_13627","_ref_13628","_ref_13643","_ref_13646","_ref_13649","_ref_13727","_ref_13730","_ref_13809","_ref_13811","_ref_13812","_ref_13814","_ref_13815","_ref_13816","_ref_13817","_ref_14111","_ref_14138","_ref_14150","_ref_14172","_ref_14198","_ref_14213","_ref_14214","_ref_14226","_ref_14237","_ref_14260","_ref_14261","_ref_14262","_ref_14263","_ref_15069","_ref_15072","_ref_15074","_ref_15077","_ref_15078","_ref_15079"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AssignmentExpression"},{"type":"production","id":"prod-AssignmentOperator","name":"AssignmentOperator","referencingIds":["_ref_10719","_ref_10737","_ref_10747","_ref_10755","_ref_10771","_ref_10775","_ref_13729"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AssignmentOperator"},{"type":"clause","id":"sec-assignment-operators-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"12.15.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_819"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-assignment-operators-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.15.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-assignment-operators-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.15.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-assignment-operators-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.15.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"production","id":"prod-AssignmentPattern","name":"AssignmentPattern","referencingIds":["_ref_10727","_ref_10767","_ref_10821","_ref_10897","_ref_10909","_ref_10925","_ref_11785","_ref_11790","_ref_11791","_ref_12041"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AssignmentPattern"},{"type":"production","id":"prod-ObjectAssignmentPattern","name":"ObjectAssignmentPattern","referencingIds":["_ref_9970","_ref_9973","_ref_9978","_ref_10780","_ref_15062"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ObjectAssignmentPattern"},{"type":"production","id":"prod-ArrayAssignmentPattern","name":"ArrayAssignmentPattern","referencingIds":["_ref_10781"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ArrayAssignmentPattern"},{"type":"production","id":"prod-AssignmentRestProperty","name":"AssignmentRestProperty","referencingIds":["_ref_10782","_ref_10785","_ref_10846","_ref_10847","_ref_10849","_ref_10851"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AssignmentRestProperty"},{"type":"production","id":"prod-AssignmentPropertyList","name":"AssignmentPropertyList","referencingIds":["_ref_10783","_ref_10784","_ref_10794","_ref_10826","_ref_10827","_ref_10828","_ref_10848","_ref_10850","_ref_10852","_ref_10854"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AssignmentPropertyList"},{"type":"production","id":"prod-AssignmentElementList","name":"AssignmentElementList","referencingIds":["_ref_10788","_ref_10789","_ref_10797","_ref_10836","_ref_10837","_ref_10838","_ref_10841","_ref_10871","_ref_10873"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AssignmentElementList"},{"type":"production","id":"prod-AssignmentElisionElement","name":"AssignmentElisionElement","referencingIds":["_ref_10796","_ref_10798","_ref_10869","_ref_10870","_ref_10872","_ref_10874"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AssignmentElisionElement"},{"type":"production","id":"prod-AssignmentProperty","name":"AssignmentProperty","referencingIds":["_ref_10793","_ref_10795","_ref_10853","_ref_10855"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AssignmentProperty"},{"type":"production","id":"prod-AssignmentElement","name":"AssignmentElement","referencingIds":["_ref_10800","_ref_10804","_ref_10864","_ref_10866","_ref_10875","_ref_10876","_ref_10878","_ref_10880"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AssignmentElement"},{"type":"production","id":"prod-AssignmentRestElement","name":"AssignmentRestElement","referencingIds":["_ref_10787","_ref_10791","_ref_10832","_ref_10835","_ref_10840","_ref_10844","_ref_10845"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AssignmentRestElement"},{"type":"production","id":"prod-DestructuringAssignmentTarget","name":"DestructuringAssignmentTarget","referencingIds":["_ref_10792","_ref_10805","_ref_10807","_ref_10812","_ref_10813","_ref_10867","_ref_10868","_ref_10883","_ref_10885","_ref_10888","_ref_10891","_ref_10894","_ref_10898","_ref_10899","_ref_10901","_ref_10902","_ref_10905","_ref_10906","_ref_10910","_ref_10911","_ref_10913","_ref_10916","_ref_10919","_ref_10922","_ref_10926"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DestructuringAssignmentTarget"},{"type":"clause","id":"sec-destructuring-assignment-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"12.15.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-runtime-semantics-destructuringassignmentevaluation","aoid":null,"title":"Runtime Semantics: DestructuringAssignmentEvaluation","titleHTML":"Runtime Semantics: DestructuringAssignmentEvaluation","number":"12.15.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: DestructuringAssignmentEvaluation"},{"type":"clause","id":"sec-runtime-semantics-propertydestructuringassignmentevaluation","aoid":null,"title":"Runtime Semantics: PropertyDestructuringAssignmentEvaluation","titleHTML":"Runtime Semantics: PropertyDestructuringAssignmentEvaluation","number":"12.15.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: PropertyDestructuringAssignmentEvaluation"},{"type":"clause","id":"sec-runtime-semantics-restdestructuringassignmentevaluation","aoid":null,"title":"Runtime Semantics: RestDestructuringAssignmentEvaluation","titleHTML":"Runtime Semantics: RestDestructuringAssignmentEvaluation","number":"12.15.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: RestDestructuringAssignmentEvaluation"},{"type":"clause","id":"sec-runtime-semantics-iteratordestructuringassignmentevaluation","aoid":null,"title":"Runtime Semantics: IteratorDestructuringAssignmentEvaluation","titleHTML":"Runtime Semantics: IteratorDestructuringAssignmentEvaluation","number":"12.15.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: IteratorDestructuringAssignmentEvaluation"},{"type":"clause","id":"sec-runtime-semantics-keyeddestructuringassignmentevaluation","aoid":null,"title":"Runtime Semantics: KeyedDestructuringAssignmentEvaluation","titleHTML":"Runtime Semantics: KeyedDestructuringAssignmentEvaluation","number":"12.15.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: KeyedDestructuringAssignmentEvaluation"},{"type":"clause","id":"sec-destructuring-assignment","aoid":null,"title":"Destructuring Assignment","titleHTML":"Destructuring Assignment","number":"12.15.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Destructuring Assignment"},{"type":"clause","id":"sec-assignment-operators","aoid":null,"title":"Assignment Operators","titleHTML":"Assignment Operators","number":"12.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_780","_ref_781"],"key":"Assignment Operators"},{"type":"production","id":"prod-Expression","name":"Expression","referencingIds":["_ref_8815","_ref_8818","_ref_8820","_ref_8838","_ref_8839","_ref_8842","_ref_8845","_ref_8846","_ref_8851","_ref_8854","_ref_8857","_ref_8858","_ref_8912","_ref_8914","_ref_9757","_ref_9759","_ref_9769","_ref_9826","_ref_9827","_ref_9830","_ref_9832","_ref_9836","_ref_9837","_ref_10053","_ref_10059","_ref_10062","_ref_10068","_ref_10076","_ref_10079","_ref_10086","_ref_10100","_ref_10105","_ref_10112","_ref_10115","_ref_10124","_ref_10125","_ref_10128","_ref_10130","_ref_10134","_ref_10137","_ref_10139","_ref_10147","_ref_10149","_ref_10150","_ref_10153","_ref_10156","_ref_10157","_ref_10163","_ref_10164","_ref_10165","_ref_10166","_ref_10169","_ref_10170","_ref_10171","_ref_10174","_ref_10175","_ref_10176","_ref_10179","_ref_10188","_ref_10198","_ref_10239","_ref_10255","_ref_10267","_ref_10279","_ref_10283","_ref_10303","_ref_10305","_ref_10314","_ref_10316","_ref_10324","_ref_10326","_ref_10354","_ref_10355","_ref_10698","_ref_10928","_ref_10930","_ref_10932","_ref_10934","_ref_10936","_ref_11459","_ref_11473","_ref_11474","_ref_11475","_ref_11478","_ref_11480","_ref_11483","_ref_11486","_ref_11491","_ref_11494","_ref_11499","_ref_11502","_ref_11507","_ref_11510","_ref_11515","_ref_11518","_ref_11523","_ref_11526","_ref_11529","_ref_11532","_ref_11534","_ref_11537","_ref_11538","_ref_11540","_ref_11541","_ref_11542","_ref_11545","_ref_11546","_ref_11549","_ref_11550","_ref_11553","_ref_11556","_ref_11559","_ref_11584","_ref_11585","_ref_11587","_ref_11588","_ref_11589","_ref_11592","_ref_11593","_ref_11596","_ref_11597","_ref_11600","_ref_11603","_ref_11606","_ref_11631","_ref_11634","_ref_11637","_ref_11640","_ref_11643","_ref_11646","_ref_11648","_ref_11649","_ref_11652","_ref_11655","_ref_11658","_ref_11661","_ref_11664","_ref_11666","_ref_11669","_ref_11670","_ref_11674","_ref_11675","_ref_11676","_ref_11679","_ref_11680","_ref_11683","_ref_11684","_ref_11687","_ref_11688","_ref_11689","_ref_11692","_ref_11693","_ref_11696","_ref_11697","_ref_11700","_ref_11701","_ref_11702","_ref_11705","_ref_11706","_ref_11709","_ref_11710","_ref_11713","_ref_11714","_ref_11715","_ref_11719","_ref_11720","_ref_11725","_ref_11726","_ref_11729","_ref_11730","_ref_11731","_ref_11735","_ref_11736","_ref_11741","_ref_11742","_ref_11745","_ref_11746","_ref_11747","_ref_11749","_ref_11750","_ref_11751","_ref_11752","_ref_11755","_ref_11756","_ref_11759","_ref_11760","_ref_11763","_ref_11764","_ref_11769","_ref_11770","_ref_11773","_ref_11794","_ref_11795","_ref_11797","_ref_11799","_ref_11815","_ref_11818","_ref_11821","_ref_11843","_ref_11846","_ref_11849","_ref_11871","_ref_11874","_ref_11877","_ref_11904","_ref_11908","_ref_11913","_ref_11939","_ref_11943","_ref_11948","_ref_11984","_ref_11986","_ref_11990","_ref_11992","_ref_11996","_ref_11999","_ref_12066","_ref_12067","_ref_12068","_ref_12069","_ref_12070","_ref_12071","_ref_12073","_ref_12076","_ref_12079","_ref_12082","_ref_12085","_ref_12088","_ref_12091","_ref_12093","_ref_12096","_ref_12105","_ref_12108","_ref_12113","_ref_12128","_ref_12135","_ref_12150","_ref_12157","_ref_12172","_ref_12191","_ref_12210","_ref_12217","_ref_12232","_ref_12239","_ref_12254","_ref_12282","_ref_12284","_ref_12288","_ref_12290","_ref_12294","_ref_12295","_ref_12388","_ref_12389","_ref_12390","_ref_12786","_ref_12789","_ref_12791","_ref_13651","_ref_13656","_ref_13659","_ref_13660","_ref_13662","_ref_13663","_ref_13664","_ref_13667","_ref_13668","_ref_13671","_ref_13672","_ref_13675","_ref_13678","_ref_13681","_ref_13683","_ref_13689","_ref_13690","_ref_13691","_ref_13706","_ref_13786","_ref_13791","_ref_13810","_ref_13835","_ref_13836","_ref_15161","_ref_15166","_ref_15169","_ref_15172","_ref_15175","_ref_15202","_ref_15206","_ref_15211","_ref_15216","_ref_15222","_ref_15228","_ref_15234","_ref_15240","_ref_15279"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Expression"},{"type":"clause","id":"sec-comma-operator-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"12.16.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-comma-operator-static-semantics-assignmenttargettype","aoid":null,"title":"Static Semantics: AssignmentTargetType","titleHTML":"Static Semantics: AssignmentTargetType","number":"12.16.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: AssignmentTargetType"},{"type":"clause","id":"sec-comma-operator-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"12.16.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-comma-operator","aoid":null,"title":"Comma Operator ( , )","titleHTML":"Comma Operator ( <code>,</code> )","number":"12.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Comma Operator ( , )"},{"type":"clause","id":"sec-ecmascript-language-expressions","aoid":null,"title":"ECMAScript Language: Expressions","titleHTML":"ECMAScript Language: Expressions","number":"12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ECMAScript Language: Expressions"},{"type":"production","id":"prod-Statement","name":"Statement","referencingIds":["_ref_8816","_ref_8819","_ref_8821","_ref_8840","_ref_8843","_ref_8847","_ref_8849","_ref_8852","_ref_8855","_ref_8859","_ref_11030","_ref_11055","_ref_11056","_ref_11065","_ref_11066","_ref_11075","_ref_11084","_ref_11097","_ref_11098","_ref_11100","_ref_11101","_ref_11106","_ref_11107","_ref_11109","_ref_11110","_ref_11476","_ref_11477","_ref_11479","_ref_11481","_ref_11482","_ref_11484","_ref_11485","_ref_11487","_ref_11488","_ref_11489","_ref_11490","_ref_11492","_ref_11493","_ref_11495","_ref_11496","_ref_11497","_ref_11498","_ref_11500","_ref_11501","_ref_11503","_ref_11504","_ref_11505","_ref_11506","_ref_11508","_ref_11509","_ref_11511","_ref_11512","_ref_11513","_ref_11514","_ref_11516","_ref_11517","_ref_11519","_ref_11520","_ref_11521","_ref_11522","_ref_11524","_ref_11525","_ref_11527","_ref_11528","_ref_11530","_ref_11531","_ref_11533","_ref_11535","_ref_11536","_ref_11539","_ref_11543","_ref_11547","_ref_11551","_ref_11554","_ref_11557","_ref_11560","_ref_11563","_ref_11566","_ref_11569","_ref_11572","_ref_11575","_ref_11578","_ref_11583","_ref_11586","_ref_11590","_ref_11594","_ref_11598","_ref_11601","_ref_11604","_ref_11607","_ref_11610","_ref_11613","_ref_11616","_ref_11619","_ref_11622","_ref_11625","_ref_11626","_ref_11627","_ref_11630","_ref_11632","_ref_11633","_ref_11635","_ref_11636","_ref_11638","_ref_11639","_ref_11641","_ref_11642","_ref_11644","_ref_11645","_ref_11647","_ref_11650","_ref_11651","_ref_11653","_ref_11654","_ref_11656","_ref_11657","_ref_11659","_ref_11660","_ref_11662","_ref_11663","_ref_11665","_ref_11667","_ref_11671","_ref_11673","_ref_11677","_ref_11681","_ref_11685","_ref_11686","_ref_11690","_ref_11694","_ref_11698","_ref_11699","_ref_11703","_ref_11707","_ref_11711","_ref_11712","_ref_11716","_ref_11717","_ref_11721","_ref_11723","_ref_11727","_ref_11728","_ref_11732","_ref_11733","_ref_11737","_ref_11739","_ref_11743","_ref_11744","_ref_11748","_ref_11753","_ref_11757","_ref_11761","_ref_11765","_ref_11771","_ref_11774","_ref_11777","_ref_11780","_ref_11800","_ref_11803","_ref_11806","_ref_11809","_ref_11816","_ref_11819","_ref_11822","_ref_11825","_ref_11828","_ref_11831","_ref_11834","_ref_11837","_ref_11840","_ref_11841","_ref_11844","_ref_11847","_ref_11850","_ref_11853","_ref_11856","_ref_11859","_ref_11862","_ref_11865","_ref_11868","_ref_11869","_ref_11872","_ref_11875","_ref_11878","_ref_11881","_ref_11884","_ref_11887","_ref_11890","_ref_11893","_ref_11896","_ref_11897","_ref_11905","_ref_11906","_ref_11909","_ref_11911","_ref_11914","_ref_11915","_ref_11918","_ref_11921","_ref_11922","_ref_11925","_ref_11928","_ref_11930","_ref_11933","_ref_11936","_ref_11937","_ref_11940","_ref_11941","_ref_11944","_ref_11946","_ref_11949","_ref_11952","_ref_11953","_ref_11956","_ref_11959","_ref_11960","_ref_11963","_ref_11966","_ref_11968","_ref_11971","_ref_11974","_ref_11975","_ref_11985","_ref_11988","_ref_11991","_ref_11994","_ref_11997","_ref_12001","_ref_12004","_ref_12007","_ref_12010","_ref_12013","_ref_12016","_ref_12020","_ref_12023","_ref_12026","_ref_12029","_ref_12032","_ref_12035","_ref_12039","_ref_12072","_ref_12074","_ref_12075","_ref_12077","_ref_12078","_ref_12080","_ref_12081","_ref_12083","_ref_12084","_ref_12086","_ref_12087","_ref_12089","_ref_12090","_ref_12092","_ref_12094","_ref_12095","_ref_12302","_ref_12304","_ref_12305","_ref_12327","_ref_12331","_ref_12337","_ref_12347","_ref_12348","_ref_12350","_ref_12351","_ref_12357","_ref_12358","_ref_12360","_ref_12361","_ref_12376","_ref_12377","_ref_12380","_ref_12381","_ref_13644","_ref_13647","_ref_13650","_ref_13652","_ref_13653","_ref_13654","_ref_13655","_ref_13657","_ref_13658","_ref_13661","_ref_13665","_ref_13669","_ref_13673","_ref_13676","_ref_13679","_ref_13682","_ref_13684","_ref_13685","_ref_15168","_ref_15170","_ref_15203","_ref_15207","_ref_15208","_ref_15212","_ref_15213","_ref_15217","_ref_15218","_ref_15223","_ref_15225","_ref_15229","_ref_15231","_ref_15235","_ref_15242","_ref_15275","_ref_15276","_ref_15285","_ref_15287","_ref_15290"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Statement"},{"type":"production","id":"prod-Declaration","name":"Declaration","referencingIds":["_ref_11031","_ref_11040","_ref_11045","_ref_11050","_ref_11059","_ref_11060","_ref_11069","_ref_11070","_ref_11076","_ref_11077","_ref_11079","_ref_11085","_ref_11086","_ref_11088","_ref_11093","_ref_11094","_ref_11111","_ref_11112","_ref_11119","_ref_11124","_ref_13633","_ref_14107","_ref_14132","_ref_14133","_ref_14146","_ref_14147","_ref_14168","_ref_14169","_ref_14192","_ref_14193","_ref_14220","_ref_14221","_ref_14234","_ref_14253","_ref_14254"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Declaration"},{"type":"production","id":"prod-HoistableDeclaration","name":"HoistableDeclaration","referencingIds":["_ref_10952","_ref_11078","_ref_11087","_ref_11095","_ref_11096","_ref_11113","_ref_11114","_ref_14108","_ref_14134","_ref_14135","_ref_14148","_ref_14170","_ref_14194","_ref_14195","_ref_14222","_ref_14223","_ref_14235","_ref_14255","_ref_14256"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"HoistableDeclaration"},{"type":"production","id":"prod-BreakableStatement","name":"BreakableStatement","referencingIds":["_ref_10943","_ref_11015","_ref_11024","_ref_12379"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BreakableStatement"},{"type":"clause","id":"sec-statement-semantics-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-statement-semantics-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-statement-semantics-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-static-semantics-declarationpart","aoid":null,"title":"Static Semantics: DeclarationPart","titleHTML":"Static Semantics: DeclarationPart","number":"13.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: DeclarationPart"},{"type":"clause","id":"sec-statement-semantics-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-statement-semantics-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-statement-semantics-runtime-semantics-labelledevaluation","aoid":null,"title":"Runtime Semantics: LabelledEvaluation","titleHTML":"Runtime Semantics: LabelledEvaluation","number":"13.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: LabelledEvaluation"},{"type":"clause","id":"sec-statement-semantics-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-statement-semantics","aoid":null,"title":"Statement Semantics","titleHTML":"Statement Semantics","number":"13.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Statement Semantics"},{"type":"production","id":"prod-BlockStatement","name":"BlockStatement","referencingIds":["_ref_9022","_ref_10938","_ref_15179","_ref_15180"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BlockStatement"},{"type":"production","id":"prod-Block","name":"Block","referencingIds":["_ref_11025","_ref_11128","_ref_11135","_ref_11461","_ref_12391","_ref_12393","_ref_12395","_ref_12399","_ref_12400","_ref_12401","_ref_12406","_ref_12409","_ref_12411","_ref_12412","_ref_12414","_ref_12416","_ref_12418","_ref_12420","_ref_12423","_ref_12427","_ref_12428","_ref_12429","_ref_12431","_ref_12433","_ref_12435","_ref_12437","_ref_12440","_ref_12444","_ref_12445","_ref_12446","_ref_12448","_ref_12450","_ref_12452","_ref_12454","_ref_12457","_ref_12461","_ref_12462","_ref_12463","_ref_12465","_ref_12467","_ref_12469","_ref_12471","_ref_12474","_ref_12478","_ref_12479","_ref_12480","_ref_12482","_ref_12484","_ref_12486","_ref_12488","_ref_12491","_ref_12495","_ref_12496","_ref_12498","_ref_12501","_ref_12502","_ref_12503","_ref_12504","_ref_12505","_ref_12507","_ref_12509","_ref_12511","_ref_12513","_ref_12516","_ref_13711","_ref_13714","_ref_13716","_ref_13721","_ref_13722","_ref_15306","_ref_15309"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Block"},{"type":"production","id":"prod-StatementList","name":"StatementList","referencingIds":["_ref_8923","_ref_8924","_ref_8925","_ref_11026","_ref_11028","_ref_11032","_ref_11033","_ref_11034","_ref_11035","_ref_11036","_ref_11038","_ref_11041","_ref_11043","_ref_11046","_ref_11048","_ref_11051","_ref_11053","_ref_11061","_ref_11063","_ref_11071","_ref_11073","_ref_11080","_ref_11082","_ref_11089","_ref_11091","_ref_11102","_ref_11104","_ref_11115","_ref_11117","_ref_11120","_ref_11122","_ref_11125","_ref_11126","_ref_11127","_ref_11129","_ref_11131","_ref_11133","_ref_11134","_ref_12106","_ref_12107","_ref_12129","_ref_12130","_ref_12131","_ref_12132","_ref_12133","_ref_12134","_ref_12151","_ref_12152","_ref_12153","_ref_12154","_ref_12155","_ref_12156","_ref_12173","_ref_12174","_ref_12175","_ref_12176","_ref_12177","_ref_12178","_ref_12192","_ref_12193","_ref_12194","_ref_12195","_ref_12196","_ref_12197","_ref_12211","_ref_12212","_ref_12213","_ref_12214","_ref_12215","_ref_12216","_ref_12233","_ref_12234","_ref_12235","_ref_12236","_ref_12237","_ref_12238","_ref_12255","_ref_12256","_ref_12257","_ref_12258","_ref_12259","_ref_12260","_ref_12283","_ref_12285","_ref_12287","_ref_12296","_ref_12297","_ref_12298","_ref_12299","_ref_12540","_ref_12665","_ref_12666","_ref_12667","_ref_12668","_ref_12669","_ref_12670","_ref_12671","_ref_12672","_ref_13629","_ref_13631","_ref_13707","_ref_13708","_ref_13709","_ref_13710","_ref_13838","_ref_13843","_ref_13844","_ref_13845","_ref_13849","_ref_13850","_ref_13851","_ref_13852","_ref_13853","_ref_13854","_ref_13855","_ref_13857","_ref_13858","_ref_13859","_ref_13860","_ref_13861","_ref_13862","_ref_14294","_ref_14295","_ref_14298","_ref_14299","_ref_14303","_ref_14304","_ref_15093","_ref_15100","_ref_15108","_ref_15115","_ref_15122","_ref_15135","_ref_15148","_ref_15159","_ref_15160","_ref_15266"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"StatementList"},{"type":"production","id":"prod-StatementListItem","name":"StatementListItem","referencingIds":["_ref_11027","_ref_11029","_ref_11037","_ref_11039","_ref_11042","_ref_11044","_ref_11047","_ref_11049","_ref_11052","_ref_11054","_ref_11062","_ref_11064","_ref_11072","_ref_11074","_ref_11081","_ref_11083","_ref_11090","_ref_11092","_ref_11103","_ref_11105","_ref_11116","_ref_11118","_ref_11121","_ref_11123","_ref_11130","_ref_11132","_ref_12542","_ref_13630","_ref_13632","_ref_13888","_ref_13931","_ref_13940","_ref_13946","_ref_13952","_ref_13959","_ref_13971","_ref_13972","_ref_15178","_ref_15271"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"StatementListItem"},{"type":"clause","id":"sec-block-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-block-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-block-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-block-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-block-static-semantics-lexicallydeclarednames","aoid":null,"title":"Static Semantics: LexicallyDeclaredNames","titleHTML":"Static Semantics: LexicallyDeclaredNames","number":"13.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyDeclaredNames"},{"type":"clause","id":"sec-block-static-semantics-lexicallyscopeddeclarations","aoid":null,"title":"Static Semantics: LexicallyScopedDeclarations","titleHTML":"Static Semantics: LexicallyScopedDeclarations","number":"13.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyScopedDeclarations"},{"type":"clause","id":"sec-block-static-semantics-toplevellexicallydeclarednames","aoid":null,"title":"Static Semantics: TopLevelLexicallyDeclaredNames","titleHTML":"Static Semantics: TopLevelLexicallyDeclaredNames","number":"13.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: TopLevelLexicallyDeclaredNames"},{"type":"clause","id":"sec-block-static-semantics-toplevellexicallyscopeddeclarations","aoid":null,"title":"Static Semantics: TopLevelLexicallyScopedDeclarations","titleHTML":"Static Semantics: TopLevelLexicallyScopedDeclarations","number":"13.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_161"],"key":"Static Semantics: TopLevelLexicallyScopedDeclarations"},{"type":"clause","id":"sec-block-static-semantics-toplevelvardeclarednames","aoid":null,"title":"Static Semantics: TopLevelVarDeclaredNames","titleHTML":"Static Semantics: TopLevelVarDeclaredNames","number":"13.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: TopLevelVarDeclaredNames"},{"type":"clause","id":"sec-block-static-semantics-toplevelvarscopeddeclarations","aoid":null,"title":"Static Semantics: TopLevelVarScopedDeclarations","titleHTML":"Static Semantics: TopLevelVarScopedDeclarations","number":"13.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_162"],"key":"Static Semantics: TopLevelVarScopedDeclarations"},{"type":"clause","id":"sec-block-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.2.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-block-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.2.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-block-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.2.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"op","aoid":"BlockDeclarationInstantiation","refId":"sec-blockdeclarationinstantiation","location":"","referencingIds":[],"key":"BlockDeclarationInstantiation"},{"type":"clause","id":"sec-blockdeclarationinstantiation","aoid":"BlockDeclarationInstantiation","title":"Runtime Semantics: BlockDeclarationInstantiation ( code, env )","titleHTML":"Runtime Semantics: BlockDeclarationInstantiation ( <var>code</var>, <var>env</var> )","number":"13.2.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3652","_ref_3964","_ref_8765","_ref_8766"],"key":"Runtime Semantics: BlockDeclarationInstantiation ( code, env )"},{"type":"clause","id":"sec-block","aoid":null,"title":"Block","titleHTML":"Block","number":"13.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_820"],"key":"Block"},{"type":"production","id":"prod-LexicalDeclaration","name":"LexicalDeclaration","referencingIds":["_ref_8837","_ref_8841","_ref_8844","_ref_8848","_ref_8850","_ref_8853","_ref_8856","_ref_9071","_ref_9075","_ref_10954","_ref_10995","_ref_10996","_ref_11166","_ref_11470","_ref_11548","_ref_11595","_ref_11668","_ref_11672","_ref_11682","_ref_11695","_ref_11708","_ref_11724","_ref_11740","_ref_11762","_ref_11766","_ref_11767","_ref_11768","_ref_13670","_ref_15269","_ref_15272","_ref_15278"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LexicalDeclaration"},{"type":"production","id":"prod-LetOrConst","name":"LetOrConst","referencingIds":["_ref_11150","_ref_11159","_ref_11168","_ref_11181","_ref_11183","_ref_11184","_ref_11579","_ref_11811","_ref_11898","_ref_11976","_ref_11979","_ref_11982"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LetOrConst"},{"type":"production","id":"prod-BindingList","name":"BindingList","referencingIds":["_ref_11151","_ref_11153","_ref_11160","_ref_11161","_ref_11162","_ref_11169","_ref_11170","_ref_11171","_ref_11173","_ref_11182","_ref_11185","_ref_11186","_ref_11187","_ref_11189"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BindingList"},{"type":"production","id":"prod-LexicalBinding","name":"LexicalBinding","referencingIds":["_ref_11141","_ref_11142","_ref_11146","_ref_11147","_ref_11149","_ref_11152","_ref_11154","_ref_11167","_ref_11172","_ref_11174","_ref_11188","_ref_11190","_ref_11193","_ref_11471"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LexicalBinding"},{"type":"clause","id":"sec-let-and-const-declarations-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_279"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-let-and-const-declarations-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"13.3.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-let-and-const-declarations-static-semantics-isconstantdeclaration","aoid":null,"title":"Static Semantics: IsConstantDeclaration","titleHTML":"Static Semantics: IsConstantDeclaration","number":"13.3.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsConstantDeclaration"},{"type":"clause","id":"sec-let-and-const-declarations-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.3.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-let-and-const-declarations","aoid":null,"title":"Let and Const Declarations","titleHTML":"Let and Const Declarations","number":"13.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Let and Const Declarations"},{"type":"production","id":"prod-VariableStatement","name":"VariableStatement","referencingIds":["_ref_9045","_ref_9073","_ref_9082","_ref_10939","_ref_10961","_ref_10969","_ref_10976","_ref_13634","_ref_13969","_ref_13986","_ref_13995","_ref_13996","_ref_14106","_ref_14130","_ref_14131","_ref_14144","_ref_14145","_ref_14166","_ref_14167","_ref_14190","_ref_14191","_ref_14219","_ref_14233","_ref_14251","_ref_14252","_ref_15129","_ref_15142","_ref_15155"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"VariableStatement"},{"type":"production","id":"prod-VariableDeclarationList","name":"VariableDeclarationList","referencingIds":["_ref_11211","_ref_11213","_ref_11219","_ref_11221","_ref_11229","_ref_11230","_ref_11233","_ref_11235","_ref_11237","_ref_11238","_ref_11239","_ref_11241","_ref_11544","_ref_11591","_ref_11678","_ref_11691","_ref_11704","_ref_11718","_ref_11722","_ref_11734","_ref_11738","_ref_11754","_ref_11758","_ref_13666"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"VariableDeclarationList"},{"type":"production","id":"prod-VariableDeclaration","name":"VariableDeclaration","referencingIds":["_ref_9030","_ref_9050","_ref_9055","_ref_9060","_ref_9065","_ref_9066","_ref_9085","_ref_11205","_ref_11206","_ref_11210","_ref_11212","_ref_11214","_ref_11220","_ref_11222","_ref_11231","_ref_11232","_ref_11234","_ref_11236","_ref_11240","_ref_11242","_ref_11250","_ref_11252","_ref_13867","_ref_13874","_ref_14306","_ref_14313","_ref_15282"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"VariableDeclaration"},{"type":"clause","id":"sec-variable-statement-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"13.3.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-variable-statement-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.3.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-variable-statement-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.3.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-variable-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.3.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-variable-statement","aoid":null,"title":"Variable Statement","titleHTML":"Variable Statement","number":"13.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Variable Statement"},{"type":"production","id":"prod-BindingPattern","name":"BindingPattern","referencingIds":["_ref_9829","_ref_9833","_ref_11157","_ref_11178","_ref_11180","_ref_11200","_ref_11203","_ref_11217","_ref_11226","_ref_11228","_ref_11254","_ref_11257","_ref_11283","_ref_11288","_ref_11318","_ref_11320","_ref_11348","_ref_11354","_ref_11355","_ref_11356","_ref_11357","_ref_11362","_ref_11363","_ref_11437","_ref_11441","_ref_11444","_ref_11445","_ref_11446","_ref_11450","_ref_11582","_ref_11902","_ref_12403","_ref_12788","_ref_12792"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BindingPattern"},{"type":"production","id":"prod-ObjectBindingPattern","name":"ObjectBindingPattern","referencingIds":["_ref_11258","_ref_11368","_ref_11369"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ObjectBindingPattern"},{"type":"production","id":"prod-ArrayBindingPattern","name":"ArrayBindingPattern","referencingIds":["_ref_11259","_ref_11370","_ref_11371","_ref_11472"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ArrayBindingPattern"},{"type":"production","id":"prod-BindingRestProperty","name":"BindingRestProperty","referencingIds":["_ref_11260","_ref_11263","_ref_11375","_ref_11376","_ref_11378","_ref_11380"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BindingRestProperty"},{"type":"production","id":"prod-BindingPropertyList","name":"BindingPropertyList","referencingIds":["_ref_11261","_ref_11262","_ref_11272","_ref_11301","_ref_11303","_ref_11333","_ref_11335","_ref_11372","_ref_11373","_ref_11374","_ref_11377","_ref_11379","_ref_11381","_ref_11383"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BindingPropertyList"},{"type":"production","id":"prod-BindingElementList","name":"BindingElementList","referencingIds":["_ref_11266","_ref_11267","_ref_11275","_ref_11293","_ref_11295","_ref_11296","_ref_11299","_ref_11305","_ref_11307","_ref_11325","_ref_11327","_ref_11328","_ref_11331","_ref_11337","_ref_11339","_ref_11401","_ref_11402","_ref_11403","_ref_11404","_ref_11405","_ref_11407","_ref_11409","_ref_11412","_ref_11418","_ref_11420"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BindingElementList"},{"type":"production","id":"prod-BindingElisionElement","name":"BindingElisionElement","referencingIds":["_ref_11274","_ref_11276","_ref_11306","_ref_11308","_ref_11338","_ref_11340","_ref_11416","_ref_11417","_ref_11419","_ref_11421"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BindingElisionElement"},{"type":"production","id":"prod-BindingProperty","name":"BindingProperty","referencingIds":["_ref_11271","_ref_11273","_ref_11302","_ref_11304","_ref_11334","_ref_11336","_ref_11382","_ref_11384"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BindingProperty"},{"type":"production","id":"prod-BindingElement","name":"BindingElement","referencingIds":["_ref_11278","_ref_11281","_ref_11310","_ref_11311","_ref_11313","_ref_11314","_ref_11342","_ref_11343","_ref_11345","_ref_11347","_ref_11389","_ref_11391","_ref_11422","_ref_11423","_ref_11425","_ref_11427","_ref_12538","_ref_12663","_ref_12664","_ref_12683","_ref_12684","_ref_12685","_ref_12686","_ref_12687"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BindingElement"},{"type":"production","id":"prod-SingleNameBinding","name":"SingleNameBinding","referencingIds":["_ref_11279","_ref_11282","_ref_11385","_ref_11386","_ref_11387","_ref_11428","_ref_11429"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SingleNameBinding"},{"type":"production","id":"prod-BindingRestElement","name":"BindingRestElement","referencingIds":["_ref_11265","_ref_11269","_ref_11291","_ref_11292","_ref_11298","_ref_11300","_ref_11323","_ref_11324","_ref_11330","_ref_11332","_ref_11397","_ref_11400","_ref_11411","_ref_11415","_ref_12537","_ref_12688","_ref_12689","_ref_12690","_ref_12691","_ref_12692"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BindingRestElement"},{"type":"clause","id":"sec-destructuring-binding-patterns-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"13.3.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-destructuring-binding-patterns-static-semantics-containsexpression","aoid":null,"title":"Static Semantics: ContainsExpression","titleHTML":"Static Semantics: ContainsExpression","number":"13.3.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsExpression"},{"type":"clause","id":"sec-destructuring-binding-patterns-static-semantics-hasinitializer","aoid":null,"title":"Static Semantics: HasInitializer","titleHTML":"Static Semantics: HasInitializer","number":"13.3.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasInitializer"},{"type":"clause","id":"sec-destructuring-binding-patterns-static-semantics-issimpleparameterlist","aoid":null,"title":"Static Semantics: IsSimpleParameterList","titleHTML":"Static Semantics: IsSimpleParameterList","number":"13.3.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsSimpleParameterList"},{"type":"clause","id":"sec-destructuring-binding-patterns-runtime-semantics-bindinginitialization","aoid":null,"title":"Runtime Semantics: BindingInitialization","titleHTML":"Runtime Semantics: BindingInitialization","number":"13.3.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: BindingInitialization"},{"type":"clause","id":"sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization","aoid":null,"title":"Runtime Semantics: PropertyBindingInitialization","titleHTML":"Runtime Semantics: PropertyBindingInitialization","number":"13.3.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: PropertyBindingInitialization"},{"type":"clause","id":"sec-destructuring-binding-patterns-runtime-semantics-restbindinginitialization","aoid":null,"title":"Runtime Semantics: RestBindingInitialization","titleHTML":"Runtime Semantics: RestBindingInitialization","number":"13.3.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: RestBindingInitialization"},{"type":"clause","id":"sec-destructuring-binding-patterns-runtime-semantics-iteratorbindinginitialization","aoid":null,"title":"Runtime Semantics: IteratorBindingInitialization","titleHTML":"Runtime Semantics: IteratorBindingInitialization","number":"13.3.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: IteratorBindingInitialization"},{"type":"clause","id":"sec-runtime-semantics-keyedbindinginitialization","aoid":null,"title":"Runtime Semantics: KeyedBindingInitialization","titleHTML":"Runtime Semantics: KeyedBindingInitialization","number":"13.3.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: KeyedBindingInitialization"},{"type":"clause","id":"sec-destructuring-binding-patterns","aoid":null,"title":"Destructuring Binding Patterns","titleHTML":"Destructuring Binding Patterns","number":"13.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Destructuring Binding Patterns"},{"type":"clause","id":"sec-declarations-and-the-variable-statement","aoid":null,"title":"Declarations and the Variable Statement","titleHTML":"Declarations and the Variable Statement","number":"13.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Declarations and the Variable Statement"},{"type":"production","id":"prod-EmptyStatement","name":"EmptyStatement","referencingIds":["_ref_10940","_ref_10962","_ref_10970","_ref_10977","_ref_10997","_ref_11004","_ref_13635"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"EmptyStatement"},{"type":"clause","id":"sec-empty-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-empty-statement","aoid":null,"title":"Empty Statement","titleHTML":"Empty Statement","number":"13.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Empty Statement"},{"type":"production","id":"prod-ExpressionStatement","name":"ExpressionStatement","referencingIds":["_ref_8862","_ref_8864","_ref_8866","_ref_8868","_ref_8870","_ref_8872","_ref_8874","_ref_8876","_ref_8878","_ref_8881","_ref_8883","_ref_8894","_ref_8895","_ref_8897","_ref_8899","_ref_8901","_ref_8902","_ref_10941","_ref_10963","_ref_10971","_ref_10978","_ref_10998","_ref_11005","_ref_11460","_ref_11462","_ref_11466","_ref_11469","_ref_12541","_ref_12547","_ref_12549","_ref_12553","_ref_12554","_ref_12555","_ref_13636","_ref_15273"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ExpressionStatement"},{"type":"clause","id":"sec-expression-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-expression-statement","aoid":null,"title":"Expression Statement","titleHTML":"Expression Statement","number":"13.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_821"],"key":"Expression Statement"},{"type":"production","id":"prod-IfStatement","name":"IfStatement","referencingIds":["_ref_10942","_ref_15274","_ref_15277"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"IfStatement"},{"type":"clause","id":"sec-if-statement-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-if-statement-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-if-statement-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.6.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-if-statement-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.6.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-if-statement-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.6.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-if-statement-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.6.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-if-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.6.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_822"],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-if-statement","aoid":null,"title":"The if Statement","titleHTML":"The <code>if</code> Statement","number":"13.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_757"],"key":"The if Statement"},{"type":"production","id":"prod-IterationStatement","name":"IterationStatement","referencingIds":["_ref_10959","_ref_10983","_ref_10984","_ref_11011","_ref_11012","_ref_11022","_ref_11628","_ref_12051","_ref_12059","_ref_15284","_ref_15286","_ref_15288"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"IterationStatement"},{"type":"production","id":"prod-ForDeclaration","name":"ForDeclaration","referencingIds":["_ref_11558","_ref_11567","_ref_11576","_ref_11605","_ref_11614","_ref_11623","_ref_11798","_ref_11801","_ref_11804","_ref_11807","_ref_11808","_ref_11810","_ref_11820","_ref_11829","_ref_11838","_ref_11848","_ref_11857","_ref_11866","_ref_11876","_ref_11885","_ref_11894","_ref_11912","_ref_11931","_ref_11934","_ref_11947","_ref_11969","_ref_11972","_ref_11995","_ref_11998","_ref_12000","_ref_12014","_ref_12017","_ref_12019","_ref_12033","_ref_12036","_ref_12038","_ref_12042","_ref_12044","_ref_13648","_ref_13680","_ref_15280"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ForDeclaration"},{"type":"production","id":"prod-ForBinding","name":"ForBinding","referencingIds":["_ref_9086","_ref_11555","_ref_11564","_ref_11573","_ref_11580","_ref_11602","_ref_11611","_ref_11620","_ref_11812","_ref_11813","_ref_11817","_ref_11826","_ref_11835","_ref_11845","_ref_11854","_ref_11863","_ref_11873","_ref_11882","_ref_11891","_ref_11899","_ref_11900","_ref_11907","_ref_11910","_ref_11923","_ref_11926","_ref_11929","_ref_11942","_ref_11945","_ref_11957","_ref_11961","_ref_11964","_ref_11967","_ref_11977","_ref_11978","_ref_11980","_ref_11981","_ref_11989","_ref_11993","_ref_12008","_ref_12012","_ref_12027","_ref_12031","_ref_12043","_ref_13645","_ref_13677","_ref_13868","_ref_13875","_ref_14307","_ref_14314","_ref_15283"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ForBinding"},{"type":"clause","id":"sec-semantics-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.7.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"op","aoid":"LoopContinues","refId":"sec-loopcontinues","location":"","referencingIds":[],"key":"LoopContinues"},{"type":"clause","id":"sec-loopcontinues","aoid":"LoopContinues","title":"Runtime Semantics: LoopContinues ( completion, labelSet )","titleHTML":"Runtime Semantics: LoopContinues ( <var>completion</var>, <var>labelSet</var> )","number":"13.7.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3776","_ref_3785","_ref_3806","_ref_3883"],"key":"Runtime Semantics: LoopContinues ( completion, labelSet )"},{"type":"clause","id":"sec-iteration-statements-semantics","aoid":null,"title":"Semantics","titleHTML":"Semantics","number":"13.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Semantics"},{"type":"clause","id":"sec-do-while-statement-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.7.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-do-while-statement-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.7.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-do-while-statement-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.7.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-do-while-statement-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.7.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-do-while-statement-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.7.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-do-while-statement-runtime-semantics-labelledevaluation","aoid":null,"title":"Runtime Semantics: LabelledEvaluation","titleHTML":"Runtime Semantics: LabelledEvaluation","number":"13.7.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: LabelledEvaluation"},{"type":"clause","id":"sec-do-while-statement","aoid":null,"title":"The do-while Statement","titleHTML":"The <code>do</code>-<code>while</code> Statement","number":"13.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_302"],"key":"The do-while Statement"},{"type":"clause","id":"sec-while-statement-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.7.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-while-statement-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.7.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-while-statement-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.7.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-while-statement-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.7.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-while-statement-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.7.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-while-statement-runtime-semantics-labelledevaluation","aoid":null,"title":"Runtime Semantics: LabelledEvaluation","titleHTML":"Runtime Semantics: LabelledEvaluation","number":"13.7.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: LabelledEvaluation"},{"type":"clause","id":"sec-while-statement","aoid":null,"title":"The while Statement","titleHTML":"The <code>while</code> Statement","number":"13.7.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The while Statement"},{"type":"clause","id":"sec-for-statement-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.7.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-for-statement-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.7.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-for-statement-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.7.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-for-statement-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.7.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-for-statement-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.7.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-for-statement-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.7.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-for-statement-runtime-semantics-labelledevaluation","aoid":null,"title":"Runtime Semantics: LabelledEvaluation","titleHTML":"Runtime Semantics: LabelledEvaluation","number":"13.7.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: LabelledEvaluation"},{"type":"op","aoid":"ForBodyEvaluation","refId":"sec-forbodyevaluation","location":"","referencingIds":[],"key":"ForBodyEvaluation"},{"type":"clause","id":"sec-forbodyevaluation","aoid":"ForBodyEvaluation","title":"Runtime Semantics: ForBodyEvaluation ( test, increment, stmt, perIterationBindings, labelSet )","titleHTML":"Runtime Semantics: ForBodyEvaluation ( <var>test</var>, <var>increment</var>, <var>stmt</var>, <var>perIterationBindings</var>, <var>labelSet</var> )","number":"13.7.4.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3789","_ref_3791","_ref_3799"],"key":"Runtime Semantics: ForBodyEvaluation ( test, increment, stmt, perIterationBindings, labelSet )"},{"type":"op","aoid":"CreatePerIterationEnvironment","refId":"sec-createperiterationenvironment","location":"","referencingIds":[],"key":"CreatePerIterationEnvironment"},{"type":"clause","id":"sec-createperiterationenvironment","aoid":"CreatePerIterationEnvironment","title":"Runtime Semantics: CreatePerIterationEnvironment ( perIterationBindings )","titleHTML":"Runtime Semantics: CreatePerIterationEnvironment ( <var>perIterationBindings</var> )","number":"13.7.4.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3802","_ref_3809"],"key":"Runtime Semantics: CreatePerIterationEnvironment ( perIterationBindings )"},{"type":"clause","id":"sec-for-statement","aoid":null,"title":"The for Statement","titleHTML":"The <code>for</code> Statement","number":"13.7.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_303"],"key":"The for Statement"},{"type":"clause","id":"sec-for-in-and-for-of-statements-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.7.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_280"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-for-in-and-for-of-statements-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"13.7.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-for-in-and-for-of-statements-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.7.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_762"],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-for-in-and-for-of-statements-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.7.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_763"],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-for-in-and-for-of-statements-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.7.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_764"],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-for-in-and-for-of-statements-static-semantics-isdestructuring","aoid":null,"title":"Static Semantics: IsDestructuring","titleHTML":"Static Semantics: IsDestructuring","number":"13.7.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_765"],"key":"Static Semantics: IsDestructuring"},{"type":"clause","id":"sec-for-in-and-for-of-statements-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.7.5.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_766"],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-for-in-and-for-of-statements-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.7.5.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_767"],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-for-in-and-for-of-statements-runtime-semantics-bindinginitialization","aoid":null,"title":"Runtime Semantics: BindingInitialization","titleHTML":"Runtime Semantics: BindingInitialization","number":"13.7.5.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: BindingInitialization"},{"type":"clause","id":"sec-runtime-semantics-bindinginstantiation","aoid":null,"title":"Runtime Semantics: BindingInstantiation","titleHTML":"Runtime Semantics: BindingInstantiation","number":"13.7.5.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: BindingInstantiation"},{"type":"clause","id":"sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation","aoid":null,"title":"Runtime Semantics: LabelledEvaluation","titleHTML":"Runtime Semantics: LabelledEvaluation","number":"13.7.5.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_768"],"key":"Runtime Semantics: LabelledEvaluation"},{"type":"op","aoid":"ForIn/OfHeadEvaluation","refId":"sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind","location":"","referencingIds":[],"key":"ForIn/OfHeadEvaluation"},{"type":"clause","id":"sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind","aoid":"ForIn/OfHeadEvaluation","title":"Runtime Semantics: ForIn/OfHeadEvaluation ( TDZnames, expr, iterationKind )","titleHTML":"Runtime Semantics: ForIn/OfHeadEvaluation ( <var>TDZnames</var>, <var>expr</var>, <var>iterationKind</var> )","number":"13.7.5.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3825","_ref_3827","_ref_3829","_ref_3831","_ref_3833","_ref_3835","_ref_3837","_ref_3839","_ref_3841","_ref_8785"],"key":"Runtime Semantics: ForIn/OfHeadEvaluation ( TDZnames, expr, iterationKind )"},{"type":"op","aoid":"ForIn/OfBodyEvaluation","refId":"sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset","location":"","referencingIds":[],"key":"ForIn/OfBodyEvaluation"},{"type":"clause","id":"sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset","aoid":"ForIn/OfBodyEvaluation","title":"Runtime Semantics: ForIn/OfBodyEvaluation ( lhs, stmt, iteratorRecord, iterationKind, lhsKind, labelSet [ , iteratorKind ] )","titleHTML":"Runtime Semantics: ForIn/OfBodyEvaluation ( <var>lhs</var>, <var>stmt</var>, <var>iteratorRecord</var>, <var>iterationKind</var>, <var>lhsKind</var>, <var>labelSet</var> [ , <var>iteratorKind</var> ] )","number":"13.7.5.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3826","_ref_3828","_ref_3830","_ref_3832","_ref_3834","_ref_3836","_ref_3838","_ref_3840","_ref_3842","_ref_8786"],"key":"Runtime Semantics: ForIn/OfBodyEvaluation ( lhs, stmt, iteratorRecord, iterationKind, lhsKind, labelSet [ , iteratorKind ] )"},{"type":"clause","id":"sec-for-in-and-for-of-statements-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.7.5.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"op","aoid":"EnumerateObjectProperties","refId":"sec-enumerate-object-properties","location":"","referencingIds":[],"key":"EnumerateObjectProperties"},{"type":"clause","id":"sec-enumerate-object-properties","aoid":"EnumerateObjectProperties","title":"EnumerateObjectProperties ( O )","titleHTML":"EnumerateObjectProperties ( <var>O</var> )","number":"13.7.5.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1723","_ref_3853"],"key":"EnumerateObjectProperties ( O )"},{"type":"clause","id":"sec-for-in-and-for-of-statements","aoid":null,"title":"The for-in, for-of, and for-await-of Statements","titleHTML":"The <code>for</code>-<code>in</code>, <code>for</code>-<code>of</code>, and <code>for</code>-<code>await</code>-<code>of</code> Statements","number":"13.7.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_38","_ref_42"],"key":"The for-in, for-of, and for-await-of Statements"},{"type":"clause","id":"sec-iteration-statements","aoid":null,"title":"Iteration Statements","titleHTML":"Iteration Statements","number":"13.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_761","_ref_823","_ref_824","_ref_825","_ref_826"],"key":"Iteration Statements"},{"type":"production","id":"prod-ContinueStatement","name":"ContinueStatement","referencingIds":["_ref_10944","_ref_10964","_ref_10972","_ref_10999","_ref_11006","_ref_11629","_ref_12050","_ref_13637"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ContinueStatement"},{"type":"clause","id":"sec-continue-statement-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.8.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-continue-statement-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.8.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-continue-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.8.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-continue-statement","aoid":null,"title":"The continue Statement","titleHTML":"The <code>continue</code> Statement","number":"13.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The continue Statement"},{"type":"production","id":"prod-BreakStatement","name":"BreakStatement","referencingIds":["_ref_10945","_ref_10965","_ref_10979","_ref_11000","_ref_11007","_ref_11016","_ref_12058","_ref_13638"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"BreakStatement"},{"type":"clause","id":"sec-break-statement-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-break-statement-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.9.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-break-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.9.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-break-statement","aoid":null,"title":"The break Statement","titleHTML":"The <code>break</code> Statement","number":"13.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The break Statement"},{"type":"production","id":"prod-ReturnStatement","name":"ReturnStatement","referencingIds":["_ref_8861","_ref_8863","_ref_8865","_ref_8867","_ref_8869","_ref_8871","_ref_8873","_ref_8875","_ref_8877","_ref_8879","_ref_8880","_ref_8882","_ref_8893","_ref_8896","_ref_8898","_ref_8900","_ref_10946","_ref_10966","_ref_10973","_ref_10980","_ref_11001","_ref_11008"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ReturnStatement"},{"type":"clause","id":"sec-return-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.10.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-return-statement","aoid":null,"title":"The return Statement","titleHTML":"The <code>return</code> Statement","number":"13.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The return Statement"},{"type":"production","id":"prod-WithStatement","name":"WithStatement","referencingIds":["_ref_9032","_ref_10947","_ref_15087","_ref_15254","_ref_15255","_ref_15289","_ref_15291","_ref_15292"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"WithStatement"},{"type":"clause","id":"sec-with-statement-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.11.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_796"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-with-statement-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.11.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-with-statement-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.11.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-with-statement-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.11.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-with-statement-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.11.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-with-statement-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.11.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-with-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.11.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_827"],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-with-statement","aoid":null,"title":"The with Statement","titleHTML":"The <code>with</code> Statement","number":"13.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_156"],"key":"The with Statement"},{"type":"production","id":"prod-SwitchStatement","name":"SwitchStatement","referencingIds":["_ref_10960","_ref_11013","_ref_11014","_ref_11023","_ref_12060","_ref_12293","_ref_15293","_ref_15295","_ref_15296"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SwitchStatement"},{"type":"production","id":"prod-CaseBlock","name":"CaseBlock","referencingIds":["_ref_11136","_ref_12097","_ref_12109","_ref_12110","_ref_12111","_ref_12112","_ref_12114","_ref_12115","_ref_12136","_ref_12137","_ref_12158","_ref_12159","_ref_12218","_ref_12219","_ref_12240","_ref_12241","_ref_12286","_ref_12289","_ref_12291","_ref_12292","_ref_13692","_ref_13693","_ref_15162","_ref_15163","_ref_15294"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CaseBlock"},{"type":"production","id":"prod-CaseClauses","name":"CaseClauses","referencingIds":["_ref_12098","_ref_12099","_ref_12101","_ref_12103","_ref_12116","_ref_12118","_ref_12119","_ref_12120","_ref_12122","_ref_12123","_ref_12124","_ref_12126","_ref_12138","_ref_12140","_ref_12141","_ref_12142","_ref_12144","_ref_12145","_ref_12146","_ref_12148","_ref_12160","_ref_12162","_ref_12163","_ref_12164","_ref_12166","_ref_12167","_ref_12168","_ref_12170","_ref_12179","_ref_12181","_ref_12182","_ref_12183","_ref_12185","_ref_12186","_ref_12187","_ref_12189","_ref_12198","_ref_12200","_ref_12201","_ref_12202","_ref_12204","_ref_12205","_ref_12206","_ref_12208","_ref_12220","_ref_12222","_ref_12223","_ref_12224","_ref_12226","_ref_12227","_ref_12228","_ref_12230","_ref_12242","_ref_12244","_ref_12245","_ref_12246","_ref_12248","_ref_12249","_ref_12250","_ref_12252","_ref_12261","_ref_12263","_ref_12265","_ref_12267","_ref_12268","_ref_12270","_ref_12272","_ref_12274","_ref_12279","_ref_13694","_ref_13696","_ref_13697","_ref_13698","_ref_13700","_ref_13701","_ref_13702","_ref_13704"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CaseClauses"},{"type":"production","id":"prod-CaseClause","name":"CaseClause","referencingIds":["_ref_12102","_ref_12104","_ref_12125","_ref_12127","_ref_12147","_ref_12149","_ref_12169","_ref_12171","_ref_12188","_ref_12190","_ref_12207","_ref_12209","_ref_12229","_ref_12231","_ref_12251","_ref_12253","_ref_12262","_ref_12264","_ref_12269","_ref_12271","_ref_12273","_ref_12275","_ref_12276","_ref_12278","_ref_12280","_ref_12281","_ref_13703","_ref_13705","_ref_15124","_ref_15137","_ref_15150"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CaseClause"},{"type":"production","id":"prod-DefaultClause","name":"DefaultClause","referencingIds":["_ref_12100","_ref_12117","_ref_12121","_ref_12139","_ref_12143","_ref_12161","_ref_12165","_ref_12180","_ref_12184","_ref_12199","_ref_12203","_ref_12221","_ref_12225","_ref_12243","_ref_12247","_ref_12266","_ref_12277","_ref_13695","_ref_13699","_ref_15125","_ref_15138","_ref_15151"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DefaultClause"},{"type":"clause","id":"sec-switch-statement-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.12.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-switch-statement-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.12.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-switch-statement-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.12.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-switch-statement-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.12.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-switch-statement-static-semantics-lexicallydeclarednames","aoid":null,"title":"Static Semantics: LexicallyDeclaredNames","titleHTML":"Static Semantics: LexicallyDeclaredNames","number":"13.12.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyDeclaredNames"},{"type":"clause","id":"sec-switch-statement-static-semantics-lexicallyscopeddeclarations","aoid":null,"title":"Static Semantics: LexicallyScopedDeclarations","titleHTML":"Static Semantics: LexicallyScopedDeclarations","number":"13.12.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyScopedDeclarations"},{"type":"clause","id":"sec-switch-statement-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.12.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-switch-statement-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.12.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-runtime-semantics-caseblockevaluation","aoid":null,"title":"Runtime Semantics: CaseBlockEvaluation","titleHTML":"Runtime Semantics: CaseBlockEvaluation","number":"13.12.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: CaseBlockEvaluation"},{"type":"op","aoid":"CaseClauseIsSelected","refId":"sec-runtime-semantics-caseclauseisselected","location":"","referencingIds":[],"key":"CaseClauseIsSelected"},{"type":"clause","id":"sec-runtime-semantics-caseclauseisselected","aoid":"CaseClauseIsSelected","title":"Runtime Semantics: CaseClauseIsSelected ( C, input )","titleHTML":"Runtime Semantics: CaseClauseIsSelected ( <var>C</var>, <var>input</var> )","number":"13.12.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3935","_ref_3941","_ref_3946"],"key":"Runtime Semantics: CaseClauseIsSelected ( C, input )"},{"type":"clause","id":"sec-switch-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.12.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_828"],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-switch-statement","aoid":null,"title":"The switch Statement","titleHTML":"The <code>switch</code> Statement","number":"13.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The switch Statement"},{"type":"production","id":"prod-LabelledStatement","name":"LabelledStatement","referencingIds":["_ref_10948","_ref_11057","_ref_11058","_ref_11067","_ref_11068","_ref_11099","_ref_11108","_ref_12306","_ref_12307","_ref_12324","_ref_12349","_ref_12359","_ref_12378","_ref_12386","_ref_15080","_ref_15083"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LabelledStatement"},{"type":"production","id":"prod-LabelledItem","name":"LabelledItem","referencingIds":["_ref_12301","_ref_12310","_ref_12312","_ref_12315","_ref_12317","_ref_12320","_ref_12322","_ref_12325","_ref_12329","_ref_12330","_ref_12335","_ref_12336","_ref_12341","_ref_12343","_ref_12345","_ref_12346","_ref_12355","_ref_12356","_ref_12365","_ref_12366","_ref_12369","_ref_12370","_ref_12373","_ref_12375","_ref_12385","_ref_13687","_ref_13688"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LabelledItem"},{"type":"clause","id":"sec-labelled-statements-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.13.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_749"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-labelled-statements-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.13.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-labelled-statements-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.13.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-labelled-statements-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.13.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"op","aoid":"IsLabelledFunction","refId":"sec-islabelledfunction","location":"","referencingIds":[],"key":"IsLabelledFunction"},{"type":"clause","id":"sec-islabelledfunction","aoid":"IsLabelledFunction","title":"Static Semantics: IsLabelledFunction ( stmt )","titleHTML":"Static Semantics: IsLabelledFunction ( <var>stmt</var> )","number":"13.13.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3765","_ref_3775","_ref_3906","_ref_3969"],"key":"Static Semantics: IsLabelledFunction ( stmt )"},{"type":"clause","id":"sec-labelled-statements-static-semantics-lexicallydeclarednames","aoid":null,"title":"Static Semantics: LexicallyDeclaredNames","titleHTML":"Static Semantics: LexicallyDeclaredNames","number":"13.13.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyDeclaredNames"},{"type":"clause","id":"sec-labelled-statements-static-semantics-lexicallyscopeddeclarations","aoid":null,"title":"Static Semantics: LexicallyScopedDeclarations","titleHTML":"Static Semantics: LexicallyScopedDeclarations","number":"13.13.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyScopedDeclarations"},{"type":"clause","id":"sec-labelled-statements-static-semantics-toplevellexicallydeclarednames","aoid":null,"title":"Static Semantics: TopLevelLexicallyDeclaredNames","titleHTML":"Static Semantics: TopLevelLexicallyDeclaredNames","number":"13.13.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: TopLevelLexicallyDeclaredNames"},{"type":"clause","id":"sec-labelled-statements-static-semantics-toplevellexicallyscopeddeclarations","aoid":null,"title":"Static Semantics: TopLevelLexicallyScopedDeclarations","titleHTML":"Static Semantics: TopLevelLexicallyScopedDeclarations","number":"13.13.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: TopLevelLexicallyScopedDeclarations"},{"type":"clause","id":"sec-labelled-statements-static-semantics-toplevelvardeclarednames","aoid":null,"title":"Static Semantics: TopLevelVarDeclaredNames","titleHTML":"Static Semantics: TopLevelVarDeclaredNames","number":"13.13.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: TopLevelVarDeclaredNames"},{"type":"clause","id":"sec-labelled-statements-static-semantics-toplevelvarscopeddeclarations","aoid":null,"title":"Static Semantics: TopLevelVarScopedDeclarations","titleHTML":"Static Semantics: TopLevelVarScopedDeclarations","number":"13.13.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: TopLevelVarScopedDeclarations"},{"type":"clause","id":"sec-labelled-statements-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.13.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-labelled-statements-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.13.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-labelled-statements-runtime-semantics-labelledevaluation","aoid":null,"title":"Runtime Semantics: LabelledEvaluation","titleHTML":"Runtime Semantics: LabelledEvaluation","number":"13.13.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: LabelledEvaluation"},{"type":"clause","id":"sec-labelled-statements-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.13.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-labelled-statements","aoid":null,"title":"Labelled Statements","titleHTML":"Labelled Statements","number":"13.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Labelled Statements"},{"type":"production","id":"prod-ThrowStatement","name":"ThrowStatement","referencingIds":["_ref_10949","_ref_10967","_ref_10974","_ref_10981","_ref_11002","_ref_11009","_ref_13639"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ThrowStatement"},{"type":"clause","id":"sec-throw-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.14.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-throw-statement","aoid":null,"title":"The throw Statement","titleHTML":"The <code>throw</code> Statement","number":"13.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The throw Statement"},{"type":"production","id":"prod-TryStatement","name":"TryStatement","referencingIds":["_ref_9024","_ref_10950","_ref_15305","_ref_15307","_ref_15308","_ref_15310","_ref_15312"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TryStatement"},{"type":"production","id":"prod-Catch","name":"Catch","referencingIds":["_ref_9023","_ref_9031","_ref_12392","_ref_12396","_ref_12413","_ref_12415","_ref_12421","_ref_12424","_ref_12430","_ref_12432","_ref_12438","_ref_12441","_ref_12447","_ref_12449","_ref_12455","_ref_12458","_ref_12464","_ref_12466","_ref_12472","_ref_12475","_ref_12481","_ref_12483","_ref_12489","_ref_12492","_ref_12506","_ref_12508","_ref_12514","_ref_12517","_ref_13712","_ref_13713","_ref_13717","_ref_15297","_ref_15299","_ref_15301","_ref_15302","_ref_15304","_ref_15311"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Catch"},{"type":"production","id":"prod-Finally","name":"Finally","referencingIds":["_ref_12394","_ref_12397","_ref_12417","_ref_12419","_ref_12422","_ref_12425","_ref_12434","_ref_12436","_ref_12439","_ref_12442","_ref_12451","_ref_12453","_ref_12456","_ref_12459","_ref_12468","_ref_12470","_ref_12473","_ref_12476","_ref_12485","_ref_12487","_ref_12490","_ref_12493","_ref_12510","_ref_12512","_ref_12515","_ref_12518","_ref_13715","_ref_13718","_ref_13719","_ref_15313","_ref_15314"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Finally"},{"type":"production","id":"prod-CatchParameter","name":"CatchParameter","referencingIds":["_ref_12398","_ref_12404","_ref_12405","_ref_12407","_ref_12408","_ref_12410","_ref_12426","_ref_12443","_ref_12460","_ref_12477","_ref_12494","_ref_12497","_ref_12499","_ref_12500","_ref_13720","_ref_15256","_ref_15257"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CatchParameter"},{"type":"clause","id":"sec-try-statement-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"13.15.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_759","_ref_797"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-try-statement-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"13.15.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-try-statement-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"13.15.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-try-statement-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"13.15.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-try-statement-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"13.15.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-try-statement-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"13.15.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-runtime-semantics-catchclauseevaluation","aoid":null,"title":"Runtime Semantics: CatchClauseEvaluation","titleHTML":"Runtime Semantics: CatchClauseEvaluation","number":"13.15.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: CatchClauseEvaluation"},{"type":"clause","id":"sec-try-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.15.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_832"],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-try-statement","aoid":null,"title":"The try Statement","titleHTML":"The <code>try</code> Statement","number":"13.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_829","_ref_830"],"key":"The try Statement"},{"type":"production","id":"prod-DebuggerStatement","name":"DebuggerStatement","referencingIds":["_ref_10951","_ref_10968","_ref_10975","_ref_10982","_ref_11003","_ref_11010","_ref_12519","_ref_13640"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DebuggerStatement"},{"type":"clause","id":"sec-debugger-statement-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.16.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-debugger-statement","aoid":null,"title":"The debugger Statement","titleHTML":"The <code>debugger</code> Statement","number":"13.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The debugger Statement"},{"type":"clause","id":"sec-ecmascript-language-statements-and-declarations","aoid":null,"title":"ECMAScript Language: Statements and Declarations","titleHTML":"ECMAScript Language: Statements and Declarations","number":"13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ECMAScript Language: Statements and Declarations"},{"type":"production","id":"prod-FunctionDeclaration","name":"FunctionDeclaration","referencingIds":["_ref_9021","_ref_9025","_ref_9026","_ref_9029","_ref_9041","_ref_9046","_ref_9051","_ref_9056","_ref_9061","_ref_9067","_ref_9074","_ref_9088","_ref_9099","_ref_9114","_ref_9128","_ref_9144","_ref_10955","_ref_10985","_ref_10986","_ref_11020","_ref_11021","_ref_11137","_ref_11463","_ref_12303","_ref_12308","_ref_12313","_ref_12318","_ref_12323","_ref_12326","_ref_12332","_ref_12333","_ref_12338","_ref_12339","_ref_12352","_ref_12353","_ref_12362","_ref_12363","_ref_12367","_ref_12371","_ref_12382","_ref_12383","_ref_12696","_ref_12700","_ref_12705","_ref_12706","_ref_12733","_ref_12737","_ref_13641","_ref_13870","_ref_14010","_ref_14309","_ref_15081","_ref_15082","_ref_15084","_ref_15086","_ref_15090","_ref_15091","_ref_15094","_ref_15096","_ref_15104","_ref_15111","_ref_15120","_ref_15121","_ref_15127","_ref_15128","_ref_15131","_ref_15132","_ref_15133","_ref_15134","_ref_15140","_ref_15141","_ref_15144","_ref_15145","_ref_15146","_ref_15147","_ref_15153","_ref_15154","_ref_15157","_ref_15158","_ref_15164","_ref_15167","_ref_15171","_ref_15173","_ref_15174","_ref_15176","_ref_15177"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"FunctionDeclaration"},{"type":"production","id":"prod-FunctionExpression","name":"FunctionExpression","referencingIds":["_ref_9100","_ref_9115","_ref_9129","_ref_9145","_ref_9818","_ref_9854","_ref_9865","_ref_10038","_ref_12709","_ref_12717","_ref_12720","_ref_12724","_ref_12728","_ref_12730","_ref_12731","_ref_12735","_ref_12736","_ref_12738","_ref_13387","_ref_13802","_ref_15265"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"FunctionExpression"},{"type":"production","id":"prod-UniqueFormalParameters","name":"UniqueFormalParameters","referencingIds":["_ref_12748","_ref_12819","_ref_12831","_ref_12834","_ref_12835","_ref_12846","_ref_12857","_ref_12859","_ref_12875","_ref_12884","_ref_12895","_ref_12899","_ref_12903","_ref_12921","_ref_12941","_ref_12944","_ref_12947","_ref_12948","_ref_12982","_ref_12994","_ref_12996","_ref_13014","_ref_13034","_ref_13038","_ref_13072","_ref_13091","_ref_13094","_ref_13096","_ref_13099","_ref_13100","_ref_13137","_ref_13149","_ref_13151","_ref_13169","_ref_13190","_ref_13194","_ref_13366","_ref_13393","_ref_13396","_ref_13398","_ref_13400","_ref_13436","_ref_13450","_ref_13452","_ref_13472","_ref_13492","_ref_13496"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UniqueFormalParameters"},{"type":"production","id":"prod-FormalParameters","name":"FormalParameters","referencingIds":["_ref_12521","_ref_12523","_ref_12526","_ref_12528","_ref_12557","_ref_12559","_ref_12562","_ref_12564","_ref_12568","_ref_12569","_ref_12571","_ref_12575","_ref_12580","_ref_12581","_ref_12595","_ref_12598","_ref_12609","_ref_12611","_ref_12614","_ref_12630","_ref_12642","_ref_12645","_ref_12650","_ref_12652","_ref_12655","_ref_12694","_ref_12698","_ref_12701","_ref_12703","_ref_12707","_ref_12711","_ref_12713","_ref_12715","_ref_12718","_ref_12722","_ref_12726","_ref_12924","_ref_12926","_ref_12929","_ref_12938","_ref_12939","_ref_12951","_ref_12953","_ref_12956","_ref_12958","_ref_12962","_ref_12963","_ref_12965","_ref_12967","_ref_12971","_ref_12976","_ref_12979","_ref_12986","_ref_12988","_ref_12991","_ref_13000","_ref_13003","_ref_13006","_ref_13008","_ref_13011","_ref_13020","_ref_13024","_ref_13027","_ref_13029","_ref_13041","_ref_13044","_ref_13047","_ref_13051","_ref_13055","_ref_13076","_ref_13079","_ref_13083","_ref_13088","_ref_13089","_ref_13103","_ref_13105","_ref_13108","_ref_13110","_ref_13115","_ref_13116","_ref_13118","_ref_13120","_ref_13122","_ref_13126","_ref_13131","_ref_13134","_ref_13141","_ref_13143","_ref_13146","_ref_13155","_ref_13158","_ref_13161","_ref_13163","_ref_13166","_ref_13175","_ref_13179","_ref_13182","_ref_13185","_ref_13197","_ref_13200","_ref_13203","_ref_13207","_ref_13211","_ref_13352","_ref_13355","_ref_13358","_ref_13362","_ref_13372","_ref_13381","_ref_13403","_ref_13405","_ref_13407","_ref_13410","_ref_13413","_ref_13414","_ref_13416","_ref_13419","_ref_13421","_ref_13425","_ref_13430","_ref_13433","_ref_13440","_ref_13442","_ref_13444","_ref_13447","_ref_13456","_ref_13459","_ref_13462","_ref_13464","_ref_13466","_ref_13469","_ref_13476","_ref_13480","_ref_13483","_ref_13486","_ref_13499","_ref_13503","_ref_13505","_ref_13507","_ref_13510","_ref_13514","_ref_13518","_ref_14336","_ref_14338","_ref_14340","_ref_14342","_ref_14343","_ref_14354","_ref_15259"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"FormalParameters"},{"type":"production","id":"prod-FormalParameterList","name":"FormalParameterList","referencingIds":["_ref_12530","_ref_12531","_ref_12532","_ref_12535","_ref_12582","_ref_12583","_ref_12584","_ref_12586","_ref_12600","_ref_12602","_ref_12604","_ref_12606","_ref_12616","_ref_12618","_ref_12620","_ref_12622","_ref_12626","_ref_12628","_ref_12629","_ref_12633","_ref_12635","_ref_12636","_ref_12638","_ref_12640","_ref_12657","_ref_12659","_ref_12661","_ref_12675","_ref_12677","_ref_12679","_ref_12681"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"FormalParameterList"},{"type":"production","id":"prod-FunctionRestParameter","name":"FunctionRestParameter","referencingIds":["_ref_12529","_ref_12533","_ref_12601","_ref_12603","_ref_12617","_ref_12619","_ref_12627","_ref_12658","_ref_12676","_ref_12678"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"FunctionRestParameter"},{"type":"production","id":"prod-FormalParameter","name":"FormalParameter","referencingIds":["_ref_12534","_ref_12536","_ref_12605","_ref_12607","_ref_12621","_ref_12623","_ref_12631","_ref_12632","_ref_12634","_ref_12637","_ref_12639","_ref_12641","_ref_12660","_ref_12662","_ref_12680","_ref_12682","_ref_12829","_ref_12854","_ref_12855"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"FormalParameter"},{"type":"production","id":"prod-FunctionBody","name":"FunctionBody","referencingIds":["_ref_9155","_ref_12522","_ref_12524","_ref_12527","_ref_12544","_ref_12558","_ref_12560","_ref_12563","_ref_12567","_ref_12570","_ref_12573","_ref_12577","_ref_12579","_ref_12596","_ref_12599","_ref_12610","_ref_12612","_ref_12615","_ref_12643","_ref_12646","_ref_12651","_ref_12653","_ref_12656","_ref_12695","_ref_12699","_ref_12702","_ref_12704","_ref_12708","_ref_12712","_ref_12714","_ref_12716","_ref_12719","_ref_12723","_ref_12727","_ref_12732","_ref_12745","_ref_12820","_ref_12825","_ref_12828","_ref_12832","_ref_12833","_ref_12836","_ref_12839","_ref_12841","_ref_12844","_ref_12847","_ref_12849","_ref_12852","_ref_12858","_ref_12861","_ref_12864","_ref_12865","_ref_12869","_ref_12872","_ref_12876","_ref_12878","_ref_12881","_ref_12885","_ref_12890","_ref_12893","_ref_12896","_ref_12900","_ref_12904","_ref_12907","_ref_12910","_ref_12914","_ref_12918","_ref_12931","_ref_13017","_ref_13018","_ref_13061","_ref_13085","_ref_13172","_ref_13173","_ref_13368","_ref_13489","_ref_13490","_ref_13614","_ref_13617","_ref_13620","_ref_13622","_ref_13624","_ref_14335"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"FunctionBody"},{"type":"production","id":"prod-FunctionStatementList","name":"FunctionStatementList","referencingIds":["_ref_12539","_ref_12587","_ref_12588","_ref_12589","_ref_12590","_ref_12591","_ref_12592","_ref_12593","_ref_12624","_ref_12625","_ref_12673","_ref_12674"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"FunctionStatementList"},{"type":"term","term":"Directive Prologue","refId":"sec-directive-prologues-and-the-use-strict-directive","referencingIds":["_ref_3103","_ref_3105","_ref_3108","_ref_3110","_ref_4002","_ref_4003","_ref_4005","_ref_4007","_ref_4009","_ref_4010","_ref_4016","_ref_4385"],"id":"directive-prologue","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Directive Prologue"},{"type":"term","term":"Use Strict Directive","refId":"sec-directive-prologues-and-the-use-strict-directive","referencingIds":["_ref_3104","_ref_3106","_ref_3109","_ref_3111","_ref_4004","_ref_4006","_ref_4008","_ref_4011","_ref_4017","_ref_4386"],"id":"use-strict-directive","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Use Strict Directive"},{"type":"clause","id":"sec-directive-prologues-and-the-use-strict-directive","aoid":null,"title":"Directive Prologues and the Use Strict Directive","titleHTML":"Directive Prologues and the Use Strict Directive","number":"14.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Directive Prologues and the Use Strict Directive"},{"type":"clause","id":"sec-function-definitions-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"14.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_798"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-function-definitions-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"14.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-function-definitions-static-semantics-contains","aoid":null,"title":"Static Semantics: Contains","titleHTML":"Static Semantics: Contains","number":"14.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Contains"},{"type":"clause","id":"sec-function-definitions-static-semantics-containsexpression","aoid":null,"title":"Static Semantics: ContainsExpression","titleHTML":"Static Semantics: ContainsExpression","number":"14.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsExpression"},{"type":"clause","id":"sec-function-definitions-static-semantics-containsusestrict","aoid":null,"title":"Static Semantics: ContainsUseStrict","titleHTML":"Static Semantics: ContainsUseStrict","number":"14.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUseStrict"},{"type":"clause","id":"sec-function-definitions-static-semantics-expectedargumentcount","aoid":null,"title":"Static Semantics: ExpectedArgumentCount","titleHTML":"Static Semantics: ExpectedArgumentCount","number":"14.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExpectedArgumentCount"},{"type":"clause","id":"sec-function-definitions-static-semantics-hasinitializer","aoid":null,"title":"Static Semantics: HasInitializer","titleHTML":"Static Semantics: HasInitializer","number":"14.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasInitializer"},{"type":"clause","id":"sec-function-definitions-static-semantics-hasname","aoid":null,"title":"Static Semantics: HasName","titleHTML":"Static Semantics: HasName","number":"14.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasName"},{"type":"op","aoid":"IsAnonymousFunctionDefinition","refId":"sec-isanonymousfunctiondefinition","location":"","referencingIds":[],"key":"IsAnonymousFunctionDefinition"},{"type":"clause","id":"sec-isanonymousfunctiondefinition","aoid":"IsAnonymousFunctionDefinition","title":"Static Semantics: IsAnonymousFunctionDefinition ( expr )","titleHTML":"Static Semantics: IsAnonymousFunctionDefinition ( <var>expr</var> )","number":"14.1.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3213","_ref_3268","_ref_3525","_ref_3569","_ref_3595","_ref_3615","_ref_3674","_ref_3687","_ref_3720","_ref_3759","_ref_4744","_ref_8727","_ref_8782"],"key":"Static Semantics: IsAnonymousFunctionDefinition ( expr )"},{"type":"clause","id":"sec-function-definitions-static-semantics-isconstantdeclaration","aoid":null,"title":"Static Semantics: IsConstantDeclaration","titleHTML":"Static Semantics: IsConstantDeclaration","number":"14.1.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsConstantDeclaration"},{"type":"clause","id":"sec-function-definitions-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"14.1.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-function-definitions-static-semantics-issimpleparameterlist","aoid":null,"title":"Static Semantics: IsSimpleParameterList","titleHTML":"Static Semantics: IsSimpleParameterList","number":"14.1.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsSimpleParameterList"},{"type":"clause","id":"sec-function-definitions-static-semantics-lexicallydeclarednames","aoid":null,"title":"Static Semantics: LexicallyDeclaredNames","titleHTML":"Static Semantics: LexicallyDeclaredNames","number":"14.1.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyDeclaredNames"},{"type":"clause","id":"sec-function-definitions-static-semantics-lexicallyscopeddeclarations","aoid":null,"title":"Static Semantics: LexicallyScopedDeclarations","titleHTML":"Static Semantics: LexicallyScopedDeclarations","number":"14.1.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyScopedDeclarations"},{"type":"clause","id":"sec-function-definitions-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"14.1.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-function-definitions-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"14.1.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-function-definitions-runtime-semantics-evaluatebody","aoid":null,"title":"Runtime Semantics: EvaluateBody","titleHTML":"Runtime Semantics: EvaluateBody","number":"14.1.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: EvaluateBody"},{"type":"clause","id":"sec-function-definitions-runtime-semantics-iteratorbindinginitialization","aoid":null,"title":"Runtime Semantics: IteratorBindingInitialization","titleHTML":"Runtime Semantics: IteratorBindingInitialization","number":"14.1.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_197"],"key":"Runtime Semantics: IteratorBindingInitialization"},{"type":"clause","id":"sec-function-definitions-runtime-semantics-instantiatefunctionobject","aoid":null,"title":"Runtime Semantics: InstantiateFunctionObject","titleHTML":"Runtime Semantics: InstantiateFunctionObject","number":"14.1.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: InstantiateFunctionObject"},{"type":"clause","id":"sec-function-definitions-runtime-semantics-namedevaluation","aoid":null,"title":"Runtime Semantics: NamedEvaluation","titleHTML":"Runtime Semantics: NamedEvaluation","number":"14.1.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: NamedEvaluation"},{"type":"clause","id":"sec-function-definitions-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"14.1.22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_754","_ref_755","_ref_756"],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-function-definitions","aoid":null,"title":"Function Definitions","titleHTML":"Function Definitions","number":"14.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_255","_ref_310"],"key":"Function Definitions"},{"type":"production","id":"prod-ArrowFunction","name":"ArrowFunction","referencingIds":["_ref_9035","_ref_9036","_ref_9037","_ref_9038","_ref_9108","_ref_9123","_ref_9137","_ref_9153","_ref_10714","_ref_10741","_ref_10750","_ref_12773","_ref_12805","_ref_12808","_ref_12811","_ref_12812","_ref_12813","_ref_12814","_ref_12815","_ref_12816","_ref_12817","_ref_13724","_ref_14272","_ref_14358"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ArrowFunction"},{"type":"production","id":"prod-ArrowParameters","name":"ArrowParameters","referencingIds":["_ref_9760","_ref_12739","_ref_12749","_ref_12751","_ref_12753","_ref_12756","_ref_12757","_ref_12766","_ref_12771","_ref_12779","_ref_12785","_ref_12803","_ref_12806","_ref_12809"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ArrowParameters"},{"type":"production","id":"prod-ConciseBody","name":"ConciseBody","referencingIds":["_ref_9762","_ref_12741","_ref_12750","_ref_12755","_ref_12758","_ref_12767","_ref_12772","_ref_12780","_ref_12804","_ref_12807","_ref_12810","_ref_13615","_ref_13618"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ConciseBody"},{"type":"production","id":"prod-ArrowFormalParameters","name":"ArrowFormalParameters","referencingIds":["_ref_12761","_ref_12762","_ref_12793","_ref_13539","_ref_13612"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ArrowFormalParameters"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"14.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"14.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-contains","aoid":null,"title":"Static Semantics: Contains","titleHTML":"Static Semantics: Contains","number":"14.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Contains"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-containsexpression","aoid":null,"title":"Static Semantics: ContainsExpression","titleHTML":"Static Semantics: ContainsExpression","number":"14.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsExpression"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-containsusestrict","aoid":null,"title":"Static Semantics: ContainsUseStrict","titleHTML":"Static Semantics: ContainsUseStrict","number":"14.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUseStrict"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-expectedargumentcount","aoid":null,"title":"Static Semantics: ExpectedArgumentCount","titleHTML":"Static Semantics: ExpectedArgumentCount","number":"14.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExpectedArgumentCount"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-hasname","aoid":null,"title":"Static Semantics: HasName","titleHTML":"Static Semantics: HasName","number":"14.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasName"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-issimpleparameterlist","aoid":null,"title":"Static Semantics: IsSimpleParameterList","titleHTML":"Static Semantics: IsSimpleParameterList","number":"14.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsSimpleParameterList"},{"type":"clause","id":"sec-static-semantics-coveredformalslist","aoid":null,"title":"Static Semantics: CoveredFormalsList","titleHTML":"Static Semantics: CoveredFormalsList","number":"14.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: CoveredFormalsList"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-lexicallydeclarednames","aoid":null,"title":"Static Semantics: LexicallyDeclaredNames","titleHTML":"Static Semantics: LexicallyDeclaredNames","number":"14.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyDeclaredNames"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-lexicallyscopeddeclarations","aoid":null,"title":"Static Semantics: LexicallyScopedDeclarations","titleHTML":"Static Semantics: LexicallyScopedDeclarations","number":"14.2.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyScopedDeclarations"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"14.2.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-arrow-function-definitions-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"14.2.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-arrow-function-definitions-runtime-semantics-iteratorbindinginitialization","aoid":null,"title":"Runtime Semantics: IteratorBindingInitialization","titleHTML":"Runtime Semantics: IteratorBindingInitialization","number":"14.2.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: IteratorBindingInitialization"},{"type":"clause","id":"sec-arrow-function-definitions-runtime-semantics-evaluatebody","aoid":null,"title":"Runtime Semantics: EvaluateBody","titleHTML":"Runtime Semantics: EvaluateBody","number":"14.2.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: EvaluateBody"},{"type":"clause","id":"sec-arrow-function-definitions-runtime-semantics-namedevaluation","aoid":null,"title":"Runtime Semantics: NamedEvaluation","titleHTML":"Runtime Semantics: NamedEvaluation","number":"14.2.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: NamedEvaluation"},{"type":"clause","id":"sec-arrow-function-definitions-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"14.2.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-arrow-function-definitions","aoid":null,"title":"Arrow Function Definitions","titleHTML":"Arrow Function Definitions","number":"14.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_256"],"key":"Arrow Function Definitions"},{"type":"production","id":"prod-MethodDefinition","name":"MethodDefinition","referencingIds":["_ref_9107","_ref_9122","_ref_9136","_ref_9152","_ref_9952","_ref_9963","_ref_9967","_ref_9968","_ref_9982","_ref_9983","_ref_9984","_ref_12898","_ref_12901","_ref_12905","_ref_12909","_ref_12911","_ref_12916","_ref_12919","_ref_13234","_ref_13235","_ref_13242","_ref_13243","_ref_13244","_ref_13245","_ref_13246","_ref_13247","_ref_13248","_ref_13249","_ref_13278","_ref_13279","_ref_13280","_ref_13281","_ref_13290","_ref_13291","_ref_13321","_ref_13322","_ref_14273","_ref_14297","_ref_14355"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MethodDefinition"},{"type":"production","id":"prod-PropertySetParameterList","name":"PropertySetParameterList","referencingIds":["_ref_12827","_ref_12838","_ref_12840","_ref_12842","_ref_12843","_ref_12851","_ref_12868","_ref_12870","_ref_12880","_ref_12892","_ref_12913","_ref_12917"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"PropertySetParameterList"},{"type":"clause","id":"sec-method-definitions-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"14.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-method-definitions-static-semantics-computedpropertycontains","aoid":null,"title":"Static Semantics: ComputedPropertyContains","titleHTML":"Static Semantics: ComputedPropertyContains","number":"14.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ComputedPropertyContains"},{"type":"clause","id":"sec-method-definitions-static-semantics-expectedargumentcount","aoid":null,"title":"Static Semantics: ExpectedArgumentCount","titleHTML":"Static Semantics: ExpectedArgumentCount","number":"14.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExpectedArgumentCount"},{"type":"clause","id":"sec-method-definitions-static-semantics-hasdirectsuper","aoid":null,"title":"Static Semantics: HasDirectSuper","titleHTML":"Static Semantics: HasDirectSuper","number":"14.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasDirectSuper"},{"type":"clause","id":"sec-method-definitions-static-semantics-propname","aoid":null,"title":"Static Semantics: PropName","titleHTML":"Static Semantics: PropName","number":"14.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: PropName"},{"type":"clause","id":"sec-static-semantics-specialmethod","aoid":null,"title":"Static Semantics: SpecialMethod","titleHTML":"Static Semantics: SpecialMethod","number":"14.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: SpecialMethod"},{"type":"clause","id":"sec-runtime-semantics-definemethod","aoid":null,"title":"Runtime Semantics: DefineMethod","titleHTML":"Runtime Semantics: DefineMethod","number":"14.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: DefineMethod"},{"type":"clause","id":"sec-method-definitions-runtime-semantics-propertydefinitionevaluation","aoid":null,"title":"Runtime Semantics: PropertyDefinitionEvaluation","titleHTML":"Runtime Semantics: PropertyDefinitionEvaluation","number":"14.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_833"],"key":"Runtime Semantics: PropertyDefinitionEvaluation"},{"type":"clause","id":"sec-method-definitions","aoid":null,"title":"Method Definitions","titleHTML":"Method Definitions","number":"14.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_257","_ref_308"],"key":"Method Definitions"},{"type":"production","id":"prod-GeneratorMethod","name":"GeneratorMethod","referencingIds":["_ref_12821","_ref_12886","_ref_12943","_ref_13037","_ref_13040","_ref_14356","_ref_14808"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"GeneratorMethod"},{"type":"production","id":"prod-GeneratorDeclaration","name":"GeneratorDeclaration","referencingIds":["_ref_9042","_ref_9047","_ref_9052","_ref_9057","_ref_9062","_ref_9068","_ref_9089","_ref_9101","_ref_9116","_ref_9130","_ref_9146","_ref_10956","_ref_10987","_ref_10988","_ref_11017","_ref_11138","_ref_11464","_ref_13022","_ref_13026","_ref_13031","_ref_13032","_ref_13062","_ref_13871","_ref_14011","_ref_14274","_ref_14310","_ref_14806"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"GeneratorDeclaration"},{"type":"production","id":"prod-GeneratorExpression","name":"GeneratorExpression","referencingIds":["_ref_9102","_ref_9117","_ref_9131","_ref_9147","_ref_9820","_ref_9856","_ref_9867","_ref_10039","_ref_13043","_ref_13046","_ref_13049","_ref_13053","_ref_13057","_ref_13059","_ref_13060","_ref_13064","_ref_13065","_ref_13388","_ref_13804","_ref_14275","_ref_14807"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"GeneratorExpression"},{"type":"production","id":"prod-GeneratorBody","name":"GeneratorBody","referencingIds":["_ref_12922","_ref_12925","_ref_12927","_ref_12930","_ref_12942","_ref_12946","_ref_12949","_ref_12952","_ref_12954","_ref_12957","_ref_12961","_ref_12964","_ref_12969","_ref_12973","_ref_12977","_ref_12980","_ref_12983","_ref_12987","_ref_12989","_ref_12992","_ref_12995","_ref_12998","_ref_13001","_ref_13004","_ref_13007","_ref_13009","_ref_13012","_ref_13015","_ref_13021","_ref_13025","_ref_13028","_ref_13030","_ref_13035","_ref_13039","_ref_13042","_ref_13045","_ref_13048","_ref_13052","_ref_13056","_ref_13621","_ref_14337"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"GeneratorBody"},{"type":"production","id":"prod-YieldExpression","name":"YieldExpression","referencingIds":["_ref_10713","_ref_10743","_ref_10749","_ref_12752","_ref_12937","_ref_12945","_ref_12966","_ref_13086","_ref_13095","_ref_13119","_ref_13390","_ref_13547","_ref_13723","_ref_14348","_ref_14812","_ref_14813"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"YieldExpression"},{"type":"clause","id":"sec-generator-function-definitions-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"14.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-generator-function-definitions-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"14.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-generator-function-definitions-static-semantics-computedpropertycontains","aoid":null,"title":"Static Semantics: ComputedPropertyContains","titleHTML":"Static Semantics: ComputedPropertyContains","number":"14.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ComputedPropertyContains"},{"type":"clause","id":"sec-generator-function-definitions-static-semantics-contains","aoid":null,"title":"Static Semantics: Contains","titleHTML":"Static Semantics: Contains","number":"14.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Contains"},{"type":"clause","id":"sec-generator-function-definitions-static-semantics-hasdirectsuper","aoid":null,"title":"Static Semantics: HasDirectSuper","titleHTML":"Static Semantics: HasDirectSuper","number":"14.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasDirectSuper"},{"type":"clause","id":"sec-generator-function-definitions-static-semantics-hasname","aoid":null,"title":"Static Semantics: HasName","titleHTML":"Static Semantics: HasName","number":"14.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasName"},{"type":"clause","id":"sec-generator-function-definitions-static-semantics-isconstantdeclaration","aoid":null,"title":"Static Semantics: IsConstantDeclaration","titleHTML":"Static Semantics: IsConstantDeclaration","number":"14.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsConstantDeclaration"},{"type":"clause","id":"sec-generator-function-definitions-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"14.4.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-generator-function-definitions-static-semantics-propname","aoid":null,"title":"Static Semantics: PropName","titleHTML":"Static Semantics: PropName","number":"14.4.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: PropName"},{"type":"clause","id":"sec-generator-function-definitions-runtime-semantics-evaluatebody","aoid":null,"title":"Runtime Semantics: EvaluateBody","titleHTML":"Runtime Semantics: EvaluateBody","number":"14.4.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: EvaluateBody"},{"type":"clause","id":"sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject","aoid":null,"title":"Runtime Semantics: InstantiateFunctionObject","titleHTML":"Runtime Semantics: InstantiateFunctionObject","number":"14.4.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: InstantiateFunctionObject"},{"type":"clause","id":"sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation","aoid":null,"title":"Runtime Semantics: PropertyDefinitionEvaluation","titleHTML":"Runtime Semantics: PropertyDefinitionEvaluation","number":"14.4.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: PropertyDefinitionEvaluation"},{"type":"clause","id":"sec-generator-function-definitions-runtime-semantics-namedevaluation","aoid":null,"title":"Runtime Semantics: NamedEvaluation","titleHTML":"Runtime Semantics: NamedEvaluation","number":"14.4.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: NamedEvaluation"},{"type":"clause","id":"sec-generator-function-definitions-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"14.4.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-generator-function-definitions","aoid":null,"title":"Generator Function Definitions","titleHTML":"Generator Function Definitions","number":"14.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_258","_ref_311"],"key":"Generator Function Definitions"},{"type":"production","id":"prod-AsyncGeneratorMethod","name":"AsyncGeneratorMethod","referencingIds":["_ref_12823","_ref_12888","_ref_13093","_ref_13193","_ref_13196","_ref_14357","_ref_14811"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncGeneratorMethod"},{"type":"production","id":"prod-AsyncGeneratorDeclaration","name":"AsyncGeneratorDeclaration","referencingIds":["_ref_9044","_ref_9049","_ref_9054","_ref_9059","_ref_9064","_ref_9070","_ref_9091","_ref_9105","_ref_9120","_ref_9134","_ref_9150","_ref_10958","_ref_10991","_ref_10992","_ref_11019","_ref_11140","_ref_11468","_ref_13177","_ref_13181","_ref_13184","_ref_13187","_ref_13188","_ref_13218","_ref_13375","_ref_13384","_ref_13873","_ref_14013","_ref_14276","_ref_14312","_ref_14809"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncGeneratorDeclaration"},{"type":"production","id":"prod-AsyncGeneratorExpression","name":"AsyncGeneratorExpression","referencingIds":["_ref_9106","_ref_9121","_ref_9135","_ref_9151","_ref_9822","_ref_9858","_ref_9869","_ref_10042","_ref_13199","_ref_13202","_ref_13205","_ref_13209","_ref_13213","_ref_13215","_ref_13216","_ref_13220","_ref_13221","_ref_13376","_ref_13385","_ref_13389","_ref_13806","_ref_14277","_ref_14810"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncGeneratorExpression"},{"type":"production","id":"prod-AsyncGeneratorBody","name":"AsyncGeneratorBody","referencingIds":["_ref_13073","_ref_13077","_ref_13080","_ref_13084","_ref_13092","_ref_13098","_ref_13101","_ref_13104","_ref_13106","_ref_13109","_ref_13114","_ref_13117","_ref_13124","_ref_13128","_ref_13132","_ref_13135","_ref_13138","_ref_13142","_ref_13144","_ref_13147","_ref_13150","_ref_13153","_ref_13156","_ref_13159","_ref_13162","_ref_13164","_ref_13167","_ref_13170","_ref_13176","_ref_13180","_ref_13183","_ref_13186","_ref_13191","_ref_13195","_ref_13198","_ref_13201","_ref_13204","_ref_13208","_ref_13212","_ref_13217","_ref_13625","_ref_14341"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncGeneratorBody"},{"type":"clause","id":"sec-async-generator-function-definitions-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"14.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-async-generator-function-definitions-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"14.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-async-generator-function-definitions-static-semantics-computedpropertycontains","aoid":null,"title":"Static Semantics: ComputedPropertyContains","titleHTML":"Static Semantics: ComputedPropertyContains","number":"14.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ComputedPropertyContains"},{"type":"clause","id":"sec-async-generator-function-definitions-static-semantics-contains","aoid":null,"title":"Static Semantics: Contains","titleHTML":"Static Semantics: Contains","number":"14.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Contains"},{"type":"clause","id":"sec-async-generator-function-definitions-static-semantics-hasdirectsuper","aoid":null,"title":"Static Semantics: HasDirectSuper","titleHTML":"Static Semantics: HasDirectSuper","number":"14.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasDirectSuper"},{"type":"clause","id":"sec-async-generator-function-definitions-static-semantics-hasname","aoid":null,"title":"Static Semantics: HasName","titleHTML":"Static Semantics: HasName","number":"14.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasName"},{"type":"clause","id":"sec-async-generator-function-definitions-static-semantics-isconstantdeclaration","aoid":null,"title":"Static Semantics: IsConstantDeclaration","titleHTML":"Static Semantics: IsConstantDeclaration","number":"14.5.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsConstantDeclaration"},{"type":"clause","id":"sec-async-generator-function-definitions-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"14.5.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-async-generator-function-definitions-static-semantics-propname","aoid":null,"title":"Static Semantics: PropName","titleHTML":"Static Semantics: PropName","number":"14.5.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: PropName"},{"type":"clause","id":"sec-asyncgenerator-definitions-evaluatebody","aoid":null,"title":"Runtime Semantics: EvaluateBody","titleHTML":"Runtime Semantics: EvaluateBody","number":"14.5.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: EvaluateBody"},{"type":"clause","id":"sec-asyncgenerator-definitions-instantiatefunctionobject","aoid":null,"title":"Runtime Semantics: InstantiateFunctionObject","titleHTML":"Runtime Semantics: InstantiateFunctionObject","number":"14.5.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: InstantiateFunctionObject"},{"type":"clause","id":"sec-asyncgenerator-definitions-propertydefinitionevaluation","aoid":null,"title":"Runtime Semantics: PropertyDefinitionEvaluation","titleHTML":"Runtime Semantics: PropertyDefinitionEvaluation","number":"14.5.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: PropertyDefinitionEvaluation"},{"type":"clause","id":"sec-asyncgenerator-definitions-namedevaluation","aoid":null,"title":"Runtime Semantics: NamedEvaluation","titleHTML":"Runtime Semantics: NamedEvaluation","number":"14.5.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: NamedEvaluation"},{"type":"clause","id":"sec-asyncgenerator-definitions-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"14.5.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-async-generator-function-definitions","aoid":null,"title":"Async Generator Function Definitions","titleHTML":"Async Generator Function Definitions","number":"14.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_260","_ref_314"],"key":"Async Generator Function Definitions"},{"type":"production","id":"prod-ClassDeclaration","name":"ClassDeclaration","referencingIds":["_ref_9072","_ref_9076","_ref_9110","_ref_9125","_ref_9139","_ref_9142","_ref_10953","_ref_10993","_ref_10994","_ref_11465","_ref_13331","_ref_13334","_ref_13341","_ref_14109","_ref_14136","_ref_14137","_ref_14149","_ref_14171","_ref_14196","_ref_14197","_ref_14224","_ref_14225","_ref_14236","_ref_14257","_ref_14258","_ref_14259","_ref_14278","_ref_14301"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassDeclaration"},{"type":"production","id":"prod-ClassExpression","name":"ClassExpression","referencingIds":["_ref_9111","_ref_9126","_ref_9140","_ref_9143","_ref_9819","_ref_9855","_ref_9866","_ref_10040","_ref_13349","_ref_13803","_ref_14279","_ref_14302"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassExpression"},{"type":"production","id":"prod-ClassTail","name":"ClassTail","referencingIds":["_ref_13223","_ref_13224","_ref_13226","_ref_13251","_ref_13253","_ref_13282","_ref_13284","_ref_13286","_ref_13287","_ref_13289","_ref_13328","_ref_13330","_ref_13332","_ref_13333","_ref_13335","_ref_13337","_ref_13338","_ref_13340","_ref_13342","_ref_13345","_ref_13348"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassTail"},{"type":"production","id":"prod-ClassHeritage","name":"ClassHeritage","referencingIds":["_ref_13227","_ref_13236","_ref_13238","_ref_13266","_ref_13269","_ref_13270","_ref_13271","_ref_13314","_ref_13316","_ref_13317","_ref_13320","_ref_13323"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassHeritage"},{"type":"production","id":"prod-ClassBody","name":"ClassBody","referencingIds":["_ref_13228","_ref_13237","_ref_13239","_ref_13267","_ref_13268","_ref_13272","_ref_13315","_ref_13318","_ref_13319","_ref_13324","_ref_13325"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassBody"},{"type":"production","id":"prod-ClassElementList","name":"ClassElementList","referencingIds":["_ref_13230","_ref_13232","_ref_13240","_ref_13241","_ref_13259","_ref_13261","_ref_13274","_ref_13276","_ref_13297","_ref_13299","_ref_13308","_ref_13310"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassElementList"},{"type":"production","id":"prod-ClassElement","name":"ClassElement","referencingIds":["_ref_13231","_ref_13233","_ref_13254","_ref_13255","_ref_13256","_ref_13257","_ref_13258","_ref_13260","_ref_13262","_ref_13263","_ref_13264","_ref_13265","_ref_13275","_ref_13277","_ref_13292","_ref_13293","_ref_13294","_ref_13295","_ref_13296","_ref_13298","_ref_13300","_ref_13301","_ref_13302","_ref_13303","_ref_13304","_ref_13305","_ref_13306","_ref_13307","_ref_13309","_ref_13311","_ref_13312","_ref_13313","_ref_13326"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassElement"},{"type":"clause","id":"sec-class-definitions-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"14.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_281"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-class-definitions-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"14.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-static-semantics-constructormethod","aoid":null,"title":"Static Semantics: ConstructorMethod","titleHTML":"Static Semantics: ConstructorMethod","number":"14.6.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_413"],"key":"Static Semantics: ConstructorMethod"},{"type":"clause","id":"sec-class-definitions-static-semantics-contains","aoid":null,"title":"Static Semantics: Contains","titleHTML":"Static Semantics: Contains","number":"14.6.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Contains"},{"type":"clause","id":"sec-class-definitions-static-semantics-computedpropertycontains","aoid":null,"title":"Static Semantics: ComputedPropertyContains","titleHTML":"Static Semantics: ComputedPropertyContains","number":"14.6.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ComputedPropertyContains"},{"type":"clause","id":"sec-class-definitions-static-semantics-hasname","aoid":null,"title":"Static Semantics: HasName","titleHTML":"Static Semantics: HasName","number":"14.6.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasName"},{"type":"clause","id":"sec-class-definitions-static-semantics-isconstantdeclaration","aoid":null,"title":"Static Semantics: IsConstantDeclaration","titleHTML":"Static Semantics: IsConstantDeclaration","number":"14.6.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsConstantDeclaration"},{"type":"clause","id":"sec-class-definitions-static-semantics-isfunctiondefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"14.6.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-static-semantics-isstatic","aoid":null,"title":"Static Semantics: IsStatic","titleHTML":"Static Semantics: IsStatic","number":"14.6.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsStatic"},{"type":"clause","id":"sec-static-semantics-nonconstructormethoddefinitions","aoid":null,"title":"Static Semantics: NonConstructorMethodDefinitions","titleHTML":"Static Semantics: NonConstructorMethodDefinitions","number":"14.6.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: NonConstructorMethodDefinitions"},{"type":"clause","id":"sec-static-semantics-prototypepropertynamelist","aoid":null,"title":"Static Semantics: PrototypePropertyNameList","titleHTML":"Static Semantics: PrototypePropertyNameList","number":"14.6.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: PrototypePropertyNameList"},{"type":"clause","id":"sec-class-definitions-static-semantics-propname","aoid":null,"title":"Static Semantics: PropName","titleHTML":"Static Semantics: PropName","number":"14.6.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: PropName"},{"type":"clause","id":"sec-runtime-semantics-classdefinitionevaluation","aoid":null,"title":"Runtime Semantics: ClassDefinitionEvaluation","titleHTML":"Runtime Semantics: ClassDefinitionEvaluation","number":"14.6.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: ClassDefinitionEvaluation"},{"type":"clause","id":"sec-runtime-semantics-bindingclassdeclarationevaluation","aoid":null,"title":"Runtime Semantics: BindingClassDeclarationEvaluation","titleHTML":"Runtime Semantics: BindingClassDeclarationEvaluation","number":"14.6.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: BindingClassDeclarationEvaluation"},{"type":"clause","id":"sec-class-definitions-runtime-semantics-namedevaluation","aoid":null,"title":"Runtime Semantics: NamedEvaluation","titleHTML":"Runtime Semantics: NamedEvaluation","number":"14.6.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: NamedEvaluation"},{"type":"clause","id":"sec-class-definitions-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"14.6.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-class-definitions","aoid":null,"title":"Class Definitions","titleHTML":"Class Definitions","number":"14.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_312"],"key":"Class Definitions"},{"type":"production","id":"prod-AsyncFunctionDeclaration","name":"AsyncFunctionDeclaration","referencingIds":["_ref_9043","_ref_9048","_ref_9053","_ref_9058","_ref_9063","_ref_9069","_ref_9090","_ref_9103","_ref_9118","_ref_9132","_ref_9148","_ref_10957","_ref_10989","_ref_10990","_ref_11018","_ref_11139","_ref_11467","_ref_13373","_ref_13382","_ref_13478","_ref_13482","_ref_13485","_ref_13488","_ref_13872","_ref_14012","_ref_14280","_ref_14311","_ref_14814"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncFunctionDeclaration"},{"type":"production","id":"prod-AsyncFunctionExpression","name":"AsyncFunctionExpression","referencingIds":["_ref_9104","_ref_9119","_ref_9133","_ref_9149","_ref_9821","_ref_9857","_ref_9868","_ref_10041","_ref_13374","_ref_13383","_ref_13501","_ref_13509","_ref_13512","_ref_13516","_ref_13520","_ref_13805","_ref_14281","_ref_14815"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncFunctionExpression"},{"type":"production","id":"prod-AsyncMethod","name":"AsyncMethod","referencingIds":["_ref_12822","_ref_12887","_ref_13397","_ref_13495","_ref_13498","_ref_14816"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncMethod"},{"type":"production","id":"prod-AsyncFunctionBody","name":"AsyncFunctionBody","referencingIds":["_ref_13353","_ref_13356","_ref_13359","_ref_13363","_ref_13367","_ref_13371","_ref_13380","_ref_13394","_ref_13395","_ref_13401","_ref_13404","_ref_13406","_ref_13408","_ref_13411","_ref_13412","_ref_13420","_ref_13423","_ref_13427","_ref_13431","_ref_13434","_ref_13437","_ref_13441","_ref_13443","_ref_13445","_ref_13448","_ref_13451","_ref_13454","_ref_13457","_ref_13460","_ref_13463","_ref_13465","_ref_13467","_ref_13470","_ref_13473","_ref_13477","_ref_13481","_ref_13484","_ref_13487","_ref_13493","_ref_13497","_ref_13500","_ref_13504","_ref_13506","_ref_13508","_ref_13511","_ref_13515","_ref_13519","_ref_13531","_ref_13596","_ref_13597","_ref_13623","_ref_14339"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncFunctionBody"},{"type":"production","id":"prod-AwaitExpression","name":"AwaitExpression","referencingIds":["_ref_10425","_ref_10433","_ref_10441","_ref_12754","_ref_13087","_ref_13097","_ref_13121","_ref_13370","_ref_13377","_ref_13391","_ref_13399","_ref_13415","_ref_13549","_ref_13783","_ref_14349"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AwaitExpression"},{"type":"clause","id":"sec-async-function-definitions-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"14.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-async-function-definitions-static-semantics-BoundNames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"14.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-async-function-definitions-static-semantics-ComputedPropertyContains","aoid":null,"title":"Static Semantics: ComputedPropertyContains","titleHTML":"Static Semantics: ComputedPropertyContains","number":"14.7.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ComputedPropertyContains"},{"type":"clause","id":"sec-async-function-definitions-static-semantics-Contains","aoid":null,"title":"Static Semantics: Contains","titleHTML":"Static Semantics: Contains","number":"14.7.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Contains"},{"type":"clause","id":"sec-async-function-definitions-static-semantics-HasDirectSuper","aoid":null,"title":"Static Semantics: HasDirectSuper","titleHTML":"Static Semantics: HasDirectSuper","number":"14.7.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasDirectSuper"},{"type":"clause","id":"sec-async-function-definitions-static-semantics-HasName","aoid":null,"title":"Static Semantics: HasName","titleHTML":"Static Semantics: HasName","number":"14.7.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasName"},{"type":"clause","id":"sec-async-function-definitions-static-semantics-IsConstantDeclaration","aoid":null,"title":"Static Semantics: IsConstantDeclaration","titleHTML":"Static Semantics: IsConstantDeclaration","number":"14.7.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsConstantDeclaration"},{"type":"clause","id":"sec-async-function-definitions-static-semantics-IsFunctionDefinition","aoid":null,"title":"Static Semantics: IsFunctionDefinition","titleHTML":"Static Semantics: IsFunctionDefinition","number":"14.7.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsFunctionDefinition"},{"type":"clause","id":"sec-async-function-definitions-static-semantics-PropName","aoid":null,"title":"Static Semantics: PropName","titleHTML":"Static Semantics: PropName","number":"14.7.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: PropName"},{"type":"clause","id":"sec-async-function-definitions-InstantiateFunctionObject","aoid":null,"title":"Runtime Semantics: InstantiateFunctionObject","titleHTML":"Runtime Semantics: InstantiateFunctionObject","number":"14.7.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: InstantiateFunctionObject"},{"type":"clause","id":"sec-async-function-definitions-EvaluateBody","aoid":null,"title":"Runtime Semantics: EvaluateBody","titleHTML":"Runtime Semantics: EvaluateBody","number":"14.7.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: EvaluateBody"},{"type":"clause","id":"sec-async-function-definitions-PropertyDefinitionEvaluation","aoid":null,"title":"Runtime Semantics: PropertyDefinitionEvaluation","titleHTML":"Runtime Semantics: PropertyDefinitionEvaluation","number":"14.7.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: PropertyDefinitionEvaluation"},{"type":"clause","id":"sec-async-function-definitions-runtime-semantics-namedevaluation","aoid":null,"title":"Runtime Semantics: NamedEvaluation","titleHTML":"Runtime Semantics: NamedEvaluation","number":"14.7.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: NamedEvaluation"},{"type":"clause","id":"sec-async-function-definitions-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"14.7.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-async-function-definitions","aoid":null,"title":"Async Function Definitions","titleHTML":"Async Function Definitions","number":"14.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_259","_ref_313"],"key":"Async Function Definitions"},{"type":"production","id":"prod-AsyncArrowFunction","name":"AsyncArrowFunction","referencingIds":["_ref_9109","_ref_9124","_ref_9138","_ref_9154","_ref_10715","_ref_10742","_ref_10751","_ref_13602","_ref_13605","_ref_13610","_ref_13725","_ref_14282","_ref_14817"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncArrowFunction"},{"type":"production","id":"prod-AsyncConciseBody","name":"AsyncConciseBody","referencingIds":["_ref_13526","_ref_13529","_ref_13536","_ref_13541","_ref_13543","_ref_13545","_ref_13553","_ref_13554","_ref_13566","_ref_13570","_ref_13572","_ref_13577","_ref_13581","_ref_13583","_ref_13599","_ref_13601","_ref_13604","_ref_13607","_ref_13609","_ref_13613","_ref_13616","_ref_13619","_ref_13626"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncConciseBody"},{"type":"production","id":"prod-AsyncArrowBindingIdentifier","name":"AsyncArrowBindingIdentifier","referencingIds":["_ref_13524","_ref_13540","_ref_13542","_ref_13565","_ref_13580","_ref_13598","_ref_13603","_ref_13606"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncArrowBindingIdentifier"},{"type":"production","id":"prod-CoverCallExpressionAndAsyncArrowHead","name":"CoverCallExpressionAndAsyncArrowHead","referencingIds":["_ref_9975","_ref_10193","_ref_10214","_ref_10215","_ref_10218","_ref_10220","_ref_10287","_ref_10342","_ref_10343","_ref_13527","_ref_13535","_ref_13537","_ref_13544","_ref_13546","_ref_13548","_ref_13550","_ref_13552","_ref_13555","_ref_13557","_ref_13561","_ref_13564","_ref_13571","_ref_13576","_ref_13582","_ref_13587","_ref_13600","_ref_13608","_ref_13611","_ref_13824","_ref_14822","_ref_15064"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CoverCallExpressionAndAsyncArrowHead"},{"type":"production","id":"prod-AsyncArrowHead","name":"AsyncArrowHead","referencingIds":["_ref_13551","_ref_13556","_ref_13560"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AsyncArrowHead"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"14.8.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-CoveredAsyncArrowHead","aoid":null,"title":"Static Semantics: CoveredAsyncArrowHead","titleHTML":"Static Semantics: CoveredAsyncArrowHead","number":"14.8.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: CoveredAsyncArrowHead"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-BoundNames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"14.8.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-Contains","aoid":null,"title":"Static Semantics: Contains","titleHTML":"Static Semantics: Contains","number":"14.8.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Contains"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-ContainsExpression","aoid":null,"title":"Static Semantics: ContainsExpression","titleHTML":"Static Semantics: ContainsExpression","number":"14.8.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsExpression"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-ExpectedArgumentCount","aoid":null,"title":"Static Semantics: ExpectedArgumentCount","titleHTML":"Static Semantics: ExpectedArgumentCount","number":"14.8.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExpectedArgumentCount"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-HasName","aoid":null,"title":"Static Semantics: HasName","titleHTML":"Static Semantics: HasName","number":"14.8.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasName"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-IsSimpleParameterList","aoid":null,"title":"Static Semantics: IsSimpleParameterList","titleHTML":"Static Semantics: IsSimpleParameterList","number":"14.8.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsSimpleParameterList"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-LexicallyDeclaredNames","aoid":null,"title":"Static Semantics: LexicallyDeclaredNames","titleHTML":"Static Semantics: LexicallyDeclaredNames","number":"14.8.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyDeclaredNames"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-LexicallyScopedDeclarations","aoid":null,"title":"Static Semantics: LexicallyScopedDeclarations","titleHTML":"Static Semantics: LexicallyScopedDeclarations","number":"14.8.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyScopedDeclarations"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-VarDeclaredNames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"14.8.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-async-arrow-function-definitions-static-semantics-VarScopedDeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"14.8.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-async-arrow-function-definitions-IteratorBindingInitialization","aoid":null,"title":"Runtime Semantics: IteratorBindingInitialization","titleHTML":"Runtime Semantics: IteratorBindingInitialization","number":"14.8.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: IteratorBindingInitialization"},{"type":"clause","id":"sec-async-arrow-function-definitions-EvaluateBody","aoid":null,"title":"Runtime Semantics: EvaluateBody","titleHTML":"Runtime Semantics: EvaluateBody","number":"14.8.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: EvaluateBody"},{"type":"clause","id":"sec-async-arrow-function-definitions-runtime-semantics-namedevaluation","aoid":null,"title":"Runtime Semantics: NamedEvaluation","titleHTML":"Runtime Semantics: NamedEvaluation","number":"14.8.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: NamedEvaluation"},{"type":"clause","id":"sec-async-arrow-function-definitions-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"14.8.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-async-arrow-function-definitions","aoid":null,"title":"Async Arrow Function Definitions","titleHTML":"Async Arrow Function Definitions","number":"14.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_261"],"key":"Async Arrow Function Definitions"},{"type":"op","aoid":"IsInTailPosition","refId":"sec-isintailposition","location":"","referencingIds":[],"key":"IsInTailPosition"},{"type":"clause","id":"sec-isintailposition","aoid":"IsInTailPosition","title":"Static Semantics: IsInTailPosition ( call )","titleHTML":"Static Semantics: IsInTailPosition ( <var>call</var> )","number":"14.9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3302","_ref_3305","_ref_3369","_ref_3372"],"key":"Static Semantics: IsInTailPosition ( call )"},{"type":"clause","id":"sec-statement-rules","aoid":null,"title":"Statement Rules","titleHTML":"Statement Rules","number":"14.9.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Statement Rules"},{"type":"clause","id":"sec-expression-rules","aoid":null,"title":"Expression Rules","titleHTML":"Expression Rules","number":"14.9.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Expression Rules"},{"type":"clause","id":"sec-static-semantics-hascallintailposition","aoid":null,"title":"Static Semantics: HasCallInTailPosition","titleHTML":"Static Semantics: HasCallInTailPosition","number":"14.9.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: HasCallInTailPosition"},{"type":"op","aoid":"PrepareForTailCall","refId":"sec-preparefortailcall","location":"","referencingIds":[],"key":"PrepareForTailCall"},{"type":"clause","id":"sec-preparefortailcall","aoid":"PrepareForTailCall","title":"Runtime Semantics: PrepareForTailCall ( )","titleHTML":"Runtime Semantics: PrepareForTailCall ( )","number":"14.9.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3319","_ref_5037","_ref_5040","_ref_5059","_ref_8345"],"key":"Runtime Semantics: PrepareForTailCall ( )"},{"type":"clause","id":"sec-tail-position-calls","aoid":null,"title":"Tail Position Calls","titleHTML":"Tail Position Calls","number":"14.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Tail Position Calls"},{"type":"clause","id":"sec-ecmascript-language-functions-and-classes","aoid":null,"title":"ECMAScript Language: Functions and Classes","titleHTML":"ECMAScript Language: Functions and Classes","number":"14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_751"],"key":"ECMAScript Language: Functions and Classes"},{"type":"production","id":"prod-Script","name":"Script","referencingIds":["_ref_8805","_ref_8807","_ref_8809","_ref_8811","_ref_8813","_ref_8926","_ref_8928","_ref_8930","_ref_8932","_ref_9033","_ref_9039","_ref_9040","_ref_9080","_ref_9083","_ref_9097","_ref_9098","_ref_9112","_ref_9113","_ref_9141","_ref_9156","_ref_13379","_ref_13856","_ref_13863","_ref_13864","_ref_13865","_ref_13877","_ref_13878","_ref_13879","_ref_13880","_ref_14264","_ref_14265","_ref_14266","_ref_14270","_ref_14289","_ref_14291","_ref_14802"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Script"},{"type":"production","id":"prod-ScriptBody","name":"ScriptBody","referencingIds":["_ref_12545","_ref_13837","_ref_13839","_ref_13840","_ref_13841","_ref_13842","_ref_13866","_ref_14292","_ref_14293"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ScriptBody"},{"type":"clause","id":"sec-scripts-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"15.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_365"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-static-semantics-isstrict","aoid":null,"title":"Static Semantics: IsStrict","titleHTML":"Static Semantics: IsStrict","number":"15.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsStrict"},{"type":"clause","id":"sec-scripts-static-semantics-lexicallydeclarednames","aoid":null,"title":"Static Semantics: LexicallyDeclaredNames","titleHTML":"Static Semantics: LexicallyDeclaredNames","number":"15.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyDeclaredNames"},{"type":"clause","id":"sec-scripts-static-semantics-lexicallyscopeddeclarations","aoid":null,"title":"Static Semantics: LexicallyScopedDeclarations","titleHTML":"Static Semantics: LexicallyScopedDeclarations","number":"15.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyScopedDeclarations"},{"type":"clause","id":"sec-scripts-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"15.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-scripts-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"15.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"clause","id":"sec-script-semantics-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"15.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"term","term":"Script Record","refId":"sec-script-records","referencingIds":["_ref_2115","_ref_2171","_ref_2419","_ref_4388","_ref_4395","_ref_4402"],"id":"script-record","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Script Record"},{"type":"table","id":"table-script-records","number":36,"caption":"Table 36: Script Record Fields","referencingIds":["_ref_362"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 36: Script Record Fields"},{"type":"clause","id":"sec-script-records","aoid":null,"title":"Script Records","titleHTML":"Script Records","number":"15.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Script Records"},{"type":"op","aoid":"ParseScript","refId":"sec-parse-script","location":"","referencingIds":[],"key":"ParseScript"},{"type":"clause","id":"sec-parse-script","aoid":"ParseScript","title":"ParseScript ( sourceText, realm, hostDefined )","titleHTML":"ParseScript ( <var>sourceText</var>, <var>realm</var>, <var>hostDefined</var> )","number":"15.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4438","_ref_4750"],"key":"ParseScript ( sourceText, realm, hostDefined )"},{"type":"op","aoid":"ScriptEvaluation","refId":"sec-runtime-semantics-scriptevaluation","location":"","referencingIds":[],"key":"ScriptEvaluation"},{"type":"clause","id":"sec-runtime-semantics-scriptevaluation","aoid":"ScriptEvaluation","title":"ScriptEvaluation ( scriptRecord )","titleHTML":"ScriptEvaluation ( <var>scriptRecord</var> )","number":"15.1.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4442"],"key":"ScriptEvaluation ( scriptRecord )"},{"type":"op","aoid":"GlobalDeclarationInstantiation","refId":"sec-globaldeclarationinstantiation","location":"","referencingIds":[],"key":"GlobalDeclarationInstantiation"},{"type":"clause","id":"sec-globaldeclarationinstantiation","aoid":"GlobalDeclarationInstantiation","title":"Runtime Semantics: GlobalDeclarationInstantiation ( script, env )","titleHTML":"Runtime Semantics: GlobalDeclarationInstantiation ( <var>script</var>, <var>env</var> )","number":"15.1.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_753","_ref_4409","_ref_8744"],"key":"Runtime Semantics: GlobalDeclarationInstantiation ( script, env )"},{"type":"op","aoid":"ScriptEvaluationJob","refId":"sec-scriptevaluationjob","location":"","referencingIds":[],"key":"ScriptEvaluationJob"},{"type":"clause","id":"sec-scriptevaluationjob","aoid":"ScriptEvaluationJob","title":"Runtime Semantics: ScriptEvaluationJob ( sourceText, hostDefined )","titleHTML":"Runtime Semantics: ScriptEvaluationJob ( <var>sourceText</var>, <var>hostDefined</var> )","number":"15.1.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2206"],"key":"Runtime Semantics: ScriptEvaluationJob ( sourceText, hostDefined )"},{"type":"clause","id":"sec-scripts","aoid":null,"title":"Scripts","titleHTML":"Scripts","number":"15.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Scripts"},{"type":"production","id":"prod-Module","name":"Module","referencingIds":["_ref_8806","_ref_8808","_ref_8810","_ref_8812","_ref_8814","_ref_8927","_ref_8929","_ref_8931","_ref_8933","_ref_9027","_ref_9028","_ref_9077","_ref_9078","_ref_9081","_ref_9084","_ref_9093","_ref_9094","_ref_9157","_ref_9782","_ref_9791","_ref_13378","_ref_13905","_ref_13906","_ref_13925","_ref_13932","_ref_13960","_ref_13973","_ref_13998","_ref_13999","_ref_14008","_ref_14009","_ref_14015","_ref_14016","_ref_14267","_ref_14268","_ref_14269","_ref_14271","_ref_14288","_ref_14290","_ref_14908"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Module"},{"type":"production","id":"prod-ModuleBody","name":"ModuleBody","referencingIds":["_ref_9127","_ref_12546","_ref_13881","_ref_13904"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ModuleBody"},{"type":"production","id":"prod-ModuleItemList","name":"ModuleItemList","referencingIds":["_ref_13882","_ref_13884","_ref_13889","_ref_13890","_ref_13891","_ref_13892","_ref_13893","_ref_13894","_ref_13895","_ref_13896","_ref_13897","_ref_13898","_ref_13900","_ref_13901","_ref_13902","_ref_13907","_ref_13909","_ref_13913","_ref_13915","_ref_13919","_ref_13921","_ref_13926","_ref_13928","_ref_13933","_ref_13935","_ref_13941","_ref_13943","_ref_13947","_ref_13949","_ref_13955","_ref_13957","_ref_13961","_ref_13963","_ref_13974","_ref_13976","_ref_13979","_ref_13981","_ref_13988","_ref_13990","_ref_14017","_ref_14018","_ref_14019","_ref_14021","_ref_14023","_ref_14024"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ModuleItemList"},{"type":"production","id":"prod-ModuleItem","name":"ModuleItem","referencingIds":["_ref_12543","_ref_13883","_ref_13885","_ref_13908","_ref_13910","_ref_13914","_ref_13916","_ref_13920","_ref_13922","_ref_13927","_ref_13929","_ref_13934","_ref_13936","_ref_13942","_ref_13944","_ref_13948","_ref_13950","_ref_13953","_ref_13954","_ref_13956","_ref_13958","_ref_13962","_ref_13964","_ref_13975","_ref_13977","_ref_13980","_ref_13982","_ref_13989","_ref_13991","_ref_14020","_ref_14022"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ModuleItem"},{"type":"clause","id":"sec-module-semantics-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"15.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-module-semantics-static-semantics-containsduplicatelabels","aoid":null,"title":"Static Semantics: ContainsDuplicateLabels","titleHTML":"Static Semantics: ContainsDuplicateLabels","number":"15.2.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsDuplicateLabels"},{"type":"clause","id":"sec-module-semantics-static-semantics-containsundefinedbreaktarget","aoid":null,"title":"Static Semantics: ContainsUndefinedBreakTarget","titleHTML":"Static Semantics: ContainsUndefinedBreakTarget","number":"15.2.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedBreakTarget"},{"type":"clause","id":"sec-module-semantics-static-semantics-containsundefinedcontinuetarget","aoid":null,"title":"Static Semantics: ContainsUndefinedContinueTarget","titleHTML":"Static Semantics: ContainsUndefinedContinueTarget","number":"15.2.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ContainsUndefinedContinueTarget"},{"type":"clause","id":"sec-module-semantics-static-semantics-exportedbindings","aoid":null,"title":"Static Semantics: ExportedBindings","titleHTML":"Static Semantics: ExportedBindings","number":"15.2.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExportedBindings"},{"type":"clause","id":"sec-module-semantics-static-semantics-exportednames","aoid":null,"title":"Static Semantics: ExportedNames","titleHTML":"Static Semantics: ExportedNames","number":"15.2.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExportedNames"},{"type":"clause","id":"sec-module-semantics-static-semantics-exportentries","aoid":null,"title":"Static Semantics: ExportEntries","titleHTML":"Static Semantics: ExportEntries","number":"15.2.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExportEntries"},{"type":"clause","id":"sec-module-semantics-static-semantics-importentries","aoid":null,"title":"Static Semantics: ImportEntries","titleHTML":"Static Semantics: ImportEntries","number":"15.2.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ImportEntries"},{"type":"op","aoid":"ImportedLocalNames","refId":"sec-importedlocalnames","location":"","referencingIds":[],"key":"ImportedLocalNames"},{"type":"clause","id":"sec-importedlocalnames","aoid":"ImportedLocalNames","title":"Static Semantics: ImportedLocalNames ( importEntries )","titleHTML":"Static Semantics: ImportedLocalNames ( <var>importEntries</var> )","number":"15.2.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4582"],"key":"Static Semantics: ImportedLocalNames ( importEntries )"},{"type":"clause","id":"sec-module-semantics-static-semantics-modulerequests","aoid":null,"title":"Static Semantics: ModuleRequests","titleHTML":"Static Semantics: ModuleRequests","number":"15.2.1.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ModuleRequests"},{"type":"clause","id":"sec-module-semantics-static-semantics-lexicallydeclarednames","aoid":null,"title":"Static Semantics: LexicallyDeclaredNames","titleHTML":"Static Semantics: LexicallyDeclaredNames","number":"15.2.1.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyDeclaredNames"},{"type":"clause","id":"sec-module-semantics-static-semantics-lexicallyscopeddeclarations","aoid":null,"title":"Static Semantics: LexicallyScopedDeclarations","titleHTML":"Static Semantics: LexicallyScopedDeclarations","number":"15.2.1.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyScopedDeclarations"},{"type":"clause","id":"sec-module-semantics-static-semantics-vardeclarednames","aoid":null,"title":"Static Semantics: VarDeclaredNames","titleHTML":"Static Semantics: VarDeclaredNames","number":"15.2.1.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarDeclaredNames"},{"type":"clause","id":"sec-module-semantics-static-semantics-varscopeddeclarations","aoid":null,"title":"Static Semantics: VarScopedDeclarations","titleHTML":"Static Semantics: VarScopedDeclarations","number":"15.2.1.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: VarScopedDeclarations"},{"type":"term","term":"Module Record","refId":"sec-abstract-module-records","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Module Record"},{"type":"table","id":"table-36","number":37,"caption":"Table 37: Module Record Fields","referencingIds":["_ref_368","_ref_371"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 37: Module Record Fields"},{"type":"table","id":"table-37","number":38,"caption":"Table 38: Abstract Methods of Module Records","referencingIds":["_ref_369","_ref_373"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 38: Abstract Methods of Module Records"},{"type":"term","term":"ResolvedBinding Record","refId":"sec-abstract-module-records","referencingIds":["_ref_2919","_ref_4607","_ref_4617","_ref_4627","_ref_4636","_ref_4674"],"id":"resolvedbinding-record","namespace":"https://tc39.github.io/ecma262/","location":"","key":"ResolvedBinding Record"},{"type":"clause","id":"sec-abstract-module-records","aoid":null,"title":"Abstract Module Records","titleHTML":"Abstract Module Records","number":"15.2.1.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2005","_ref_2021","_ref_2026","_ref_2114","_ref_2172","_ref_2420","_ref_2892","_ref_2893","_ref_2933","_ref_4467","_ref_4472","_ref_4485","_ref_4509","_ref_4511","_ref_4536","_ref_4539","_ref_4554","_ref_4591","_ref_4604","_ref_4605","_ref_4606","_ref_4610","_ref_4629","_ref_4663","_ref_4664","_ref_4665","_ref_4666","_ref_4667","_ref_4668","_ref_4671"],"key":"Abstract Module Records"},{"type":"term","term":"Cyclic Module Record","refId":"sec-cyclic-module-records","referencingIds":["_ref_4465","_ref_4474","_ref_4475","_ref_4484","_ref_4487","_ref_4496","_ref_4497","_ref_4504","_ref_4510","_ref_4513","_ref_4524","_ref_4531","_ref_4555","_ref_4632","_ref_4647"],"id":"cyclic-module-record","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Cyclic Module Record"},{"type":"table","id":"table-cyclic-module-fields","number":39,"caption":"Table 39: Additional Fields of Cyclic Module Records","referencingIds":["_ref_372","_ref_376"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 39: Additional Fields of Cyclic Module Records"},{"type":"table","id":"table-cyclic-module-methods","number":40,"caption":"Table 40: Additional Abstract Methods of Cyclic Module Records","referencingIds":["_ref_374"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 40: Additional Abstract Methods of Cyclic Module Records"},{"type":"op","aoid":"InnerModuleInstantiation","refId":"sec-innermoduleinstantiation","location":"","referencingIds":[],"key":"InnerModuleInstantiation"},{"type":"clause","id":"sec-innermoduleinstantiation","aoid":"InnerModuleInstantiation","title":"InnerModuleInstantiation ( module, stack, index )","titleHTML":"InnerModuleInstantiation ( <var>module</var>, <var>stack</var>, <var>index</var> )","number":"15.2.1.16.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4486","_ref_4490","_ref_4500","_ref_4523","_ref_4537","_ref_4543","_ref_4544","_ref_4545","_ref_4546","_ref_4547","_ref_4548"],"key":"InnerModuleInstantiation ( module, stack, index )"},{"type":"clause","id":"sec-moduledeclarationinstantiation","aoid":null,"title":"Instantiate ( ) Concrete Method","titleHTML":"Instantiate ( ) Concrete Method","number":"15.2.1.16.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Instantiate ( ) Concrete Method"},{"type":"op","aoid":"InnerModuleEvaluation","refId":"sec-innermoduleevaluation","location":"","referencingIds":[],"key":"InnerModuleEvaluation"},{"type":"clause","id":"sec-innermoduleevaluation","aoid":"InnerModuleEvaluation","title":"InnerModuleEvaluation ( module, stack, index )","titleHTML":"InnerModuleEvaluation ( <var>module</var>, <var>stack</var>, <var>index</var> )","number":"15.2.1.16.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4512","_ref_4516","_ref_4527","_ref_4538","_ref_4550","_ref_4551"],"key":"InnerModuleEvaluation ( module, stack, index )"},{"type":"clause","id":"sec-moduleevaluation","aoid":null,"title":"Evaluate ( ) Concrete Method","titleHTML":"Evaluate ( ) Concrete Method","number":"15.2.1.16.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Evaluate ( ) Concrete Method"},{"type":"figure","id":"figure-module-graph-simple","number":2,"caption":"Figure 2: A simple module graph","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Figure 2: A simple module graph"},{"type":"figure","id":"figure-module-graph-missing","number":3,"caption":"Figure 3: A module graph with an unresolvable module","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Figure 3: A module graph with an unresolvable module"},{"type":"figure","id":"figure-module-graph-cycle","number":4,"caption":"Figure 4: A cyclic module graph","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Figure 4: A cyclic module graph"},{"type":"clause","id":"sec-example-cyclic-module-record-graphs","aoid":null,"title":"Example Cyclic Module Record Graphs","titleHTML":"Example Cyclic Module Record Graphs","number":"15.2.1.16.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Example Cyclic Module Record Graphs"},{"type":"clause","id":"sec-cyclic-module-records","aoid":null,"title":"Cyclic Module Records","titleHTML":"Cyclic Module Records","number":"15.2.1.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Cyclic Module Records"},{"type":"term","term":"Source Text Module Record","refId":"sec-source-text-module-records","referencingIds":["_ref_4466","_ref_4522","_ref_4553","_ref_4575","_ref_4589","_ref_4590","_ref_4592","_ref_4603","_ref_4608","_ref_4631","_ref_4633","_ref_4646","_ref_4648"],"id":"sourctextmodule-record","namespace":"https://tc39.github.io/ecma262/","location":"","key":"Source Text Module Record"},{"type":"table","id":"table-38","number":41,"caption":"Table 41: Additional Fields of Source Text Module Records","referencingIds":["_ref_377"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 41: Additional Fields of Source Text Module Records"},{"type":"term","term":"ImportEntry Record","refId":"sec-source-text-module-records","referencingIds":["_ref_4452","_ref_4568","_ref_4569","_ref_4570","_ref_4641","_ref_4694","_ref_4696","_ref_4699","_ref_4701"],"id":"importentry-record","namespace":"https://tc39.github.io/ecma262/","location":"","key":"ImportEntry Record"},{"type":"table","id":"table-39","number":42,"caption":"Table 42: ImportEntry Record Fields","referencingIds":["_ref_367","_ref_378"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 42: ImportEntry Record Fields"},{"type":"table","id":"table-40","number":43,"caption":"Table 43 (Informative): Import Forms Mappings to ImportEntry Records","referencingIds":["_ref_379"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 43 (Informative): Import Forms Mappings to ImportEntry Records"},{"type":"term","term":"ExportEntry Record","refId":"sec-source-text-module-records","referencingIds":["_ref_4572","_ref_4573","_ref_4586","_ref_4588","_ref_4596","_ref_4598","_ref_4600","_ref_4614","_ref_4618","_ref_4624","_ref_4634","_ref_4713","_ref_4716","_ref_4718","_ref_4720","_ref_4722","_ref_4723","_ref_4727","_ref_4729"],"id":"exportentry-record","namespace":"https://tc39.github.io/ecma262/","location":"","key":"ExportEntry Record"},{"type":"table","id":"table-41","number":44,"caption":"Table 44: ExportEntry Record Fields","referencingIds":["_ref_380"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 44: ExportEntry Record Fields"},{"type":"table","id":"table-42","number":45,"caption":"Table 45 (Informative): Export Forms Mappings to ExportEntry Records","referencingIds":["_ref_381"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 45 (Informative): Export Forms Mappings to ExportEntry Records"},{"type":"op","aoid":"ParseModule","refId":"sec-parsemodule","location":"","referencingIds":[],"key":"ParseModule"},{"type":"clause","id":"sec-parsemodule","aoid":"ParseModule","title":"ParseModule ( sourceText, realm, hostDefined )","titleHTML":"ParseModule ( <var>sourceText</var>, <var>realm</var>, <var>hostDefined</var> )","number":"15.2.1.17.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4541","_ref_4556","_ref_4679"],"key":"ParseModule ( sourceText, realm, hostDefined )"},{"type":"clause","id":"sec-getexportednames","aoid":null,"title":"GetExportedNames ( exportStarSet ) Concrete Method","titleHTML":"GetExportedNames ( <var>exportStarSet</var> ) Concrete Method","number":"15.2.1.17.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GetExportedNames ( exportStarSet ) Concrete Method"},{"type":"clause","id":"sec-resolveexport","aoid":null,"title":"ResolveExport ( exportName, resolveSet ) Concrete Method","titleHTML":"ResolveExport ( <var>exportName</var>, <var>resolveSet</var> ) Concrete Method","number":"15.2.1.17.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ResolveExport ( exportName, resolveSet ) Concrete Method"},{"type":"op","aoid":"InitializeEnvironment","refId":"sec-source-text-module-record-initialize-environment","location":"","referencingIds":[],"key":"InitializeEnvironment"},{"type":"clause","id":"sec-source-text-module-record-initialize-environment","aoid":"InitializeEnvironment","title":"InitializeEnvironment ( ) Concrete Method","titleHTML":"InitializeEnvironment ( ) Concrete Method","number":"15.2.1.17.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4480","_ref_4506","_ref_4549"],"key":"InitializeEnvironment ( ) Concrete Method"},{"type":"op","aoid":"ExecuteModule","refId":"sec-source-text-module-record-execute-module","location":"","referencingIds":[],"key":"ExecuteModule"},{"type":"clause","id":"sec-source-text-module-record-execute-module","aoid":"ExecuteModule","title":"ExecuteModule ( ) Concrete Method","titleHTML":"ExecuteModule ( ) Concrete Method","number":"15.2.1.17.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4482","_ref_4533"],"key":"ExecuteModule ( ) Concrete Method"},{"type":"clause","id":"sec-source-text-module-records","aoid":null,"title":"Source Text Module Records","titleHTML":"Source Text Module Records","number":"15.2.1.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Source Text Module Records"},{"type":"op","aoid":"HostResolveImportedModule","refId":"sec-hostresolveimportedmodule","location":"","referencingIds":[],"key":"HostResolveImportedModule"},{"type":"clause","id":"sec-hostresolveimportedmodule","aoid":"HostResolveImportedModule","title":"Runtime Semantics: HostResolveImportedModule ( referencingModule, specifier )","titleHTML":"Runtime Semantics: HostResolveImportedModule ( <var>referencingModule</var>, <var>specifier</var> )","number":"15.2.1.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4499","_ref_4526","_ref_4540","_ref_4542","_ref_4601","_ref_4621","_ref_4625","_ref_4642","_ref_4676"],"key":"Runtime Semantics: HostResolveImportedModule ( referencingModule, specifier )"},{"type":"op","aoid":"GetModuleNamespace","refId":"sec-getmodulenamespace","location":"","referencingIds":[],"key":"GetModuleNamespace"},{"type":"clause","id":"sec-getmodulenamespace","aoid":"GetModuleNamespace","title":"Runtime Semantics: GetModuleNamespace ( module )","titleHTML":"Runtime Semantics: GetModuleNamespace ( <var>module</var> )","number":"15.2.1.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4643"],"key":"Runtime Semantics: GetModuleNamespace ( module )"},{"type":"op","aoid":"TopLevelModuleEvaluationJob","refId":"sec-toplevelmoduleevaluationjob","location":"","referencingIds":[],"key":"TopLevelModuleEvaluationJob"},{"type":"clause","id":"sec-toplevelmoduleevaluationjob","aoid":"TopLevelModuleEvaluationJob","title":"Runtime Semantics: TopLevelModuleEvaluationJob ( sourceText, hostDefined )","titleHTML":"Runtime Semantics: TopLevelModuleEvaluationJob ( <var>sourceText</var>, <var>hostDefined</var> )","number":"15.2.1.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2208"],"key":"Runtime Semantics: TopLevelModuleEvaluationJob ( sourceText, hostDefined )"},{"type":"clause","id":"sec-module-semantics-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"15.2.1.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-module-semantics","aoid":null,"title":"Module Semantics","titleHTML":"Module Semantics","number":"15.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Module Semantics"},{"type":"production","id":"prod-ImportDeclaration","name":"ImportDeclaration","referencingIds":["_ref_13886","_ref_13911","_ref_13917","_ref_13923","_ref_13930","_ref_13939","_ref_13945","_ref_13965","_ref_13966","_ref_13978","_ref_13983","_ref_13992","_ref_14001","_ref_14025","_ref_14049","_ref_14050","_ref_14818"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ImportDeclaration"},{"type":"production","id":"prod-ImportClause","name":"ImportClause","referencingIds":["_ref_14026","_ref_14051","_ref_14053","_ref_14070","_ref_14073","_ref_14097"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ImportClause"},{"type":"production","id":"prod-ImportedDefaultBinding","name":"ImportedDefaultBinding","referencingIds":["_ref_14029","_ref_14032","_ref_14034","_ref_14055","_ref_14057","_ref_14059","_ref_14061","_ref_14075","_ref_14077","_ref_14079","_ref_14081"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ImportedDefaultBinding"},{"type":"production","id":"prod-NameSpaceImport","name":"NameSpaceImport","referencingIds":["_ref_14030","_ref_14033","_ref_14056","_ref_14058","_ref_14076","_ref_14078","_ref_14819"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NameSpaceImport"},{"type":"production","id":"prod-NamedImports","name":"NamedImports","referencingIds":["_ref_14031","_ref_14035","_ref_14060","_ref_14062","_ref_14080","_ref_14082"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NamedImports"},{"type":"production","id":"prod-FromClause","name":"FromClause","referencingIds":["_ref_14027","_ref_14052","_ref_14071","_ref_14072","_ref_14098","_ref_14099","_ref_14102","_ref_14104","_ref_14126","_ref_14128","_ref_14139","_ref_14141","_ref_14161","_ref_14163","_ref_14182","_ref_14183","_ref_14185","_ref_14186","_ref_14209","_ref_14211","_ref_14215","_ref_14217","_ref_14228","_ref_14230","_ref_14231","_ref_14247","_ref_14249"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"FromClause"},{"type":"production","id":"prod-ImportsList","name":"ImportsList","referencingIds":["_ref_14038","_ref_14039","_ref_14042","_ref_14063","_ref_14065","_ref_14087","_ref_14089"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ImportsList"},{"type":"production","id":"prod-ImportSpecifier","name":"ImportSpecifier","referencingIds":["_ref_14041","_ref_14043","_ref_14064","_ref_14066","_ref_14088","_ref_14090"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ImportSpecifier"},{"type":"production","id":"prod-ModuleSpecifier","name":"ModuleSpecifier","referencingIds":["_ref_13997","_ref_14000","_ref_14002","_ref_14005","_ref_14007","_ref_14014","_ref_14028","_ref_14040","_ref_14054","_ref_14074"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ModuleSpecifier"},{"type":"production","id":"prod-ImportedBinding","name":"ImportedBinding","referencingIds":["_ref_14036","_ref_14037","_ref_14044","_ref_14046","_ref_14068","_ref_14069","_ref_14083","_ref_14084","_ref_14085","_ref_14086","_ref_14091","_ref_14092","_ref_14094","_ref_14096"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ImportedBinding"},{"type":"clause","id":"sec-imports-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"15.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-imports-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"15.2.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-imports-static-semantics-importentries","aoid":null,"title":"Static Semantics: ImportEntries","titleHTML":"Static Semantics: ImportEntries","number":"15.2.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ImportEntries"},{"type":"clause","id":"sec-static-semantics-importentriesformodule","aoid":null,"title":"Static Semantics: ImportEntriesForModule","titleHTML":"Static Semantics: ImportEntriesForModule","number":"15.2.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ImportEntriesForModule"},{"type":"clause","id":"sec-imports-static-semantics-modulerequests","aoid":null,"title":"Static Semantics: ModuleRequests","titleHTML":"Static Semantics: ModuleRequests","number":"15.2.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ModuleRequests"},{"type":"clause","id":"sec-imports","aoid":null,"title":"Imports","titleHTML":"Imports","number":"15.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Imports"},{"type":"production","id":"prod-ExportDeclaration","name":"ExportDeclaration","referencingIds":["_ref_13336","_ref_13343","_ref_13887","_ref_13903","_ref_13912","_ref_13918","_ref_13924","_ref_13937","_ref_13938","_ref_13951","_ref_13967","_ref_13968","_ref_13970","_ref_13984","_ref_13985","_ref_13987","_ref_13993","_ref_13994","_ref_14003","_ref_14004","_ref_14006","_ref_14151","_ref_14227"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ExportDeclaration"},{"type":"production","id":"prod-ExportClause","name":"ExportClause","referencingIds":["_ref_14103","_ref_14105","_ref_14120","_ref_14122","_ref_14124","_ref_14127","_ref_14129","_ref_14140","_ref_14142","_ref_14143","_ref_14162","_ref_14164","_ref_14165","_ref_14184","_ref_14187","_ref_14188","_ref_14189","_ref_14210","_ref_14212","_ref_14216","_ref_14218","_ref_14229","_ref_14232","_ref_14248","_ref_14250"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ExportClause"},{"type":"production","id":"prod-ExportsList","name":"ExportsList","referencingIds":["_ref_14112","_ref_14113","_ref_14115","_ref_14152","_ref_14154","_ref_14173","_ref_14175","_ref_14199","_ref_14201","_ref_14238","_ref_14240"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ExportsList"},{"type":"production","id":"prod-ExportSpecifier","name":"ExportSpecifier","referencingIds":["_ref_14114","_ref_14116","_ref_14153","_ref_14155","_ref_14174","_ref_14176","_ref_14200","_ref_14202","_ref_14239","_ref_14241"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ExportSpecifier"},{"type":"clause","id":"sec-exports-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"15.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-exports-static-semantics-boundnames","aoid":null,"title":"Static Semantics: BoundNames","titleHTML":"Static Semantics: BoundNames","number":"15.2.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: BoundNames"},{"type":"clause","id":"sec-exports-static-semantics-exportedbindings","aoid":null,"title":"Static Semantics: ExportedBindings","titleHTML":"Static Semantics: ExportedBindings","number":"15.2.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExportedBindings"},{"type":"clause","id":"sec-exports-static-semantics-exportednames","aoid":null,"title":"Static Semantics: ExportedNames","titleHTML":"Static Semantics: ExportedNames","number":"15.2.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExportedNames"},{"type":"clause","id":"sec-exports-static-semantics-exportentries","aoid":null,"title":"Static Semantics: ExportEntries","titleHTML":"Static Semantics: ExportEntries","number":"15.2.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExportEntries"},{"type":"clause","id":"sec-static-semantics-exportentriesformodule","aoid":null,"title":"Static Semantics: ExportEntriesForModule","titleHTML":"Static Semantics: ExportEntriesForModule","number":"15.2.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ExportEntriesForModule"},{"type":"clause","id":"sec-exports-static-semantics-isconstantdeclaration","aoid":null,"title":"Static Semantics: IsConstantDeclaration","titleHTML":"Static Semantics: IsConstantDeclaration","number":"15.2.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsConstantDeclaration"},{"type":"clause","id":"sec-exports-static-semantics-lexicallyscopeddeclarations","aoid":null,"title":"Static Semantics: LexicallyScopedDeclarations","titleHTML":"Static Semantics: LexicallyScopedDeclarations","number":"15.2.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: LexicallyScopedDeclarations"},{"type":"clause","id":"sec-exports-static-semantics-modulerequests","aoid":null,"title":"Static Semantics: ModuleRequests","titleHTML":"Static Semantics: ModuleRequests","number":"15.2.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ModuleRequests"},{"type":"clause","id":"sec-static-semantics-referencedbindings","aoid":null,"title":"Static Semantics: ReferencedBindings","titleHTML":"Static Semantics: ReferencedBindings","number":"15.2.3.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: ReferencedBindings"},{"type":"clause","id":"sec-exports-runtime-semantics-evaluation","aoid":null,"title":"Runtime Semantics: Evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"15.2.3.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_358"],"key":"Runtime Semantics: Evaluation"},{"type":"clause","id":"sec-exports","aoid":null,"title":"Exports","titleHTML":"Exports","number":"15.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_239"],"key":"Exports"},{"type":"clause","id":"sec-modules","aoid":null,"title":"Modules","titleHTML":"Modules","number":"15.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Modules"},{"type":"clause","id":"sec-ecmascript-language-scripts-and-modules","aoid":null,"title":"ECMAScript Language: Scripts and Modules","titleHTML":"ECMAScript Language: Scripts and Modules","number":"15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ECMAScript Language: Scripts and Modules"},{"type":"term","term":"early error","refId":"sec-error-handling-and-language-extensions","referencingIds":["_ref_888","_ref_890","_ref_932","_ref_933","_ref_934","_ref_935","_ref_936","_ref_2016","_ref_4063","_ref_4380","_ref_4383","_ref_4399","_ref_4400","_ref_4579","_ref_4580","_ref_4749","_ref_4751","_ref_4806","_ref_4807","_ref_4808","_ref_4809","_ref_5013","_ref_8618","_ref_8620","_ref_8622","_ref_8735","_ref_8737"],"id":"early-error","namespace":"https://tc39.github.io/ecma262/","location":"","key":"early error"},{"type":"op","aoid":"HostReportErrors","refId":"sec-host-report-errors","location":"","referencingIds":[],"key":"HostReportErrors"},{"type":"clause","id":"sec-host-report-errors","aoid":"HostReportErrors","title":"HostReportErrors ( errorList )","titleHTML":"HostReportErrors ( <var>errorList</var> )","number":"16.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2219","_ref_4440","_ref_4681"],"key":"HostReportErrors ( errorList )"},{"type":"clause","id":"sec-forbidden-extensions","aoid":null,"title":"Forbidden Extensions","titleHTML":"Forbidden Extensions","number":"16.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2","_ref_384","_ref_385"],"key":"Forbidden Extensions"},{"type":"clause","id":"sec-error-handling-and-language-extensions","aoid":null,"title":"Error Handling and Language Extensions","titleHTML":"Error Handling and Language Extensions","number":"16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_13","_ref_412"],"key":"Error Handling and Language Extensions"},{"type":"clause","id":"sec-ecmascript-standard-built-in-objects","aoid":null,"title":"ECMAScript Standard Built-in Objects","titleHTML":"ECMAScript Standard Built-in Objects","number":"17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_154"],"key":"ECMAScript Standard Built-in Objects"},{"type":"term","term":"global object","refId":"sec-global-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"global object"},{"type":"clause","id":"sec-value-properties-of-the-global-object-infinity","aoid":null,"title":"Infinity","titleHTML":"Infinity","number":"18.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Infinity"},{"type":"clause","id":"sec-value-properties-of-the-global-object-nan","aoid":null,"title":"NaN","titleHTML":"NaN","number":"18.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"NaN"},{"type":"clause","id":"sec-undefined","aoid":null,"title":"undefined","titleHTML":"undefined","number":"18.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"undefined"},{"type":"clause","id":"sec-value-properties-of-the-global-object","aoid":null,"title":"Value Properties of the Global Object","titleHTML":"Value Properties of the Global Object","number":"18.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Value Properties of the Global Object"},{"type":"term","term":"%eval%","refId":"sec-eval-x","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%eval%"},{"type":"clause","id":"sec-performeval-rules-outside-functions","aoid":null,"title":"Additional Early Error Rules for Eval Outside Functions","titleHTML":"Additional Early Error Rules for Eval Outside Functions","number":"18.2.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_409"],"key":"Additional Early Error Rules for Eval Outside Functions"},{"type":"clause","id":"sec-performeval-rules-outside-methods","aoid":null,"title":"Additional Early Error Rules for Eval Outside Methods","titleHTML":"Additional Early Error Rules for Eval Outside Methods","number":"18.2.1.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_410"],"key":"Additional Early Error Rules for Eval Outside Methods"},{"type":"clause","id":"sec-performeval-rules-outside-constructors","aoid":null,"title":"Additional Early Error Rules for Eval Outside Constructor Methods","titleHTML":"Additional Early Error Rules for Eval Outside Constructor Methods","number":"18.2.1.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_411"],"key":"Additional Early Error Rules for Eval Outside Constructor Methods"},{"type":"op","aoid":"PerformEval","refId":"sec-performeval","location":"","referencingIds":[],"key":"PerformEval"},{"type":"clause","id":"sec-performeval","aoid":"PerformEval","title":"Runtime Semantics: PerformEval ( x, evalRealm, strictCaller, direct )","titleHTML":"Runtime Semantics: PerformEval ( <var>x</var>, <var>evalRealm</var>, <var>strictCaller</var>, <var>direct</var> )","number":"18.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_360","_ref_361","_ref_3301","_ref_4800","_ref_4829","_ref_4832","_ref_4835"],"key":"Runtime Semantics: PerformEval ( x, evalRealm, strictCaller, direct )"},{"type":"op","aoid":"HostEnsureCanCompileStrings","refId":"sec-hostensurecancompilestrings","location":"","referencingIds":[],"key":"HostEnsureCanCompileStrings"},{"type":"clause","id":"sec-hostensurecancompilestrings","aoid":"HostEnsureCanCompileStrings","title":"HostEnsureCanCompileStrings ( callerRealm, calleeRealm )","titleHTML":"HostEnsureCanCompileStrings ( <var>callerRealm</var>, <var>calleeRealm</var> )","number":"18.2.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3300","_ref_4799","_ref_5004"],"key":"HostEnsureCanCompileStrings ( callerRealm, calleeRealm )"},{"type":"op","aoid":"EvalDeclarationInstantiation","refId":"sec-evaldeclarationinstantiation","location":"","referencingIds":[],"key":"EvalDeclarationInstantiation"},{"type":"clause","id":"sec-evaldeclarationinstantiation","aoid":"EvalDeclarationInstantiation","title":"Runtime Semantics: EvalDeclarationInstantiation ( body, varEnv, lexEnv, strict )","titleHTML":"Runtime Semantics: EvalDeclarationInstantiation ( <var>body</var>, <var>varEnv</var>, <var>lexEnv</var>, <var>strict</var> )","number":"18.2.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_760","_ref_831","_ref_4820","_ref_8751"],"key":"Runtime Semantics: EvalDeclarationInstantiation ( body, varEnv, lexEnv, strict )"},{"type":"clause","id":"sec-eval-x","aoid":null,"title":"eval ( x )","titleHTML":"eval ( <var>x</var> )","number":"18.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_73","_ref_752","_ref_790","_ref_1065","_ref_3297"],"key":"eval ( x )"},{"type":"term","term":"%isFinite%","refId":"sec-isfinite-number","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%isFinite%"},{"type":"clause","id":"sec-isfinite-number","aoid":null,"title":"isFinite ( number )","titleHTML":"isFinite ( <var>number</var> )","number":"18.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_82","_ref_1091"],"key":"isFinite ( number )"},{"type":"term","term":"%isNaN%","refId":"sec-isnan-number","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%isNaN%"},{"type":"clause","id":"sec-isnan-number","aoid":null,"title":"isNaN ( number )","titleHTML":"isNaN ( <var>number</var> )","number":"18.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_83","_ref_498","_ref_1092"],"key":"isNaN ( number )"},{"type":"term","term":"%parseFloat%","refId":"sec-parsefloat-string","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%parseFloat%"},{"type":"clause","id":"sec-parsefloat-string","aoid":null,"title":"parseFloat ( string )","titleHTML":"parseFloat ( <var>string</var> )","number":"18.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_93","_ref_499","_ref_1123"],"key":"parseFloat ( string )"},{"type":"term","term":"%parseInt%","refId":"sec-parseint-string-radix","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%parseInt%"},{"type":"clause","id":"sec-parseint-string-radix","aoid":null,"title":"parseInt ( string, radix )","titleHTML":"parseInt ( <var>string</var>, <var>radix</var> )","number":"18.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_94","_ref_500","_ref_1124"],"key":"parseInt ( string, radix )"},{"type":"production","id":"prod-uri","name":"uri","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"uri"},{"type":"production","id":"prod-uriCharacters","name":"uriCharacters","referencingIds":["_ref_14320","_ref_14322"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"uriCharacters"},{"type":"production","id":"prod-uriCharacter","name":"uriCharacter","referencingIds":["_ref_14321"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"uriCharacter"},{"type":"production","id":"prod-uriReserved","name":"uriReserved","referencingIds":["_ref_14323","_ref_14331","_ref_14332"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"uriReserved"},{"type":"production","id":"prod-uriUnescaped","name":"uriUnescaped","referencingIds":["_ref_14324","_ref_14333","_ref_14334"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"uriUnescaped"},{"type":"production","id":"prod-uriEscaped","name":"uriEscaped","referencingIds":["_ref_14325"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"uriEscaped"},{"type":"production","id":"prod-uriAlpha","name":"uriAlpha","referencingIds":["_ref_14326"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"uriAlpha"},{"type":"production","id":"prod-uriMark","name":"uriMark","referencingIds":["_ref_14328"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"uriMark"},{"type":"op","aoid":"Encode","refId":"sec-encode","location":"","referencingIds":[],"key":"Encode"},{"type":"clause","id":"sec-encode","aoid":"Encode","title":"Runtime Semantics: Encode ( string, unescapedSet )","titleHTML":"Runtime Semantics: Encode ( <var>string</var>, <var>unescapedSet</var> )","number":"18.2.6.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4882","_ref_4884"],"key":"Runtime Semantics: Encode ( string, unescapedSet )"},{"type":"table","id":"table-43","number":46,"caption":"Table 46 (Informative): UTF-8 Encodings","referencingIds":["_ref_426"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 46 (Informative): UTF-8 Encodings"},{"type":"op","aoid":"Decode","refId":"sec-decode","location":"","referencingIds":[],"key":"Decode"},{"type":"clause","id":"sec-decode","aoid":"Decode","title":"Runtime Semantics: Decode ( string, reservedSet )","titleHTML":"Runtime Semantics: Decode ( <var>string</var>, <var>reservedSet</var> )","number":"18.2.6.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4878","_ref_4880"],"key":"Runtime Semantics: Decode ( string, reservedSet )"},{"type":"clause","id":"sec-uri-syntax-and-semantics","aoid":null,"title":"URI Syntax and Semantics","titleHTML":"URI Syntax and Semantics","number":"18.2.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"URI Syntax and Semantics"},{"type":"term","term":"%decodeURI%","refId":"sec-decodeuri-encodeduri","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%decodeURI%"},{"type":"clause","id":"sec-decodeuri-encodeduri","aoid":null,"title":"decodeURI ( encodedURI )","titleHTML":"decodeURI ( <var>encodedURI</var> )","number":"18.2.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_68","_ref_418","_ref_1056"],"key":"decodeURI ( encodedURI )"},{"type":"term","term":"%decodeURIComponent%","refId":"sec-decodeuricomponent-encodeduricomponent","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%decodeURIComponent%"},{"type":"clause","id":"sec-decodeuricomponent-encodeduricomponent","aoid":null,"title":"decodeURIComponent ( encodedURIComponent )","titleHTML":"decodeURIComponent ( <var>encodedURIComponent</var> )","number":"18.2.6.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_69","_ref_419","_ref_1057"],"key":"decodeURIComponent ( encodedURIComponent )"},{"type":"term","term":"%encodeURI%","refId":"sec-encodeuri-uri","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%encodeURI%"},{"type":"clause","id":"sec-encodeuri-uri","aoid":null,"title":"encodeURI ( uri )","titleHTML":"encodeURI ( <var>uri</var> )","number":"18.2.6.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_70","_ref_420","_ref_1058"],"key":"encodeURI ( uri )"},{"type":"term","term":"%encodeURIComponent%","refId":"sec-encodeuricomponent-uricomponent","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%encodeURIComponent%"},{"type":"clause","id":"sec-encodeuricomponent-uricomponent","aoid":null,"title":"encodeURIComponent ( uriComponent )","titleHTML":"encodeURIComponent ( <var>uriComponent</var> )","number":"18.2.6.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_71","_ref_421","_ref_1059"],"key":"encodeURIComponent ( uriComponent )"},{"type":"clause","id":"sec-uri-handling-functions","aoid":null,"title":"URI Handling Functions","titleHTML":"URI Handling Functions","number":"18.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"URI Handling Functions"},{"type":"clause","id":"sec-function-properties-of-the-global-object","aoid":null,"title":"Function Properties of the Global Object","titleHTML":"Function Properties of the Global Object","number":"18.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_174"],"key":"Function Properties of the Global Object"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-array","aoid":null,"title":"Array ( . . . )","titleHTML":"Array ( . . . )","number":"18.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-arraybuffer","aoid":null,"title":"ArrayBuffer ( . . . )","titleHTML":"ArrayBuffer ( . . . )","number":"18.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ArrayBuffer ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-boolean","aoid":null,"title":"Boolean ( . . . )","titleHTML":"Boolean ( . . . )","number":"18.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Boolean ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-dataview","aoid":null,"title":"DataView ( . . . )","titleHTML":"DataView ( . . . )","number":"18.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-date","aoid":null,"title":"Date ( . . . )","titleHTML":"Date ( . . . )","number":"18.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-error","aoid":null,"title":"Error ( . . . )","titleHTML":"Error ( . . . )","number":"18.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Error ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-evalerror","aoid":null,"title":"EvalError ( . . . )","titleHTML":"EvalError ( . . . )","number":"18.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"EvalError ( . . . )"},{"type":"clause","id":"sec-float32array","aoid":null,"title":"Float32Array ( . . . )","titleHTML":"Float32Array ( . . . )","number":"18.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Float32Array ( . . . )"},{"type":"clause","id":"sec-float64array","aoid":null,"title":"Float64Array ( . . . )","titleHTML":"Float64Array ( . . . )","number":"18.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Float64Array ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-function","aoid":null,"title":"Function ( . . . )","titleHTML":"Function ( . . . )","number":"18.3.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function ( . . . )"},{"type":"clause","id":"sec-int8array","aoid":null,"title":"Int8Array ( . . . )","titleHTML":"Int8Array ( . . . )","number":"18.3.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Int8Array ( . . . )"},{"type":"clause","id":"sec-int16array","aoid":null,"title":"Int16Array ( . . . )","titleHTML":"Int16Array ( . . . )","number":"18.3.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Int16Array ( . . . )"},{"type":"clause","id":"sec-int32array","aoid":null,"title":"Int32Array ( . . . )","titleHTML":"Int32Array ( . . . )","number":"18.3.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Int32Array ( . . . )"},{"type":"clause","id":"sec-map","aoid":null,"title":"Map ( . . . )","titleHTML":"Map ( . . . )","number":"18.3.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-number","aoid":null,"title":"Number ( . . . )","titleHTML":"Number ( . . . )","number":"18.3.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-object","aoid":null,"title":"Object ( . . . )","titleHTML":"Object ( . . . )","number":"18.3.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-promise","aoid":null,"title":"Promise ( . . . )","titleHTML":"Promise ( . . . )","number":"18.3.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Promise ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-proxy","aoid":null,"title":"Proxy ( . . . )","titleHTML":"Proxy ( . . . )","number":"18.3.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Proxy ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-rangeerror","aoid":null,"title":"RangeError ( . . . )","titleHTML":"RangeError ( . . . )","number":"18.3.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RangeError ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-referenceerror","aoid":null,"title":"ReferenceError ( . . . )","titleHTML":"ReferenceError ( . . . )","number":"18.3.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ReferenceError ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-regexp","aoid":null,"title":"RegExp ( . . . )","titleHTML":"RegExp ( . . . )","number":"18.3.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RegExp ( . . . )"},{"type":"clause","id":"sec-set","aoid":null,"title":"Set ( . . . )","titleHTML":"Set ( . . . )","number":"18.3.22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-sharedarraybuffer","aoid":null,"title":"SharedArrayBuffer ( . . . )","titleHTML":"SharedArrayBuffer ( . . . )","number":"18.3.23","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SharedArrayBuffer ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-string","aoid":null,"title":"String ( . . . )","titleHTML":"String ( . . . )","number":"18.3.24","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-symbol","aoid":null,"title":"Symbol ( . . . )","titleHTML":"Symbol ( . . . )","number":"18.3.25","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-syntaxerror","aoid":null,"title":"SyntaxError ( . . . )","titleHTML":"SyntaxError ( . . . )","number":"18.3.26","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SyntaxError ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-typeerror","aoid":null,"title":"TypeError ( . . . )","titleHTML":"TypeError ( . . . )","number":"18.3.27","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"TypeError ( . . . )"},{"type":"clause","id":"sec-uint8array","aoid":null,"title":"Uint8Array ( . . . )","titleHTML":"Uint8Array ( . . . )","number":"18.3.28","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Uint8Array ( . . . )"},{"type":"clause","id":"sec-uint8clampedarray","aoid":null,"title":"Uint8ClampedArray ( . . . )","titleHTML":"Uint8ClampedArray ( . . . )","number":"18.3.29","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Uint8ClampedArray ( . . . )"},{"type":"clause","id":"sec-uint16array","aoid":null,"title":"Uint16Array ( . . . )","titleHTML":"Uint16Array ( . . . )","number":"18.3.30","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Uint16Array ( . . . )"},{"type":"clause","id":"sec-uint32array","aoid":null,"title":"Uint32Array ( . . . )","titleHTML":"Uint32Array ( . . . )","number":"18.3.31","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Uint32Array ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-urierror","aoid":null,"title":"URIError ( . . . )","titleHTML":"URIError ( . . . )","number":"18.3.32","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"URIError ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-weakmap","aoid":null,"title":"WeakMap ( . . . )","titleHTML":"WeakMap ( . . . )","number":"18.3.33","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakMap ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object-weakset","aoid":null,"title":"WeakSet ( . . . )","titleHTML":"WeakSet ( . . . )","number":"18.3.34","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakSet ( . . . )"},{"type":"clause","id":"sec-constructor-properties-of-the-global-object","aoid":null,"title":"Constructor Properties of the Global Object","titleHTML":"Constructor Properties of the Global Object","number":"18.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_175"],"key":"Constructor Properties of the Global Object"},{"type":"clause","id":"sec-atomics","aoid":null,"title":"Atomics","titleHTML":"Atomics","number":"18.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics"},{"type":"clause","id":"sec-json","aoid":null,"title":"JSON","titleHTML":"JSON","number":"18.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"JSON"},{"type":"clause","id":"sec-math","aoid":null,"title":"Math","titleHTML":"Math","number":"18.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math"},{"type":"clause","id":"sec-reflect","aoid":null,"title":"Reflect","titleHTML":"Reflect","number":"18.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect"},{"type":"clause","id":"sec-other-properties-of-the-global-object","aoid":null,"title":"Other Properties of the Global Object","titleHTML":"Other Properties of the Global Object","number":"18.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_176"],"key":"Other Properties of the Global Object"},{"type":"clause","id":"sec-global-object","aoid":null,"title":"The Global Object","titleHTML":"The Global Object","number":"18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_160","_ref_163","_ref_173","_ref_857","_ref_1806","_ref_1808","_ref_1914","_ref_1919","_ref_1921","_ref_1927","_ref_1930","_ref_1933","_ref_1942","_ref_1944","_ref_1946","_ref_1971","_ref_1973","_ref_1974","_ref_1976","_ref_1999","_ref_2066","_ref_2158","_ref_2196","_ref_2197","_ref_2198","_ref_2199","_ref_2202","_ref_2421","_ref_4428","_ref_4429","_ref_4433","_ref_4435","_ref_4767","_ref_4768","_ref_4851","_ref_4886","_ref_4990","_ref_5042","_ref_5061","_ref_5079","_ref_5097","_ref_5134","_ref_5171","_ref_5188","_ref_5191","_ref_5231","_ref_5406","_ref_5753","_ref_6085","_ref_6317","_ref_6822","_ref_7149","_ref_7235","_ref_7297","_ref_7331","_ref_7435","_ref_7481","_ref_7524","_ref_7566","_ref_7714","_ref_8155","_ref_8339","_ref_8373","_ref_8593","_ref_8601","_ref_8608","_ref_8645","_ref_8650"],"key":"The Global Object"},{"type":"term","term":"%Object%","refId":"sec-object-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Object%"},{"type":"clause","id":"sec-object-value","aoid":null,"title":"Object ( [ value ] )","titleHTML":"Object ( [ <var>value</var> ] )","number":"19.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object ( [ value ] )"},{"type":"clause","id":"sec-object-constructor","aoid":null,"title":"The Object Constructor","titleHTML":"The Object Constructor","number":"19.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_89","_ref_445","_ref_1112","_ref_1116","_ref_4972"],"key":"The Object Constructor"},{"type":"clause","id":"sec-object.assign","aoid":null,"title":"Object.assign ( target, ...sources )","titleHTML":"Object.assign ( <var>target</var>, ...<var>sources</var> )","number":"19.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.assign ( target, ...sources )"},{"type":"clause","id":"sec-object.create","aoid":null,"title":"Object.create ( O, Properties )","titleHTML":"Object.create ( <var>O</var>, <var>Properties</var> )","number":"19.1.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.create ( O, Properties )"},{"type":"op","aoid":"ObjectDefineProperties","refId":"sec-objectdefineproperties","location":"","referencingIds":[],"key":"ObjectDefineProperties"},{"type":"clause","id":"sec-objectdefineproperties","aoid":"ObjectDefineProperties","title":"Runtime Semantics: ObjectDefineProperties ( O, Properties )","titleHTML":"Runtime Semantics: ObjectDefineProperties ( <var>O</var>, <var>Properties</var> )","number":"19.1.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4904","_ref_4905"],"key":"Runtime Semantics: ObjectDefineProperties ( O, Properties )"},{"type":"clause","id":"sec-object.defineproperties","aoid":null,"title":"Object.defineProperties ( O, Properties )","titleHTML":"Object.defineProperties ( <var>O</var>, <var>Properties</var> )","number":"19.1.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.defineProperties ( O, Properties )"},{"type":"clause","id":"sec-object.defineproperty","aoid":null,"title":"Object.defineProperty ( O, P, Attributes )","titleHTML":"Object.defineProperty ( <var>O</var>, <var>P</var>, <var>Attributes</var> )","number":"19.1.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.defineProperty ( O, P, Attributes )"},{"type":"clause","id":"sec-object.entries","aoid":null,"title":"Object.entries ( O )","titleHTML":"Object.entries ( <var>O</var> )","number":"19.1.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.entries ( O )"},{"type":"clause","id":"sec-object.freeze","aoid":null,"title":"Object.freeze ( O )","titleHTML":"Object.freeze ( <var>O</var> )","number":"19.1.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_834"],"key":"Object.freeze ( O )"},{"type":"clause","id":"sec-create-data-property-on-object-functions","aoid":null,"title":"CreateDataPropertyOnObject Functions","titleHTML":"CreateDataPropertyOnObject Functions","number":"19.1.2.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_468"],"key":"CreateDataPropertyOnObject Functions"},{"type":"clause","id":"sec-object.fromentries","aoid":null,"title":"Object.fromEntries ( iterable )","titleHTML":"Object.fromEntries ( <var>iterable</var> )","number":"19.1.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.fromEntries ( iterable )"},{"type":"clause","id":"sec-object.getownpropertydescriptor","aoid":null,"title":"Object.getOwnPropertyDescriptor ( O, P )","titleHTML":"Object.getOwnPropertyDescriptor ( <var>O</var>, <var>P</var> )","number":"19.1.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_835"],"key":"Object.getOwnPropertyDescriptor ( O, P )"},{"type":"clause","id":"sec-object.getownpropertydescriptors","aoid":null,"title":"Object.getOwnPropertyDescriptors ( O )","titleHTML":"Object.getOwnPropertyDescriptors ( <var>O</var> )","number":"19.1.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.getOwnPropertyDescriptors ( O )"},{"type":"clause","id":"sec-object.getownpropertynames","aoid":null,"title":"Object.getOwnPropertyNames ( O )","titleHTML":"Object.getOwnPropertyNames ( <var>O</var> )","number":"19.1.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_836"],"key":"Object.getOwnPropertyNames ( O )"},{"type":"op","aoid":"GetOwnPropertyKeys","refId":"sec-getownpropertykeys","location":"","referencingIds":[],"key":"GetOwnPropertyKeys"},{"type":"clause","id":"sec-getownpropertykeys","aoid":"GetOwnPropertyKeys","title":"Runtime Semantics: GetOwnPropertyKeys ( O, type )","titleHTML":"Runtime Semantics: GetOwnPropertyKeys ( <var>O</var>, <var>type</var> )","number":"19.1.2.11.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4943","_ref_4944"],"key":"Runtime Semantics: GetOwnPropertyKeys ( O, type )"},{"type":"clause","id":"sec-object.getownpropertysymbols","aoid":null,"title":"Object.getOwnPropertySymbols ( O )","titleHTML":"Object.getOwnPropertySymbols ( <var>O</var> )","number":"19.1.2.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.getOwnPropertySymbols ( O )"},{"type":"clause","id":"sec-object.getprototypeof","aoid":null,"title":"Object.getPrototypeOf ( O )","titleHTML":"Object.getPrototypeOf ( <var>O</var> )","number":"19.1.2.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_837"],"key":"Object.getPrototypeOf ( O )"},{"type":"clause","id":"sec-object.is","aoid":null,"title":"Object.is ( value1, value2 )","titleHTML":"Object.is ( <var>value1</var>, <var>value2</var> )","number":"19.1.2.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.is ( value1, value2 )"},{"type":"clause","id":"sec-object.isextensible","aoid":null,"title":"Object.isExtensible ( O )","titleHTML":"Object.isExtensible ( <var>O</var> )","number":"19.1.2.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_838"],"key":"Object.isExtensible ( O )"},{"type":"clause","id":"sec-object.isfrozen","aoid":null,"title":"Object.isFrozen ( O )","titleHTML":"Object.isFrozen ( <var>O</var> )","number":"19.1.2.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_839"],"key":"Object.isFrozen ( O )"},{"type":"clause","id":"sec-object.issealed","aoid":null,"title":"Object.isSealed ( O )","titleHTML":"Object.isSealed ( <var>O</var> )","number":"19.1.2.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_840"],"key":"Object.isSealed ( O )"},{"type":"clause","id":"sec-object.keys","aoid":null,"title":"Object.keys ( O )","titleHTML":"Object.keys ( <var>O</var> )","number":"19.1.2.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_841"],"key":"Object.keys ( O )"},{"type":"clause","id":"sec-object.preventextensions","aoid":null,"title":"Object.preventExtensions ( O )","titleHTML":"Object.preventExtensions ( <var>O</var> )","number":"19.1.2.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_842"],"key":"Object.preventExtensions ( O )"},{"type":"clause","id":"sec-object.prototype","aoid":null,"title":"Object.prototype","titleHTML":"Object.prototype","number":"19.1.2.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype"},{"type":"clause","id":"sec-object.seal","aoid":null,"title":"Object.seal ( O )","titleHTML":"Object.seal ( <var>O</var> )","number":"19.1.2.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_843"],"key":"Object.seal ( O )"},{"type":"clause","id":"sec-object.setprototypeof","aoid":null,"title":"Object.setPrototypeOf ( O, proto )","titleHTML":"Object.setPrototypeOf ( <var>O</var>, <var>proto</var> )","number":"19.1.2.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.setPrototypeOf ( O, proto )"},{"type":"clause","id":"sec-object.values","aoid":null,"title":"Object.values ( O )","titleHTML":"Object.values ( <var>O</var> )","number":"19.1.2.22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.values ( O )"},{"type":"clause","id":"sec-properties-of-the-object-constructor","aoid":null,"title":"Properties of the Object Constructor","titleHTML":"Properties of the Object Constructor","number":"19.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Object Constructor"},{"type":"term","term":"%ObjectPrototype%","refId":"sec-properties-of-the-object-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ObjectPrototype%"},{"type":"clause","id":"sec-object.prototype.constructor","aoid":null,"title":"Object.prototype.constructor","titleHTML":"Object.prototype.constructor","number":"19.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype.constructor"},{"type":"clause","id":"sec-object.prototype.hasownproperty","aoid":null,"title":"Object.prototype.hasOwnProperty ( V )","titleHTML":"Object.prototype.hasOwnProperty ( <var>V</var> )","number":"19.1.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype.hasOwnProperty ( V )"},{"type":"clause","id":"sec-object.prototype.isprototypeof","aoid":null,"title":"Object.prototype.isPrototypeOf ( V )","titleHTML":"Object.prototype.isPrototypeOf ( <var>V</var> )","number":"19.1.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype.isPrototypeOf ( V )"},{"type":"clause","id":"sec-object.prototype.propertyisenumerable","aoid":null,"title":"Object.prototype.propertyIsEnumerable ( V )","titleHTML":"Object.prototype.propertyIsEnumerable ( <var>V</var> )","number":"19.1.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype.propertyIsEnumerable ( V )"},{"type":"clause","id":"sec-object.prototype.tolocalestring","aoid":null,"title":"Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )","titleHTML":"Object.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )","number":"19.1.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"},{"type":"term","term":"%ObjProto_toString%","refId":"sec-object.prototype.tostring","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ObjProto_toString%"},{"type":"clause","id":"sec-object.prototype.tostring","aoid":null,"title":"Object.prototype.toString ( )","titleHTML":"Object.prototype.toString ( )","number":"19.1.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_32","_ref_91","_ref_216","_ref_497","_ref_1117","_ref_6749"],"key":"Object.prototype.toString ( )"},{"type":"term","term":"%ObjProto_valueOf%","refId":"sec-object.prototype.valueof","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ObjProto_valueOf%"},{"type":"clause","id":"sec-object.prototype.valueof","aoid":null,"title":"Object.prototype.valueOf ( )","titleHTML":"Object.prototype.valueOf ( )","number":"19.1.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_92","_ref_1120"],"key":"Object.prototype.valueOf ( )"},{"type":"clause","id":"sec-properties-of-the-object-prototype-object","aoid":null,"title":"Properties of the Object Prototype Object","titleHTML":"Properties of the Object Prototype Object","number":"19.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_90","_ref_401","_ref_1114","_ref_1119","_ref_1122","_ref_1353","_ref_1789","_ref_2084","_ref_2093","_ref_2536","_ref_2786","_ref_2800","_ref_3199","_ref_3201","_ref_3577","_ref_3707","_ref_4261","_ref_4891","_ref_4925","_ref_4939","_ref_4962","_ref_5034","_ref_5088","_ref_5116","_ref_5144","_ref_5193","_ref_5232","_ref_5471","_ref_5791","_ref_6118","_ref_6394","_ref_6865","_ref_7180","_ref_7255","_ref_7307","_ref_7347","_ref_7447","_ref_7490","_ref_7536","_ref_7567","_ref_7715","_ref_7722","_ref_7764","_ref_7818","_ref_7819","_ref_8248","_ref_8340","_ref_8382"],"key":"Properties of the Object Prototype Object"},{"type":"clause","id":"sec-properties-of-object-instances","aoid":null,"title":"Properties of Object Instances","titleHTML":"Properties of Object Instances","number":"19.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Object Instances"},{"type":"clause","id":"sec-object-objects","aoid":null,"title":"Object Objects","titleHTML":"Object Objects","number":"19.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object Objects"},{"type":"term","term":"%Function%","refId":"sec-function-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Function%"},{"type":"table","id":"table-dynamic-function-sourcetext-prefixes","number":47,"caption":"Table 47: Dynamic Function SourceText Prefixes","referencingIds":["_ref_471"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 47: Dynamic Function SourceText Prefixes"},{"type":"op","aoid":"CreateDynamicFunction","refId":"sec-createdynamicfunction","location":"","referencingIds":[],"key":"CreateDynamicFunction"},{"type":"clause","id":"sec-createdynamicfunction","aoid":"CreateDynamicFunction","title":"Runtime Semantics: CreateDynamicFunction ( constructor, newTarget, kind, args )","titleHTML":"Runtime Semantics: CreateDynamicFunction ( <var>constructor</var>, <var>newTarget</var>, <var>kind</var>, <var>args</var> )","number":"19.2.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_799","_ref_4995","_ref_7879","_ref_7898","_ref_8309"],"key":"Runtime Semantics: CreateDynamicFunction ( constructor, newTarget, kind, args )"},{"type":"clause","id":"sec-function-p1-p2-pn-body","aoid":null,"title":"Function ( p1, p2, … , pn, body )","titleHTML":"Function ( <var>p1</var>, <var>p2</var>, … , <var>pn</var>, <var>body</var> )","number":"19.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_262","_ref_690","_ref_696","_ref_716"],"key":"Function ( p1, p2, … , pn, body )"},{"type":"clause","id":"sec-function-constructor","aoid":null,"title":"The Function Constructor","titleHTML":"The Function Constructor","number":"19.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_77","_ref_439","_ref_1072","_ref_1076","_ref_5064","_ref_7883","_ref_7902","_ref_8313"],"key":"The Function Constructor"},{"type":"clause","id":"sec-function.length","aoid":null,"title":"Function.length","titleHTML":"Function.length","number":"19.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function.length"},{"type":"clause","id":"sec-function.prototype","aoid":null,"title":"Function.prototype","titleHTML":"Function.prototype","number":"19.2.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function.prototype"},{"type":"clause","id":"sec-properties-of-the-function-constructor","aoid":null,"title":"Properties of the Function Constructor","titleHTML":"Properties of the Function Constructor","number":"19.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Function Constructor"},{"type":"term","term":"%FunctionPrototype%","refId":"sec-properties-of-the-function-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%FunctionPrototype%"},{"type":"clause","id":"sec-function.prototype.apply","aoid":null,"title":"Function.prototype.apply ( thisArg, argArray )","titleHTML":"Function.prototype.apply ( <var>thisArg</var>, <var>argArray</var> )","number":"19.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_792"],"key":"Function.prototype.apply ( thisArg, argArray )"},{"type":"clause","id":"sec-function.prototype.bind","aoid":null,"title":"Function.prototype.bind ( thisArg, ...args )","titleHTML":"Function.prototype.bind ( <var>thisArg</var>, ...<var>args</var> )","number":"19.2.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_476","_ref_844"],"key":"Function.prototype.bind ( thisArg, ...args )"},{"type":"clause","id":"sec-function.prototype.call","aoid":null,"title":"Function.prototype.call ( thisArg, ...args )","titleHTML":"Function.prototype.call ( <var>thisArg</var>, ...<var>args</var> )","number":"19.2.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_793"],"key":"Function.prototype.call ( thisArg, ...args )"},{"type":"clause","id":"sec-function.prototype.constructor","aoid":null,"title":"Function.prototype.constructor","titleHTML":"Function.prototype.constructor","number":"19.2.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function.prototype.constructor"},{"type":"production","id":"prod-NativeFunction","name":"NativeFunction","referencingIds":["_ref_14350","_ref_14352"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NativeFunction"},{"type":"clause","id":"sec-function.prototype.tostring","aoid":null,"title":"Function.prototype.toString ( )","titleHTML":"Function.prototype.toString ( )","number":"19.2.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function.prototype.toString ( )"},{"type":"clause","id":"sec-function.prototype-@@hasinstance","aoid":null,"title":"Function.prototype [ @@hasInstance ] ( V )","titleHTML":"Function.prototype [ @@hasInstance ] ( <var>V</var> )","number":"19.2.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function.prototype [ @@hasInstance ] ( V )"},{"type":"clause","id":"sec-properties-of-the-function-prototype-object","aoid":null,"title":"Properties of the Function Prototype Object","titleHTML":"Properties of the Function Prototype Object","number":"19.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_400","_ref_1074","_ref_2089","_ref_2499","_ref_2597","_ref_2622","_ref_4091","_ref_4262","_ref_4266","_ref_4895","_ref_5029","_ref_5031","_ref_5075","_ref_5086","_ref_5100","_ref_5142","_ref_5178","_ref_5449","_ref_5763","_ref_6113","_ref_6349","_ref_6829","_ref_7174","_ref_7249","_ref_7305","_ref_7345","_ref_7441","_ref_7487","_ref_7534","_ref_7888","_ref_7907","_ref_8170","_ref_8318","_ref_8378","_ref_8629"],"key":"Properties of the Function Prototype Object"},{"type":"clause","id":"sec-function-instances-length","aoid":null,"title":"length","titleHTML":"length","number":"19.2.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_694","_ref_719","_ref_845"],"key":"length"},{"type":"clause","id":"sec-function-instances-name","aoid":null,"title":"name","titleHTML":"name","number":"19.2.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_695","_ref_700","_ref_720"],"key":"name"},{"type":"clause","id":"sec-function-instances-prototype","aoid":null,"title":"prototype","titleHTML":"prototype","number":"19.2.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"prototype"},{"type":"clause","id":"sec-function-instances","aoid":null,"title":"Function Instances","titleHTML":"Function Instances","number":"19.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function Instances"},{"type":"clause","id":"sec-hosthassourcetextavailable","aoid":null,"title":"HostHasSourceTextAvailable ( func )","titleHTML":"HostHasSourceTextAvailable ( <var>func</var> )","number":"19.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"HostHasSourceTextAvailable ( func )"},{"type":"clause","id":"sec-function-objects","aoid":null,"title":"Function Objects","titleHTML":"Function Objects","number":"19.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function Objects"},{"type":"term","term":"%Boolean%","refId":"sec-boolean-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Boolean%"},{"type":"clause","id":"sec-boolean-constructor-boolean-value","aoid":null,"title":"Boolean ( value )","titleHTML":"Boolean ( <var>value</var> )","number":"19.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Boolean ( value )"},{"type":"clause","id":"sec-boolean-constructor","aoid":null,"title":"The Boolean Constructor","titleHTML":"The Boolean Constructor","number":"19.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_64","_ref_432","_ref_1041","_ref_1045","_ref_5093"],"key":"The Boolean Constructor"},{"type":"clause","id":"sec-boolean.prototype","aoid":null,"title":"Boolean.prototype","titleHTML":"Boolean.prototype","number":"19.3.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Boolean.prototype"},{"type":"clause","id":"sec-properties-of-the-boolean-constructor","aoid":null,"title":"Properties of the Boolean Constructor","titleHTML":"Properties of the Boolean Constructor","number":"19.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Boolean Constructor"},{"type":"term","term":"%BooleanPrototype%","refId":"sec-properties-of-the-boolean-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%BooleanPrototype%"},{"type":"term","term":"thisBooleanValue","refId":"sec-properties-of-the-boolean-prototype-object","referencingIds":["_ref_5094","_ref_5095"],"id":"sec-thisbooleanvalue","namespace":"https://tc39.github.io/ecma262/","location":"","key":"thisBooleanValue"},{"type":"clause","id":"sec-boolean.prototype.constructor","aoid":null,"title":"Boolean.prototype.constructor","titleHTML":"Boolean.prototype.constructor","number":"19.3.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Boolean.prototype.constructor"},{"type":"clause","id":"sec-boolean.prototype.tostring","aoid":null,"title":"Boolean.prototype.toString ( )","titleHTML":"Boolean.prototype.toString ( )","number":"19.3.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Boolean.prototype.toString ( )"},{"type":"clause","id":"sec-boolean.prototype.valueof","aoid":null,"title":"Boolean.prototype.valueOf ( )","titleHTML":"Boolean.prototype.valueOf ( )","number":"19.3.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Boolean.prototype.valueOf ( )"},{"type":"clause","id":"sec-properties-of-the-boolean-prototype-object","aoid":null,"title":"Properties of the Boolean Prototype Object","titleHTML":"Properties of the Boolean Prototype Object","number":"19.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_65","_ref_1043","_ref_5087"],"key":"Properties of the Boolean Prototype Object"},{"type":"clause","id":"sec-properties-of-boolean-instances","aoid":null,"title":"Properties of Boolean Instances","titleHTML":"Properties of Boolean Instances","number":"19.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Boolean Instances"},{"type":"clause","id":"sec-boolean-objects","aoid":null,"title":"Boolean Objects","titleHTML":"Boolean Objects","number":"19.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_145"],"key":"Boolean Objects"},{"type":"term","term":"%Symbol%","refId":"sec-symbol-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Symbol%"},{"type":"clause","id":"sec-symbol-description","aoid":null,"title":"Symbol ( [ description ] )","titleHTML":"Symbol ( [ <var>description</var> ] )","number":"19.4.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol ( [ description ] )"},{"type":"clause","id":"sec-symbol-constructor","aoid":null,"title":"The Symbol Constructor","titleHTML":"The Symbol Constructor","number":"19.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_110","_ref_454","_ref_1171","_ref_1175","_ref_5121"],"key":"The Symbol Constructor"},{"type":"clause","id":"sec-symbol.asynciterator","aoid":null,"title":"Symbol.asyncIterator","titleHTML":"Symbol.asyncIterator","number":"19.4.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.asyncIterator"},{"type":"table","id":"table-44","number":48,"caption":"Table 48: GlobalSymbolRegistry Record Fields","referencingIds":["_ref_479"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 48: GlobalSymbolRegistry Record Fields"},{"type":"clause","id":"sec-symbol.for","aoid":null,"title":"Symbol.for ( key )","titleHTML":"Symbol.for ( <var>key</var> )","number":"19.4.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_483"],"key":"Symbol.for ( key )"},{"type":"clause","id":"sec-symbol.hasinstance","aoid":null,"title":"Symbol.hasInstance","titleHTML":"Symbol.hasInstance","number":"19.4.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.hasInstance"},{"type":"clause","id":"sec-symbol.isconcatspreadable","aoid":null,"title":"Symbol.isConcatSpreadable","titleHTML":"Symbol.isConcatSpreadable","number":"19.4.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.isConcatSpreadable"},{"type":"clause","id":"sec-symbol.iterator","aoid":null,"title":"Symbol.iterator","titleHTML":"Symbol.iterator","number":"19.4.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.iterator"},{"type":"clause","id":"sec-symbol.keyfor","aoid":null,"title":"Symbol.keyFor ( sym )","titleHTML":"Symbol.keyFor ( <var>sym</var> )","number":"19.4.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.keyFor ( sym )"},{"type":"clause","id":"sec-symbol.match","aoid":null,"title":"Symbol.match","titleHTML":"Symbol.match","number":"19.4.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.match"},{"type":"clause","id":"sec-symbol.prototype","aoid":null,"title":"Symbol.prototype","titleHTML":"Symbol.prototype","number":"19.4.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.prototype"},{"type":"clause","id":"sec-symbol.replace","aoid":null,"title":"Symbol.replace","titleHTML":"Symbol.replace","number":"19.4.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.replace"},{"type":"clause","id":"sec-symbol.search","aoid":null,"title":"Symbol.search","titleHTML":"Symbol.search","number":"19.4.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.search"},{"type":"clause","id":"sec-symbol.species","aoid":null,"title":"Symbol.species","titleHTML":"Symbol.species","number":"19.4.2.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.species"},{"type":"clause","id":"sec-symbol.split","aoid":null,"title":"Symbol.split","titleHTML":"Symbol.split","number":"19.4.2.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.split"},{"type":"clause","id":"sec-symbol.toprimitive","aoid":null,"title":"Symbol.toPrimitive","titleHTML":"Symbol.toPrimitive","number":"19.4.2.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.toPrimitive"},{"type":"clause","id":"sec-symbol.tostringtag","aoid":null,"title":"Symbol.toStringTag","titleHTML":"Symbol.toStringTag","number":"19.4.2.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.toStringTag"},{"type":"clause","id":"sec-symbol.unscopables","aoid":null,"title":"Symbol.unscopables","titleHTML":"Symbol.unscopables","number":"19.4.2.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.unscopables"},{"type":"clause","id":"sec-properties-of-the-symbol-constructor","aoid":null,"title":"Properties of the Symbol Constructor","titleHTML":"Properties of the Symbol Constructor","number":"19.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Symbol Constructor"},{"type":"term","term":"%SymbolPrototype%","refId":"sec-properties-of-the-symbol-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%SymbolPrototype%"},{"type":"term","term":"thisSymbolValue","refId":"sec-properties-of-the-symbol-prototype-object","referencingIds":["_ref_5123","_ref_5124","_ref_5131","_ref_5132"],"id":"sec-thissymbolvalue","namespace":"https://tc39.github.io/ecma262/","location":"","key":"thisSymbolValue"},{"type":"clause","id":"sec-symbol.prototype.constructor","aoid":null,"title":"Symbol.prototype.constructor","titleHTML":"Symbol.prototype.constructor","number":"19.4.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.prototype.constructor"},{"type":"clause","id":"sec-symbol.prototype.description","aoid":null,"title":"get Symbol.prototype.description","titleHTML":"get Symbol.prototype.description","number":"19.4.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get Symbol.prototype.description"},{"type":"op","aoid":"SymbolDescriptiveString","refId":"sec-symboldescriptivestring","location":"","referencingIds":[],"key":"SymbolDescriptiveString"},{"type":"clause","id":"sec-symboldescriptivestring","aoid":"SymbolDescriptiveString","title":"Runtime Semantics: SymbolDescriptiveString ( sym )","titleHTML":"Runtime Semantics: SymbolDescriptiveString ( <var>sym</var> )","number":"19.4.3.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5125","_ref_5758"],"key":"Runtime Semantics: SymbolDescriptiveString ( sym )"},{"type":"clause","id":"sec-symbol.prototype.tostring","aoid":null,"title":"Symbol.prototype.toString ( )","titleHTML":"Symbol.prototype.toString ( )","number":"19.4.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.prototype.toString ( )"},{"type":"clause","id":"sec-symbol.prototype.valueof","aoid":null,"title":"Symbol.prototype.valueOf ( )","titleHTML":"Symbol.prototype.valueOf ( )","number":"19.4.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.prototype.valueOf ( )"},{"type":"clause","id":"sec-symbol.prototype-@@toprimitive","aoid":null,"title":"Symbol.prototype [ @@toPrimitive ] ( hint )","titleHTML":"Symbol.prototype [ @@toPrimitive ] ( <var>hint</var> )","number":"19.4.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_133"],"key":"Symbol.prototype [ @@toPrimitive ] ( hint )"},{"type":"clause","id":"sec-symbol.prototype-@@tostringtag","aoid":null,"title":"Symbol.prototype [ @@toStringTag ]","titleHTML":"Symbol.prototype [ @@toStringTag ]","number":"19.4.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Symbol.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-symbol-prototype-object","aoid":null,"title":"Properties of the Symbol Prototype Object","titleHTML":"Properties of the Symbol Prototype Object","number":"19.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_111","_ref_1173","_ref_5115"],"key":"Properties of the Symbol Prototype Object"},{"type":"clause","id":"sec-properties-of-symbol-instances","aoid":null,"title":"Properties of Symbol Instances","titleHTML":"Properties of Symbol Instances","number":"19.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Symbol Instances"},{"type":"clause","id":"sec-symbol-objects","aoid":null,"title":"Symbol Objects","titleHTML":"Symbol Objects","number":"19.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_148"],"key":"Symbol Objects"},{"type":"term","term":"%Error%","refId":"sec-error-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Error%"},{"type":"clause","id":"sec-error-message","aoid":null,"title":"Error ( message )","titleHTML":"Error ( <var>message</var> )","number":"19.5.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Error ( message )"},{"type":"clause","id":"sec-error-constructor","aoid":null,"title":"The Error Constructor","titleHTML":"The Error Constructor","number":"19.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_72","_ref_435","_ref_1060","_ref_1064","_ref_5145","_ref_5163"],"key":"The Error Constructor"},{"type":"clause","id":"sec-error.prototype","aoid":null,"title":"Error.prototype","titleHTML":"Error.prototype","number":"19.5.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Error.prototype"},{"type":"clause","id":"sec-properties-of-the-error-constructor","aoid":null,"title":"Properties of the Error Constructor","titleHTML":"Properties of the Error Constructor","number":"19.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Error Constructor"},{"type":"term","term":"%ErrorPrototype%","refId":"sec-properties-of-the-error-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ErrorPrototype%"},{"type":"clause","id":"sec-error.prototype.constructor","aoid":null,"title":"Error.prototype.constructor","titleHTML":"Error.prototype.constructor","number":"19.5.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Error.prototype.constructor"},{"type":"clause","id":"sec-error.prototype.message","aoid":null,"title":"Error.prototype.message","titleHTML":"Error.prototype.message","number":"19.5.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Error.prototype.message"},{"type":"clause","id":"sec-error.prototype.name","aoid":null,"title":"Error.prototype.name","titleHTML":"Error.prototype.name","number":"19.5.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Error.prototype.name"},{"type":"clause","id":"sec-error.prototype.tostring","aoid":null,"title":"Error.prototype.toString ( )","titleHTML":"Error.prototype.toString ( )","number":"19.5.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Error.prototype.toString ( )"},{"type":"clause","id":"sec-properties-of-the-error-prototype-object","aoid":null,"title":"Properties of the Error Prototype Object","titleHTML":"Properties of the Error Prototype Object","number":"19.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1062","_ref_5143","_ref_5165"],"key":"Properties of the Error Prototype Object"},{"type":"clause","id":"sec-properties-of-error-instances","aoid":null,"title":"Properties of Error Instances","titleHTML":"Properties of Error Instances","number":"19.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Error Instances"},{"type":"clause","id":"sec-native-error-types-used-in-this-standard-evalerror","aoid":null,"title":"EvalError","titleHTML":"EvalError","number":"19.5.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_74","_ref_436"],"key":"EvalError"},{"type":"clause","id":"sec-native-error-types-used-in-this-standard-rangeerror","aoid":null,"title":"RangeError","titleHTML":"RangeError","number":"19.5.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_101","_ref_448"],"key":"RangeError"},{"type":"clause","id":"sec-native-error-types-used-in-this-standard-referenceerror","aoid":null,"title":"ReferenceError","titleHTML":"ReferenceError","number":"19.5.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_102","_ref_449"],"key":"ReferenceError"},{"type":"clause","id":"sec-native-error-types-used-in-this-standard-syntaxerror","aoid":null,"title":"SyntaxError","titleHTML":"SyntaxError","number":"19.5.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_112","_ref_455"],"key":"SyntaxError"},{"type":"clause","id":"sec-native-error-types-used-in-this-standard-typeerror","aoid":null,"title":"TypeError","titleHTML":"TypeError","number":"19.5.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_114","_ref_456"],"key":"TypeError"},{"type":"clause","id":"sec-native-error-types-used-in-this-standard-urierror","aoid":null,"title":"URIError","titleHTML":"URIError","number":"19.5.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_119","_ref_461"],"key":"URIError"},{"type":"clause","id":"sec-native-error-types-used-in-this-standard","aoid":null,"title":"Native Error Types Used in This Standard","titleHTML":"Native Error Types Used in This Standard","number":"19.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_493","_ref_494"],"key":"Native Error Types Used in This Standard"},{"type":"clause","id":"sec-nativeerror","aoid":null,"title":"NativeError ( message )","titleHTML":"NativeError ( <var>message</var> )","number":"19.5.6.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"NativeError ( message )"},{"type":"clause","id":"sec-nativeerror-constructors","aoid":null,"title":"The NativeError Constructors","titleHTML":"The <var>NativeError</var> Constructors","number":"19.5.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_496"],"key":"The NativeError Constructors"},{"type":"clause","id":"sec-nativeerror.prototype","aoid":null,"title":"NativeError.prototype","titleHTML":"NativeError.prototype","number":"19.5.6.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"NativeError.prototype"},{"type":"clause","id":"sec-properties-of-the-nativeerror-constructors","aoid":null,"title":"Properties of the NativeError Constructors","titleHTML":"Properties of the <var>NativeError</var> Constructors","number":"19.5.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_846"],"key":"Properties of the NativeError Constructors"},{"type":"clause","id":"sec-nativeerror.prototype.constructor","aoid":null,"title":"NativeError.prototype.constructor","titleHTML":"<var>NativeError</var>.prototype.constructor","number":"19.5.6.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"NativeError.prototype.constructor"},{"type":"clause","id":"sec-nativeerror.prototype.message","aoid":null,"title":"NativeError.prototype.message","titleHTML":"<var>NativeError</var>.prototype.message","number":"19.5.6.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"NativeError.prototype.message"},{"type":"clause","id":"sec-nativeerror.prototype.name","aoid":null,"title":"NativeError.prototype.name","titleHTML":"<var>NativeError</var>.prototype.name","number":"19.5.6.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"NativeError.prototype.name"},{"type":"clause","id":"sec-properties-of-the-nativeerror-prototype-objects","aoid":null,"title":"Properties of the NativeError Prototype Objects","titleHTML":"Properties of the <var>NativeError</var> Prototype Objects","number":"19.5.6.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_495"],"key":"Properties of the NativeError Prototype Objects"},{"type":"clause","id":"sec-properties-of-nativeerror-instances","aoid":null,"title":"Properties of NativeError Instances","titleHTML":"Properties of <var>NativeError</var> Instances","number":"19.5.6.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of NativeError Instances"},{"type":"clause","id":"sec-nativeerror-object-structure","aoid":null,"title":"NativeError Object Structure","titleHTML":"<var>NativeError</var> Object Structure","number":"19.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_492"],"key":"NativeError Object Structure"},{"type":"clause","id":"sec-error-objects","aoid":null,"title":"Error Objects","titleHTML":"Error Objects","number":"19.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Error Objects"},{"type":"clause","id":"sec-fundamental-objects","aoid":null,"title":"Fundamental Objects","titleHTML":"Fundamental Objects","number":"19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Fundamental Objects"},{"type":"term","term":"%Number%","refId":"sec-number-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Number%"},{"type":"clause","id":"sec-number-constructor-number-value","aoid":null,"title":"Number ( value )","titleHTML":"Number ( <var>value</var> )","number":"20.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6"],"key":"Number ( value )"},{"type":"clause","id":"sec-number-constructor","aoid":null,"title":"The Number Constructor","titleHTML":"The Number Constructor","number":"20.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_88","_ref_444","_ref_1107","_ref_1111","_ref_5199"],"key":"The Number Constructor"},{"type":"clause","id":"sec-number.epsilon","aoid":null,"title":"Number.EPSILON","titleHTML":"Number.EPSILON","number":"20.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.EPSILON"},{"type":"clause","id":"sec-number.isfinite","aoid":null,"title":"Number.isFinite ( number )","titleHTML":"Number.isFinite ( <var>number</var> )","number":"20.1.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.isFinite ( number )"},{"type":"clause","id":"sec-number.isinteger","aoid":null,"title":"Number.isInteger ( number )","titleHTML":"Number.isInteger ( <var>number</var> )","number":"20.1.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.isInteger ( number )"},{"type":"clause","id":"sec-number.isnan","aoid":null,"title":"Number.isNaN ( number )","titleHTML":"Number.isNaN ( <var>number</var> )","number":"20.1.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.isNaN ( number )"},{"type":"clause","id":"sec-number.issafeinteger","aoid":null,"title":"Number.isSafeInteger ( number )","titleHTML":"Number.isSafeInteger ( <var>number</var> )","number":"20.1.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.isSafeInteger ( number )"},{"type":"clause","id":"sec-number.max_safe_integer","aoid":null,"title":"Number.MAX_SAFE_INTEGER","titleHTML":"Number.MAX_SAFE_INTEGER","number":"20.1.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_508"],"key":"Number.MAX_SAFE_INTEGER"},{"type":"clause","id":"sec-number.max_value","aoid":null,"title":"Number.MAX_VALUE","titleHTML":"Number.MAX_VALUE","number":"20.1.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.MAX_VALUE"},{"type":"clause","id":"sec-number.min_safe_integer","aoid":null,"title":"Number.MIN_SAFE_INTEGER","titleHTML":"Number.MIN_SAFE_INTEGER","number":"20.1.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_507"],"key":"Number.MIN_SAFE_INTEGER"},{"type":"clause","id":"sec-number.min_value","aoid":null,"title":"Number.MIN_VALUE","titleHTML":"Number.MIN_VALUE","number":"20.1.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.MIN_VALUE"},{"type":"clause","id":"sec-number.nan","aoid":null,"title":"Number.NaN","titleHTML":"Number.NaN","number":"20.1.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.NaN"},{"type":"clause","id":"sec-number.negative_infinity","aoid":null,"title":"Number.NEGATIVE_INFINITY","titleHTML":"Number.NEGATIVE_INFINITY","number":"20.1.2.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.NEGATIVE_INFINITY"},{"type":"clause","id":"sec-number.parsefloat","aoid":null,"title":"Number.parseFloat ( string )","titleHTML":"Number.parseFloat ( <var>string</var> )","number":"20.1.2.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.parseFloat ( string )"},{"type":"clause","id":"sec-number.parseint","aoid":null,"title":"Number.parseInt ( string, radix )","titleHTML":"Number.parseInt ( <var>string</var>, <var>radix</var> )","number":"20.1.2.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.parseInt ( string, radix )"},{"type":"clause","id":"sec-number.positive_infinity","aoid":null,"title":"Number.POSITIVE_INFINITY","titleHTML":"Number.POSITIVE_INFINITY","number":"20.1.2.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.POSITIVE_INFINITY"},{"type":"clause","id":"sec-number.prototype","aoid":null,"title":"Number.prototype","titleHTML":"Number.prototype","number":"20.1.2.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.prototype"},{"type":"clause","id":"sec-properties-of-the-number-constructor","aoid":null,"title":"Properties of the Number Constructor","titleHTML":"Properties of the Number Constructor","number":"20.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Number Constructor"},{"type":"term","term":"%NumberPrototype%","refId":"sec-properties-of-the-number-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%NumberPrototype%"},{"type":"term","term":"thisNumberValue","refId":"sec-properties-of-the-number-prototype-object","referencingIds":["_ref_5198","_ref_5201","_ref_5208","_ref_5216","_ref_5227","_ref_5230"],"id":"sec-thisnumbervalue","namespace":"https://tc39.github.io/ecma262/","location":"","key":"thisNumberValue"},{"type":"clause","id":"sec-number.prototype.constructor","aoid":null,"title":"Number.prototype.constructor","titleHTML":"Number.prototype.constructor","number":"20.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.prototype.constructor"},{"type":"clause","id":"sec-number.prototype.toexponential","aoid":null,"title":"Number.prototype.toExponential ( fractionDigits )","titleHTML":"Number.prototype.toExponential ( <var>fractionDigits</var> )","number":"20.1.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.prototype.toExponential ( fractionDigits )"},{"type":"clause","id":"sec-number.prototype.tofixed","aoid":null,"title":"Number.prototype.toFixed ( fractionDigits )","titleHTML":"Number.prototype.toFixed ( <var>fractionDigits</var> )","number":"20.1.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.prototype.toFixed ( fractionDigits )"},{"type":"clause","id":"sec-number.prototype.tolocalestring","aoid":null,"title":"Number.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )","titleHTML":"Number.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )","number":"20.1.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"},{"type":"clause","id":"sec-number.prototype.toprecision","aoid":null,"title":"Number.prototype.toPrecision ( precision )","titleHTML":"Number.prototype.toPrecision ( <var>precision</var> )","number":"20.1.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.prototype.toPrecision ( precision )"},{"type":"clause","id":"sec-number.prototype.tostring","aoid":null,"title":"Number.prototype.toString ( [ radix ] )","titleHTML":"Number.prototype.toString ( [ <var>radix</var> ] )","number":"20.1.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.prototype.toString ( [ radix ] )"},{"type":"clause","id":"sec-number.prototype.valueof","aoid":null,"title":"Number.prototype.valueOf ( )","titleHTML":"Number.prototype.valueOf ( )","number":"20.1.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number.prototype.valueOf ( )"},{"type":"clause","id":"sec-properties-of-the-number-prototype-object","aoid":null,"title":"Properties of the Number Prototype Object","titleHTML":"Properties of the Number Prototype Object","number":"20.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1109","_ref_5192"],"key":"Properties of the Number Prototype Object"},{"type":"clause","id":"sec-properties-of-number-instances","aoid":null,"title":"Properties of Number Instances","titleHTML":"Properties of Number Instances","number":"20.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Number Instances"},{"type":"clause","id":"sec-number-objects","aoid":null,"title":"Number Objects","titleHTML":"Number Objects","number":"20.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_146"],"key":"Number Objects"},{"type":"term","term":"%Math%","refId":"sec-math-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Math%"},{"type":"clause","id":"sec-math.e","aoid":null,"title":"Math.E","titleHTML":"Math.E","number":"20.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.E"},{"type":"clause","id":"sec-math.ln10","aoid":null,"title":"Math.LN10","titleHTML":"Math.LN10","number":"20.2.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.LN10"},{"type":"clause","id":"sec-math.ln2","aoid":null,"title":"Math.LN2","titleHTML":"Math.LN2","number":"20.2.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.LN2"},{"type":"clause","id":"sec-math.log10e","aoid":null,"title":"Math.LOG10E","titleHTML":"Math.LOG10E","number":"20.2.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.LOG10E"},{"type":"clause","id":"sec-math.log2e","aoid":null,"title":"Math.LOG2E","titleHTML":"Math.LOG2E","number":"20.2.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.LOG2E"},{"type":"clause","id":"sec-math.pi","aoid":null,"title":"Math.PI","titleHTML":"Math.PI","number":"20.2.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.PI"},{"type":"clause","id":"sec-math.sqrt1_2","aoid":null,"title":"Math.SQRT1_2","titleHTML":"Math.SQRT1_2","number":"20.2.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.SQRT1_2"},{"type":"clause","id":"sec-math.sqrt2","aoid":null,"title":"Math.SQRT2","titleHTML":"Math.SQRT2","number":"20.2.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.SQRT2"},{"type":"clause","id":"sec-math-@@tostringtag","aoid":null,"title":"Math [ @@toStringTag ]","titleHTML":"Math [ @@toStringTag ]","number":"20.2.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math [ @@toStringTag ]"},{"type":"clause","id":"sec-value-properties-of-the-math-object","aoid":null,"title":"Value Properties of the Math Object","titleHTML":"Value Properties of the Math Object","number":"20.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Value Properties of the Math Object"},{"type":"clause","id":"sec-math.abs","aoid":null,"title":"Math.abs ( x )","titleHTML":"Math.abs ( <var>x</var> )","number":"20.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.abs ( x )"},{"type":"clause","id":"sec-math.acos","aoid":null,"title":"Math.acos ( x )","titleHTML":"Math.acos ( <var>x</var> )","number":"20.2.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.acos ( x )"},{"type":"clause","id":"sec-math.acosh","aoid":null,"title":"Math.acosh ( x )","titleHTML":"Math.acosh ( <var>x</var> )","number":"20.2.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.acosh ( x )"},{"type":"clause","id":"sec-math.asin","aoid":null,"title":"Math.asin ( x )","titleHTML":"Math.asin ( <var>x</var> )","number":"20.2.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.asin ( x )"},{"type":"clause","id":"sec-math.asinh","aoid":null,"title":"Math.asinh ( x )","titleHTML":"Math.asinh ( <var>x</var> )","number":"20.2.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.asinh ( x )"},{"type":"clause","id":"sec-math.atan","aoid":null,"title":"Math.atan ( x )","titleHTML":"Math.atan ( <var>x</var> )","number":"20.2.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.atan ( x )"},{"type":"clause","id":"sec-math.atanh","aoid":null,"title":"Math.atanh ( x )","titleHTML":"Math.atanh ( <var>x</var> )","number":"20.2.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.atanh ( x )"},{"type":"clause","id":"sec-math.atan2","aoid":null,"title":"Math.atan2 ( y, x )","titleHTML":"Math.atan2 ( <var>y</var>, <var>x</var> )","number":"20.2.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.atan2 ( y, x )"},{"type":"clause","id":"sec-math.cbrt","aoid":null,"title":"Math.cbrt ( x )","titleHTML":"Math.cbrt ( <var>x</var> )","number":"20.2.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.cbrt ( x )"},{"type":"clause","id":"sec-math.ceil","aoid":null,"title":"Math.ceil ( x )","titleHTML":"Math.ceil ( <var>x</var> )","number":"20.2.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.ceil ( x )"},{"type":"clause","id":"sec-math.clz32","aoid":null,"title":"Math.clz32 ( x )","titleHTML":"Math.clz32 ( <var>x</var> )","number":"20.2.2.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.clz32 ( x )"},{"type":"clause","id":"sec-math.cos","aoid":null,"title":"Math.cos ( x )","titleHTML":"Math.cos ( <var>x</var> )","number":"20.2.2.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.cos ( x )"},{"type":"clause","id":"sec-math.cosh","aoid":null,"title":"Math.cosh ( x )","titleHTML":"Math.cosh ( <var>x</var> )","number":"20.2.2.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.cosh ( x )"},{"type":"clause","id":"sec-math.exp","aoid":null,"title":"Math.exp ( x )","titleHTML":"Math.exp ( <var>x</var> )","number":"20.2.2.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.exp ( x )"},{"type":"clause","id":"sec-math.expm1","aoid":null,"title":"Math.expm1 ( x )","titleHTML":"Math.expm1 ( <var>x</var> )","number":"20.2.2.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.expm1 ( x )"},{"type":"clause","id":"sec-math.floor","aoid":null,"title":"Math.floor ( x )","titleHTML":"Math.floor ( <var>x</var> )","number":"20.2.2.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.floor ( x )"},{"type":"clause","id":"sec-math.fround","aoid":null,"title":"Math.fround ( x )","titleHTML":"Math.fround ( <var>x</var> )","number":"20.2.2.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.fround ( x )"},{"type":"clause","id":"sec-math.hypot","aoid":null,"title":"Math.hypot ( value1, value2, ...values )","titleHTML":"Math.hypot ( <var>value1</var>, <var>value2</var>, ...<var>values</var> )","number":"20.2.2.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.hypot ( value1, value2, ...values )"},{"type":"clause","id":"sec-math.imul","aoid":null,"title":"Math.imul ( x, y )","titleHTML":"Math.imul ( <var>x</var>, <var>y</var> )","number":"20.2.2.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.imul ( x, y )"},{"type":"clause","id":"sec-math.log","aoid":null,"title":"Math.log ( x )","titleHTML":"Math.log ( <var>x</var> )","number":"20.2.2.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.log ( x )"},{"type":"clause","id":"sec-math.log1p","aoid":null,"title":"Math.log1p ( x )","titleHTML":"Math.log1p ( <var>x</var> )","number":"20.2.2.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.log1p ( x )"},{"type":"clause","id":"sec-math.log10","aoid":null,"title":"Math.log10 ( x )","titleHTML":"Math.log10 ( <var>x</var> )","number":"20.2.2.22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.log10 ( x )"},{"type":"clause","id":"sec-math.log2","aoid":null,"title":"Math.log2 ( x )","titleHTML":"Math.log2 ( <var>x</var> )","number":"20.2.2.23","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.log2 ( x )"},{"type":"clause","id":"sec-math.max","aoid":null,"title":"Math.max ( value1, value2, ...values )","titleHTML":"Math.max ( <var>value1</var>, <var>value2</var>, ...<var>values</var> )","number":"20.2.2.24","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.max ( value1, value2, ...values )"},{"type":"clause","id":"sec-math.min","aoid":null,"title":"Math.min ( value1, value2, ...values )","titleHTML":"Math.min ( <var>value1</var>, <var>value2</var>, ...<var>values</var> )","number":"20.2.2.25","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.min ( value1, value2, ...values )"},{"type":"clause","id":"sec-math.pow","aoid":null,"title":"Math.pow ( base, exponent )","titleHTML":"Math.pow ( <var>base</var>, <var>exponent</var> )","number":"20.2.2.26","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.pow ( base, exponent )"},{"type":"clause","id":"sec-math.random","aoid":null,"title":"Math.random ( )","titleHTML":"Math.random ( )","number":"20.2.2.27","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.random ( )"},{"type":"clause","id":"sec-math.round","aoid":null,"title":"Math.round ( x )","titleHTML":"Math.round ( <var>x</var> )","number":"20.2.2.28","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.round ( x )"},{"type":"clause","id":"sec-math.sign","aoid":null,"title":"Math.sign ( x )","titleHTML":"Math.sign ( <var>x</var> )","number":"20.2.2.29","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.sign ( x )"},{"type":"clause","id":"sec-math.sin","aoid":null,"title":"Math.sin ( x )","titleHTML":"Math.sin ( <var>x</var> )","number":"20.2.2.30","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.sin ( x )"},{"type":"clause","id":"sec-math.sinh","aoid":null,"title":"Math.sinh ( x )","titleHTML":"Math.sinh ( <var>x</var> )","number":"20.2.2.31","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.sinh ( x )"},{"type":"clause","id":"sec-math.sqrt","aoid":null,"title":"Math.sqrt ( x )","titleHTML":"Math.sqrt ( <var>x</var> )","number":"20.2.2.32","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.sqrt ( x )"},{"type":"clause","id":"sec-math.tan","aoid":null,"title":"Math.tan ( x )","titleHTML":"Math.tan ( <var>x</var> )","number":"20.2.2.33","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.tan ( x )"},{"type":"clause","id":"sec-math.tanh","aoid":null,"title":"Math.tanh ( x )","titleHTML":"Math.tanh ( <var>x</var> )","number":"20.2.2.34","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.tanh ( x )"},{"type":"clause","id":"sec-math.trunc","aoid":null,"title":"Math.trunc ( x )","titleHTML":"Math.trunc ( <var>x</var> )","number":"20.2.2.35","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Math.trunc ( x )"},{"type":"clause","id":"sec-function-properties-of-the-math-object","aoid":null,"title":"Function Properties of the Math Object","titleHTML":"Function Properties of the Math Object","number":"20.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Function Properties of the Math Object"},{"type":"clause","id":"sec-math-object","aoid":null,"title":"The Math Object","titleHTML":"The Math Object","number":"20.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_87","_ref_466","_ref_1106"],"key":"The Math Object"},{"type":"term","term":"time value","refId":"sec-time-values-and-time-range","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"time value"},{"type":"clause","id":"sec-time-values-and-time-range","aoid":null,"title":"Time Values and Time Range","titleHTML":"Time Values and Time Range","number":"20.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_506","_ref_509","_ref_5248","_ref_5262","_ref_5265","_ref_5272","_ref_5310","_ref_5345","_ref_5348","_ref_5349","_ref_5403","_ref_5404","_ref_5412","_ref_5430","_ref_5444","_ref_5447","_ref_5450","_ref_5455","_ref_5470","_ref_5472","_ref_5750","_ref_8611","_ref_8612"],"key":"Time Values and Time Range"},{"type":"op","aoid":"Day","id":"eqn-Day","referencingIds":["_ref_5306","_ref_5346","_ref_5398","_ref_5553","_ref_5568","_ref_5578","_ref_5602","_ref_5642","_ref_5654","_ref_5663","_ref_5683"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Day"},{"type":"op","aoid":"msPerDay","id":"eqn-msPerDay","referencingIds":["_ref_5250","_ref_5252","_ref_5263","_ref_5399"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"msPerDay"},{"type":"op","aoid":"TimeWithinDay","id":"eqn-TimeWithinDay","referencingIds":["_ref_5526","_ref_5539","_ref_5592","_ref_5619","_ref_5630","_ref_5675","_ref_8715"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TimeWithinDay"},{"type":"clause","id":"sec-day-number-and-time-within-day","aoid":null,"title":"Day Number and Time within Day","titleHTML":"Day Number and Time within Day","number":"20.3.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Day Number and Time within Day"},{"type":"op","aoid":"DaysInYear","id":"eqn-DaysInYear","referencingIds":["_ref_5267","_ref_5269"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DaysInYear"},{"type":"op","aoid":"DayFromYear","id":"eqn-DaysFromYear","referencingIds":["_ref_5264","_ref_5307"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DayFromYear"},{"type":"op","aoid":"TimeFromYear","id":"eqn-TimeFromYear","referencingIds":["_ref_5266"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TimeFromYear"},{"type":"op","aoid":"YearFromTime","id":"eqn-YearFromTime","referencingIds":["_ref_5268","_ref_5270","_ref_5308","_ref_5395","_ref_5482","_ref_5508","_ref_5524","_ref_5591","_ref_5617","_ref_5674","_ref_5714","_ref_5744","_ref_8703"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"YearFromTime"},{"type":"op","aoid":"InLeapYear","id":"eqn-InLeapYear","referencingIds":["_ref_5275","_ref_5276","_ref_5278","_ref_5279","_ref_5281","_ref_5282","_ref_5284","_ref_5285","_ref_5287","_ref_5288","_ref_5290","_ref_5291","_ref_5293","_ref_5294","_ref_5296","_ref_5297","_ref_5299","_ref_5300","_ref_5302","_ref_5303","_ref_5305","_ref_5316","_ref_5319","_ref_5322","_ref_5325","_ref_5328","_ref_5331","_ref_5334","_ref_5337","_ref_5340","_ref_5343"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"InLeapYear"},{"type":"clause","id":"sec-year-number","aoid":null,"title":"Year Number","titleHTML":"Year Number","number":"20.3.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Year Number"},{"type":"op","aoid":"MonthFromTime","id":"eqn-MonthFromTime","referencingIds":["_ref_5271","_ref_5309","_ref_5312","_ref_5314","_ref_5317","_ref_5320","_ref_5323","_ref_5326","_ref_5329","_ref_5332","_ref_5335","_ref_5338","_ref_5341","_ref_5344","_ref_5396","_ref_5494","_ref_5516","_ref_5525","_ref_5533","_ref_5618","_ref_5624","_ref_5712","_ref_5742","_ref_8711"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MonthFromTime"},{"type":"op","aoid":"DayWithinYear","id":"eqn-DayWithinYear","referencingIds":["_ref_5273","_ref_5274","_ref_5277","_ref_5280","_ref_5283","_ref_5286","_ref_5289","_ref_5292","_ref_5295","_ref_5298","_ref_5301","_ref_5304","_ref_5311","_ref_5313","_ref_5315","_ref_5318","_ref_5321","_ref_5324","_ref_5327","_ref_5330","_ref_5333","_ref_5336","_ref_5339","_ref_5342"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DayWithinYear"},{"type":"clause","id":"sec-month-number","aoid":null,"title":"Month Number","titleHTML":"Month Number","number":"20.3.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Month Number"},{"type":"op","aoid":"DateFromTime","refId":"sec-date-number","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DateFromTime"},{"type":"clause","id":"sec-date-number","aoid":null,"title":"Date Number","titleHTML":"Date Number","number":"20.3.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5397","_ref_5476","_ref_5504","_ref_5535","_ref_5587","_ref_5626","_ref_5670","_ref_5713","_ref_5743","_ref_8712"],"key":"Date Number"},{"type":"op","aoid":"WeekDay","refId":"sec-week-day","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"WeekDay"},{"type":"clause","id":"sec-week-day","aoid":null,"title":"Week Day","titleHTML":"Week Day","number":"20.3.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5479","_ref_5506","_ref_5711","_ref_5741"],"key":"Week Day"},{"type":"term","term":"LocalTZA( _t_, true )","refId":"sec-local-time-zone-adjustment","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LocalTZA( _t_, true )"},{"type":"term","term":"LocalTZA( _t_, false )","refId":"sec-local-time-zone-adjustment","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LocalTZA( _t_, false )"},{"type":"term","term":"_t_local = _t_","refId":"sec-local-time-zone-adjustment","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"_t_local = _t_"},{"type":"clause","id":"sec-local-time-zone-adjustment","aoid":null,"title":"LocalTZA ( t, isUTC )","titleHTML":"LocalTZA ( <var>t</var>, <var>isUTC</var> )","number":"20.3.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5360","_ref_5361","_ref_5719"],"key":"LocalTZA ( t, isUTC )"},{"type":"op","aoid":"LocalTime","refId":"sec-localtime","location":"","referencingIds":[],"key":"LocalTime"},{"type":"clause","id":"sec-localtime","aoid":"LocalTime","title":"LocalTime ( t )","titleHTML":"LocalTime ( <var>t</var> )","number":"20.3.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5362","_ref_5363","_ref_5477","_ref_5480","_ref_5483","_ref_5486","_ref_5489","_ref_5492","_ref_5495","_ref_5498","_ref_5501","_ref_5519","_ref_5531","_ref_5543","_ref_5558","_ref_5570","_ref_5584","_ref_5596","_ref_5691","_ref_5728","_ref_5735","_ref_8704","_ref_8706"],"key":"LocalTime ( t )"},{"type":"op","aoid":"UTC","refId":"sec-utc-t","location":"","referencingIds":[],"key":"UTC"},{"type":"clause","id":"sec-utc-t","aoid":"UTC","title":"UTC ( t )","titleHTML":"UTC ( <var>t</var> )","number":"20.3.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5427","_ref_5528","_ref_5541","_ref_5556","_ref_5566","_ref_5582","_ref_5594","_ref_5607","_ref_8713"],"key":"UTC ( t )"},{"type":"op","aoid":"HourFromTime","id":"eqn-HourFromTime","referencingIds":["_ref_5485","_ref_5510","_ref_5562","_ref_5580","_ref_5604","_ref_5649","_ref_5665","_ref_5685","_ref_5704","_ref_5722"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"HourFromTime"},{"type":"op","aoid":"MinFromTime","id":"eqn-MinFromTime","referencingIds":["_ref_5491","_ref_5514","_ref_5546","_ref_5563","_ref_5605","_ref_5635","_ref_5650","_ref_5686","_ref_5705","_ref_5720"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MinFromTime"},{"type":"op","aoid":"SecFromTime","id":"eqn-SecFromTime","referencingIds":["_ref_5497","_ref_5518","_ref_5548","_ref_5564","_ref_5573","_ref_5637","_ref_5651","_ref_5658","_ref_5706"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SecFromTime"},{"type":"op","aoid":"msFromTime","id":"eqn-msFromTime","referencingIds":["_ref_5488","_ref_5512","_ref_5550","_ref_5575","_ref_5599","_ref_5639","_ref_5660","_ref_5680"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"msFromTime"},{"type":"op","aoid":"HoursPerDay","id":"eqn-HoursPerDay","referencingIds":["_ref_5368"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"HoursPerDay"},{"type":"op","aoid":"MinutesPerHour","id":"eqn-MinutesPerHour","referencingIds":["_ref_5372","_ref_5382"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"MinutesPerHour"},{"type":"op","aoid":"SecondsPerMinute","id":"eqn-SecondsPerMinute","referencingIds":["_ref_5376","_ref_5380"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SecondsPerMinute"},{"type":"op","aoid":"msPerSecond","id":"eqn-msPerSecond","referencingIds":["_ref_5374","_ref_5378","_ref_5379","_ref_5389"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"msPerSecond"},{"type":"op","aoid":"msPerMinute","id":"eqn-msPerMinute","referencingIds":["_ref_5370","_ref_5381","_ref_5388","_ref_5502"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"msPerMinute"},{"type":"op","aoid":"msPerHour","id":"eqn-msPerHour","referencingIds":["_ref_5354","_ref_5359","_ref_5366","_ref_5387"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"msPerHour"},{"type":"clause","id":"sec-hours-minutes-second-and-milliseconds","aoid":null,"title":"Hours, Minutes, Second, and Milliseconds","titleHTML":"Hours, Minutes, Second, and Milliseconds","number":"20.3.1.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Hours, Minutes, Second, and Milliseconds"},{"type":"op","aoid":"MakeTime","refId":"sec-maketime","location":"","referencingIds":[],"key":"MakeTime"},{"type":"clause","id":"sec-maketime","aoid":"MakeTime","title":"MakeTime ( hour, min, sec, ms )","titleHTML":"MakeTime ( <var>hour</var>, <var>min</var>, <var>sec</var>, <var>ms</var> )","number":"20.3.1.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5353","_ref_5358","_ref_5424","_ref_5468","_ref_5554","_ref_5561","_ref_5579","_ref_5603","_ref_5643","_ref_5648","_ref_5664","_ref_5684"],"key":"MakeTime ( hour, min, sec, ms )"},{"type":"op","aoid":"MakeDay","refId":"sec-makeday","location":"","referencingIds":[],"key":"MakeDay"},{"type":"clause","id":"sec-makeday","aoid":"MakeDay","title":"MakeDay ( year, month, date )","titleHTML":"MakeDay ( <var>year</var>, <var>month</var>, <var>date</var> )","number":"20.3.1.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5352","_ref_5357","_ref_5423","_ref_5467","_ref_5523","_ref_5538","_ref_5590","_ref_5616","_ref_5629","_ref_5673","_ref_8710"],"key":"MakeDay ( year, month, date )"},{"type":"op","aoid":"MakeDate","refId":"sec-makedate","location":"","referencingIds":[],"key":"MakeDate"},{"type":"clause","id":"sec-makedate","aoid":"MakeDate","title":"MakeDate ( day, time )","titleHTML":"MakeDate ( <var>day</var>, <var>time</var> )","number":"20.3.1.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5351","_ref_5356","_ref_5422","_ref_5466","_ref_5522","_ref_5537","_ref_5552","_ref_5567","_ref_5577","_ref_5589","_ref_5601","_ref_5615","_ref_5628","_ref_5641","_ref_5653","_ref_5662","_ref_5672","_ref_5682","_ref_8714"],"key":"MakeDate ( day, time )"},{"type":"op","aoid":"TimeClip","refId":"sec-timeclip","location":"","referencingIds":[],"key":"TimeClip"},{"type":"clause","id":"sec-timeclip","aoid":"TimeClip","title":"TimeClip ( time )","titleHTML":"TimeClip ( <var>time</var> )","number":"20.3.1.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_803","_ref_5350","_ref_5355","_ref_5426","_ref_5441","_ref_5465","_ref_5527","_ref_5540","_ref_5555","_ref_5565","_ref_5581","_ref_5593","_ref_5606","_ref_5611","_ref_5620","_ref_5631","_ref_5644","_ref_5652","_ref_5666","_ref_5676","_ref_5687","_ref_8610","_ref_8717"],"key":"TimeClip ( time )"},{"type":"clause","id":"sec-expanded-years","aoid":null,"title":"Expanded Years","titleHTML":"Expanded Years","number":"20.3.1.15.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Expanded Years"},{"type":"clause","id":"sec-date-time-string-format","aoid":null,"title":"Date Time String Format","titleHTML":"Date Time String Format","number":"20.3.1.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_510","_ref_513","_ref_514","_ref_515","_ref_804","_ref_806"],"key":"Date Time String Format"},{"type":"clause","id":"sec-overview-of-date-objects-and-definitions-of-abstract-operations","aoid":null,"title":"Overview of Date Objects and Definitions of Abstract Operations","titleHTML":"Overview of Date Objects and Definitions of Abstract Operations","number":"20.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Overview of Date Objects and Definitions of Abstract Operations"},{"type":"term","term":"%Date%","refId":"sec-date-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Date%"},{"type":"clause","id":"sec-date-year-month-date-hours-minutes-seconds-ms","aoid":null,"title":"Date ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )","titleHTML":"Date ( <var>year</var>, <var>month</var> [ , <var>date</var> [ , <var>hours</var> [ , <var>minutes</var> [ , <var>seconds</var> [ , <var>ms</var> ] ] ] ] ] )","number":"20.3.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )"},{"type":"clause","id":"sec-date-value","aoid":null,"title":"Date ( value )","titleHTML":"Date ( <var>value</var> )","number":"20.3.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date ( value )"},{"type":"clause","id":"sec-date-constructor-date","aoid":null,"title":"Date ( )","titleHTML":"Date ( )","number":"20.3.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date ( )"},{"type":"clause","id":"sec-date-constructor","aoid":null,"title":"The Date Constructor","titleHTML":"The Date Constructor","number":"20.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_67","_ref_434","_ref_1051","_ref_1055","_ref_5474"],"key":"The Date Constructor"},{"type":"clause","id":"sec-date.now","aoid":null,"title":"Date.now ( )","titleHTML":"Date.now ( )","number":"20.3.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.now ( )"},{"type":"clause","id":"sec-date.parse","aoid":null,"title":"Date.parse ( string )","titleHTML":"Date.parse ( <var>string</var> )","number":"20.3.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_511","_ref_512","_ref_517"],"key":"Date.parse ( string )"},{"type":"clause","id":"sec-date.prototype","aoid":null,"title":"Date.prototype","titleHTML":"Date.prototype","number":"20.3.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype"},{"type":"clause","id":"sec-date.utc","aoid":null,"title":"Date.UTC ( year [ , month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] ] )","titleHTML":"Date.UTC ( <var>year</var> [ , <var>month</var> [ , <var>date</var> [ , <var>hours</var> [ , <var>minutes</var> [ , <var>seconds</var> [ , <var>ms</var> ] ] ] ] ] ] )","number":"20.3.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.UTC ( year [ , month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] ] )"},{"type":"clause","id":"sec-properties-of-the-date-constructor","aoid":null,"title":"Properties of the Date Constructor","titleHTML":"Properties of the Date Constructor","number":"20.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Date Constructor"},{"type":"term","term":"%DatePrototype%","refId":"sec-properties-of-the-date-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%DatePrototype%"},{"type":"term","term":"thisTimeValue","refId":"sec-properties-of-the-date-prototype-object","referencingIds":[],"id":"sec-thistimevalue","namespace":"https://tc39.github.io/ecma262/","location":"","key":"thisTimeValue"},{"type":"term","term":"this Date object","refId":"sec-properties-of-the-date-prototype-object","referencingIds":["_ref_5529","_ref_5542","_ref_5557","_ref_5569","_ref_5583","_ref_5595","_ref_5608","_ref_5612","_ref_5621","_ref_5632","_ref_5645","_ref_5655","_ref_5667","_ref_5677","_ref_5688","_ref_5689","_ref_5733","_ref_5739","_ref_5751","_ref_8708","_ref_8716","_ref_8718"],"id":"this-Date-object","namespace":"https://tc39.github.io/ecma262/","location":"","key":"this Date object"},{"type":"term","term":"this time value","refId":"sec-properties-of-the-date-prototype-object","referencingIds":["_ref_5693","_ref_5694","_ref_8613"],"id":"this-time-value","namespace":"https://tc39.github.io/ecma262/","location":"","key":"this time value"},{"type":"clause","id":"sec-date.prototype.constructor","aoid":null,"title":"Date.prototype.constructor","titleHTML":"Date.prototype.constructor","number":"20.3.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.constructor"},{"type":"clause","id":"sec-date.prototype.getdate","aoid":null,"title":"Date.prototype.getDate ( )","titleHTML":"Date.prototype.getDate ( )","number":"20.3.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getDate ( )"},{"type":"clause","id":"sec-date.prototype.getday","aoid":null,"title":"Date.prototype.getDay ( )","titleHTML":"Date.prototype.getDay ( )","number":"20.3.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getDay ( )"},{"type":"clause","id":"sec-date.prototype.getfullyear","aoid":null,"title":"Date.prototype.getFullYear ( )","titleHTML":"Date.prototype.getFullYear ( )","number":"20.3.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getFullYear ( )"},{"type":"clause","id":"sec-date.prototype.gethours","aoid":null,"title":"Date.prototype.getHours ( )","titleHTML":"Date.prototype.getHours ( )","number":"20.3.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getHours ( )"},{"type":"clause","id":"sec-date.prototype.getmilliseconds","aoid":null,"title":"Date.prototype.getMilliseconds ( )","titleHTML":"Date.prototype.getMilliseconds ( )","number":"20.3.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getMilliseconds ( )"},{"type":"clause","id":"sec-date.prototype.getminutes","aoid":null,"title":"Date.prototype.getMinutes ( )","titleHTML":"Date.prototype.getMinutes ( )","number":"20.3.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getMinutes ( )"},{"type":"clause","id":"sec-date.prototype.getmonth","aoid":null,"title":"Date.prototype.getMonth ( )","titleHTML":"Date.prototype.getMonth ( )","number":"20.3.4.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getMonth ( )"},{"type":"clause","id":"sec-date.prototype.getseconds","aoid":null,"title":"Date.prototype.getSeconds ( )","titleHTML":"Date.prototype.getSeconds ( )","number":"20.3.4.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getSeconds ( )"},{"type":"clause","id":"sec-date.prototype.gettime","aoid":null,"title":"Date.prototype.getTime ( )","titleHTML":"Date.prototype.getTime ( )","number":"20.3.4.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getTime ( )"},{"type":"clause","id":"sec-date.prototype.gettimezoneoffset","aoid":null,"title":"Date.prototype.getTimezoneOffset ( )","titleHTML":"Date.prototype.getTimezoneOffset ( )","number":"20.3.4.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getTimezoneOffset ( )"},{"type":"clause","id":"sec-date.prototype.getutcdate","aoid":null,"title":"Date.prototype.getUTCDate ( )","titleHTML":"Date.prototype.getUTCDate ( )","number":"20.3.4.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getUTCDate ( )"},{"type":"clause","id":"sec-date.prototype.getutcday","aoid":null,"title":"Date.prototype.getUTCDay ( )","titleHTML":"Date.prototype.getUTCDay ( )","number":"20.3.4.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getUTCDay ( )"},{"type":"clause","id":"sec-date.prototype.getutcfullyear","aoid":null,"title":"Date.prototype.getUTCFullYear ( )","titleHTML":"Date.prototype.getUTCFullYear ( )","number":"20.3.4.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getUTCFullYear ( )"},{"type":"clause","id":"sec-date.prototype.getutchours","aoid":null,"title":"Date.prototype.getUTCHours ( )","titleHTML":"Date.prototype.getUTCHours ( )","number":"20.3.4.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getUTCHours ( )"},{"type":"clause","id":"sec-date.prototype.getutcmilliseconds","aoid":null,"title":"Date.prototype.getUTCMilliseconds ( )","titleHTML":"Date.prototype.getUTCMilliseconds ( )","number":"20.3.4.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getUTCMilliseconds ( )"},{"type":"clause","id":"sec-date.prototype.getutcminutes","aoid":null,"title":"Date.prototype.getUTCMinutes ( )","titleHTML":"Date.prototype.getUTCMinutes ( )","number":"20.3.4.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getUTCMinutes ( )"},{"type":"clause","id":"sec-date.prototype.getutcmonth","aoid":null,"title":"Date.prototype.getUTCMonth ( )","titleHTML":"Date.prototype.getUTCMonth ( )","number":"20.3.4.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getUTCMonth ( )"},{"type":"clause","id":"sec-date.prototype.getutcseconds","aoid":null,"title":"Date.prototype.getUTCSeconds ( )","titleHTML":"Date.prototype.getUTCSeconds ( )","number":"20.3.4.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getUTCSeconds ( )"},{"type":"clause","id":"sec-date.prototype.setdate","aoid":null,"title":"Date.prototype.setDate ( date )","titleHTML":"Date.prototype.setDate ( <var>date</var> )","number":"20.3.4.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setDate ( date )"},{"type":"clause","id":"sec-date.prototype.setfullyear","aoid":null,"title":"Date.prototype.setFullYear ( year [ , month [ , date ] ] )","titleHTML":"Date.prototype.setFullYear ( <var>year</var> [ , <var>month</var> [ , <var>date</var> ] ] )","number":"20.3.4.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setFullYear ( year [ , month [ , date ] ] )"},{"type":"clause","id":"sec-date.prototype.sethours","aoid":null,"title":"Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )","titleHTML":"Date.prototype.setHours ( <var>hour</var> [ , <var>min</var> [ , <var>sec</var> [ , <var>ms</var> ] ] ] )","number":"20.3.4.22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )"},{"type":"clause","id":"sec-date.prototype.setmilliseconds","aoid":null,"title":"Date.prototype.setMilliseconds ( ms )","titleHTML":"Date.prototype.setMilliseconds ( <var>ms</var> )","number":"20.3.4.23","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setMilliseconds ( ms )"},{"type":"clause","id":"sec-date.prototype.setminutes","aoid":null,"title":"Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )","titleHTML":"Date.prototype.setMinutes ( <var>min</var> [ , <var>sec</var> [ , <var>ms</var> ] ] )","number":"20.3.4.24","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )"},{"type":"clause","id":"sec-date.prototype.setmonth","aoid":null,"title":"Date.prototype.setMonth ( month [ , date ] )","titleHTML":"Date.prototype.setMonth ( <var>month</var> [ , <var>date</var> ] )","number":"20.3.4.25","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setMonth ( month [ , date ] )"},{"type":"clause","id":"sec-date.prototype.setseconds","aoid":null,"title":"Date.prototype.setSeconds ( sec [ , ms ] )","titleHTML":"Date.prototype.setSeconds ( <var>sec</var> [ , <var>ms</var> ] )","number":"20.3.4.26","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setSeconds ( sec [ , ms ] )"},{"type":"clause","id":"sec-date.prototype.settime","aoid":null,"title":"Date.prototype.setTime ( time )","titleHTML":"Date.prototype.setTime ( <var>time</var> )","number":"20.3.4.27","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setTime ( time )"},{"type":"clause","id":"sec-date.prototype.setutcdate","aoid":null,"title":"Date.prototype.setUTCDate ( date )","titleHTML":"Date.prototype.setUTCDate ( <var>date</var> )","number":"20.3.4.28","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setUTCDate ( date )"},{"type":"clause","id":"sec-date.prototype.setutcfullyear","aoid":null,"title":"Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )","titleHTML":"Date.prototype.setUTCFullYear ( <var>year</var> [ , <var>month</var> [ , <var>date</var> ] ] )","number":"20.3.4.29","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )"},{"type":"clause","id":"sec-date.prototype.setutchours","aoid":null,"title":"Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )","titleHTML":"Date.prototype.setUTCHours ( <var>hour</var> [ , <var>min</var> [ , <var>sec</var> [ , <var>ms</var> ] ] ] )","number":"20.3.4.30","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )"},{"type":"clause","id":"sec-date.prototype.setutcmilliseconds","aoid":null,"title":"Date.prototype.setUTCMilliseconds ( ms )","titleHTML":"Date.prototype.setUTCMilliseconds ( <var>ms</var> )","number":"20.3.4.31","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setUTCMilliseconds ( ms )"},{"type":"clause","id":"sec-date.prototype.setutcminutes","aoid":null,"title":"Date.prototype.setUTCMinutes ( min [ , sec [ , ms ] ] )","titleHTML":"Date.prototype.setUTCMinutes ( <var>min</var> [ , <var>sec</var> [ , <var>ms</var> ] ] )","number":"20.3.4.32","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setUTCMinutes ( min [ , sec [ , ms ] ] )"},{"type":"clause","id":"sec-date.prototype.setutcmonth","aoid":null,"title":"Date.prototype.setUTCMonth ( month [ , date ] )","titleHTML":"Date.prototype.setUTCMonth ( <var>month</var> [ , <var>date</var> ] )","number":"20.3.4.33","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setUTCMonth ( month [ , date ] )"},{"type":"clause","id":"sec-date.prototype.setutcseconds","aoid":null,"title":"Date.prototype.setUTCSeconds ( sec [ , ms ] )","titleHTML":"Date.prototype.setUTCSeconds ( <var>sec</var> [ , <var>ms</var> ] )","number":"20.3.4.34","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setUTCSeconds ( sec [ , ms ] )"},{"type":"clause","id":"sec-date.prototype.todatestring","aoid":null,"title":"Date.prototype.toDateString ( )","titleHTML":"Date.prototype.toDateString ( )","number":"20.3.4.35","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.toDateString ( )"},{"type":"clause","id":"sec-date.prototype.toisostring","aoid":null,"title":"Date.prototype.toISOString ( )","titleHTML":"Date.prototype.toISOString ( )","number":"20.3.4.36","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_805"],"key":"Date.prototype.toISOString ( )"},{"type":"clause","id":"sec-date.prototype.tojson","aoid":null,"title":"Date.prototype.toJSON ( key )","titleHTML":"Date.prototype.toJSON ( <var>key</var> )","number":"20.3.4.37","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.toJSON ( key )"},{"type":"clause","id":"sec-date.prototype.tolocaledatestring","aoid":null,"title":"Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )","titleHTML":"Date.prototype.toLocaleDateString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )","number":"20.3.4.38","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )"},{"type":"clause","id":"sec-date.prototype.tolocalestring","aoid":null,"title":"Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )","titleHTML":"Date.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )","number":"20.3.4.39","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"},{"type":"clause","id":"sec-date.prototype.tolocaletimestring","aoid":null,"title":"Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )","titleHTML":"Date.prototype.toLocaleTimeString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )","number":"20.3.4.40","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )"},{"type":"op","aoid":"TimeString","refId":"sec-timestring","location":"","referencingIds":[],"key":"TimeString"},{"type":"clause","id":"sec-timestring","aoid":"TimeString","title":"Runtime Semantics: TimeString ( tv )","titleHTML":"Runtime Semantics: TimeString ( <var>tv</var> )","number":"20.3.4.41.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5731","_ref_5737","_ref_5746"],"key":"Runtime Semantics: TimeString ( tv )"},{"type":"table","id":"sec-todatestring-day-names","number":49,"caption":"Table 49: Names of days of the week","referencingIds":["_ref_518","_ref_520"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 49: Names of days of the week"},{"type":"table","id":"sec-todatestring-month-names","number":50,"caption":"Table 50: Names of months of the year","referencingIds":["_ref_519","_ref_521"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 50: Names of months of the year"},{"type":"op","aoid":"DateString","refId":"sec-datestring","location":"","referencingIds":[],"key":"DateString"},{"type":"clause","id":"sec-datestring","aoid":"DateString","title":"Runtime Semantics: DateString ( tv )","titleHTML":"Runtime Semantics: DateString ( <var>tv</var> )","number":"20.3.4.41.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5692","_ref_5730"],"key":"Runtime Semantics: DateString ( tv )"},{"type":"op","aoid":"TimeZoneString","refId":"sec-timezoneestring","location":"","referencingIds":[],"key":"TimeZoneString"},{"type":"clause","id":"sec-timezoneestring","aoid":"TimeZoneString","title":"Runtime Semantics: TimeZoneString ( tv )","titleHTML":"Runtime Semantics: TimeZoneString ( <var>tv</var> )","number":"20.3.4.41.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5732","_ref_5738"],"key":"Runtime Semantics: TimeZoneString ( tv )"},{"type":"op","aoid":"ToDateString","refId":"sec-todatestring","location":"","referencingIds":[],"key":"ToDateString"},{"type":"clause","id":"sec-todatestring","aoid":"ToDateString","title":"Runtime Semantics: ToDateString ( tv )","titleHTML":"Runtime Semantics: ToDateString ( <var>tv</var> )","number":"20.3.4.41.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5413","_ref_5431","_ref_5445","_ref_5700"],"key":"Runtime Semantics: ToDateString ( tv )"},{"type":"clause","id":"sec-date.prototype.tostring","aoid":null,"title":"Date.prototype.toString ( )","titleHTML":"Date.prototype.toString ( )","number":"20.3.4.41","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_807"],"key":"Date.prototype.toString ( )"},{"type":"clause","id":"sec-date.prototype.totimestring","aoid":null,"title":"Date.prototype.toTimeString ( )","titleHTML":"Date.prototype.toTimeString ( )","number":"20.3.4.42","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.toTimeString ( )"},{"type":"clause","id":"sec-date.prototype.toutcstring","aoid":null,"title":"Date.prototype.toUTCString ( )","titleHTML":"Date.prototype.toUTCString ( )","number":"20.3.4.43","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.toUTCString ( )"},{"type":"clause","id":"sec-date.prototype.valueof","aoid":null,"title":"Date.prototype.valueOf ( )","titleHTML":"Date.prototype.valueOf ( )","number":"20.3.4.44","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.valueOf ( )"},{"type":"clause","id":"sec-date.prototype-@@toprimitive","aoid":null,"title":"Date.prototype [ @@toPrimitive ] ( hint )","titleHTML":"Date.prototype [ @@toPrimitive ] ( <var>hint</var> )","number":"20.3.4.45","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_132"],"key":"Date.prototype [ @@toPrimitive ] ( hint )"},{"type":"clause","id":"sec-properties-of-the-date-prototype-object","aoid":null,"title":"Properties of the Date Prototype Object","titleHTML":"Properties of the Date Prototype Object","number":"20.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_847","_ref_1053","_ref_5433","_ref_5456","_ref_5475","_ref_5478","_ref_5481","_ref_5484","_ref_5487","_ref_5490","_ref_5493","_ref_5496","_ref_5499","_ref_5500","_ref_5503","_ref_5505","_ref_5507","_ref_5509","_ref_5511","_ref_5513","_ref_5515","_ref_5517","_ref_5520","_ref_5530","_ref_5544","_ref_5559","_ref_5571","_ref_5585","_ref_5597","_ref_5609","_ref_5613","_ref_5622","_ref_5633","_ref_5646","_ref_5656","_ref_5668","_ref_5678","_ref_5690","_ref_5699","_ref_5734","_ref_5740","_ref_5747","_ref_8702","_ref_8705"],"key":"Properties of the Date Prototype Object"},{"type":"clause","id":"sec-properties-of-date-instances","aoid":null,"title":"Properties of Date Instances","titleHTML":"Properties of Date Instances","number":"20.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Date Instances"},{"type":"clause","id":"sec-date-objects","aoid":null,"title":"Date Objects","titleHTML":"Date Objects","number":"20.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date Objects"},{"type":"clause","id":"sec-numbers-and-dates","aoid":null,"title":"Numbers and Dates","titleHTML":"Numbers and Dates","number":"20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Numbers and Dates"},{"type":"term","term":"%String%","refId":"sec-string-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%String%"},{"type":"clause","id":"sec-string-constructor-string-value","aoid":null,"title":"String ( value )","titleHTML":"String ( <var>value</var> )","number":"21.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5"],"key":"String ( value )"},{"type":"clause","id":"sec-string-constructor","aoid":null,"title":"The String Constructor","titleHTML":"The String Constructor","number":"21.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_108","_ref_453","_ref_1165","_ref_1170","_ref_5811"],"key":"The String Constructor"},{"type":"clause","id":"sec-string.fromcharcode","aoid":null,"title":"String.fromCharCode ( ...codeUnits )","titleHTML":"String.fromCharCode ( ...<var>codeUnits</var> )","number":"21.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.fromCharCode ( ...codeUnits )"},{"type":"clause","id":"sec-string.fromcodepoint","aoid":null,"title":"String.fromCodePoint ( ...codePoints )","titleHTML":"String.fromCodePoint ( ...<var>codePoints</var> )","number":"21.1.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.fromCodePoint ( ...codePoints )"},{"type":"clause","id":"sec-string.prototype","aoid":null,"title":"String.prototype","titleHTML":"String.prototype","number":"21.1.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype"},{"type":"clause","id":"sec-string.raw","aoid":null,"title":"String.raw ( template, ...substitutions )","titleHTML":"String.raw ( <var>template</var>, ...<var>substitutions</var> )","number":"21.1.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.raw ( template, ...substitutions )"},{"type":"clause","id":"sec-properties-of-the-string-constructor","aoid":null,"title":"Properties of the String Constructor","titleHTML":"Properties of the String Constructor","number":"21.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the String Constructor"},{"type":"term","term":"%StringPrototype%","refId":"sec-properties-of-the-string-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%StringPrototype%"},{"type":"term","term":"thisStringValue","refId":"sec-properties-of-the-string-prototype-object","referencingIds":["_ref_5948","_ref_5955"],"id":"sec-thisstringvalue","namespace":"https://tc39.github.io/ecma262/","location":"","key":"thisStringValue"},{"type":"clause","id":"sec-string.prototype.charat","aoid":null,"title":"String.prototype.charAt ( pos )","titleHTML":"String.prototype.charAt ( <var>pos</var> )","number":"21.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.charAt ( pos )"},{"type":"clause","id":"sec-string.prototype.charcodeat","aoid":null,"title":"String.prototype.charCodeAt ( pos )","titleHTML":"String.prototype.charCodeAt ( <var>pos</var> )","number":"21.1.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.charCodeAt ( pos )"},{"type":"clause","id":"sec-string.prototype.codepointat","aoid":null,"title":"String.prototype.codePointAt ( pos )","titleHTML":"String.prototype.codePointAt ( <var>pos</var> )","number":"21.1.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.codePointAt ( pos )"},{"type":"clause","id":"sec-string.prototype.concat","aoid":null,"title":"String.prototype.concat ( ...args )","titleHTML":"String.prototype.concat ( ...<var>args</var> )","number":"21.1.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.concat ( ...args )"},{"type":"clause","id":"sec-string.prototype.constructor","aoid":null,"title":"String.prototype.constructor","titleHTML":"String.prototype.constructor","number":"21.1.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.constructor"},{"type":"clause","id":"sec-string.prototype.endswith","aoid":null,"title":"String.prototype.endsWith ( searchString [ , endPosition ] )","titleHTML":"String.prototype.endsWith ( <var>searchString</var> [ , <var>endPosition</var> ] )","number":"21.1.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.endsWith ( searchString [ , endPosition ] )"},{"type":"clause","id":"sec-string.prototype.includes","aoid":null,"title":"String.prototype.includes ( searchString [ , position ] )","titleHTML":"String.prototype.includes ( <var>searchString</var> [ , <var>position</var> ] )","number":"21.1.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.includes ( searchString [ , position ] )"},{"type":"clause","id":"sec-string.prototype.indexof","aoid":null,"title":"String.prototype.indexOf ( searchString [ , position ] )","titleHTML":"String.prototype.indexOf ( <var>searchString</var> [ , <var>position</var> ] )","number":"21.1.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.indexOf ( searchString [ , position ] )"},{"type":"clause","id":"sec-string.prototype.lastindexof","aoid":null,"title":"String.prototype.lastIndexOf ( searchString [ , position ] )","titleHTML":"String.prototype.lastIndexOf ( <var>searchString</var> [ , <var>position</var> ] )","number":"21.1.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.lastIndexOf ( searchString [ , position ] )"},{"type":"clause","id":"sec-string.prototype.localecompare","aoid":null,"title":"String.prototype.localeCompare ( that [ , reserved1 [ , reserved2 ] ] )","titleHTML":"String.prototype.localeCompare ( <var>that</var> [ , <var>reserved1</var> [ , <var>reserved2</var> ] ] )","number":"21.1.3.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_23","_ref_848"],"key":"String.prototype.localeCompare ( that [ , reserved1 [ , reserved2 ] ] )"},{"type":"clause","id":"sec-string.prototype.match","aoid":null,"title":"String.prototype.match ( regexp )","titleHTML":"String.prototype.match ( <var>regexp</var> )","number":"21.1.3.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_28"],"key":"String.prototype.match ( regexp )"},{"type":"clause","id":"sec-string.prototype.normalize","aoid":null,"title":"String.prototype.normalize ( [ form ] )","titleHTML":"String.prototype.normalize ( [ <var>form</var> ] )","number":"21.1.3.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_22"],"key":"String.prototype.normalize ( [ form ] )"},{"type":"clause","id":"sec-string.prototype.padend","aoid":null,"title":"String.prototype.padEnd ( maxLength [ , fillString ] )","titleHTML":"String.prototype.padEnd ( <var>maxLength</var> [ , <var>fillString</var> ] )","number":"21.1.3.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.padEnd ( maxLength [ , fillString ] )"},{"type":"clause","id":"sec-string.prototype.padstart","aoid":null,"title":"String.prototype.padStart ( maxLength [ , fillString ] )","titleHTML":"String.prototype.padStart ( <var>maxLength</var> [ , <var>fillString</var> ] )","number":"21.1.3.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.padStart ( maxLength [ , fillString ] )"},{"type":"clause","id":"sec-string.prototype.repeat","aoid":null,"title":"String.prototype.repeat ( count )","titleHTML":"String.prototype.repeat ( <var>count</var> )","number":"21.1.3.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.repeat ( count )"},{"type":"table","id":"table-45","number":51,"caption":"Table 51: Replacement Text Symbol Substitutions","referencingIds":["_ref_526"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 51: Replacement Text Symbol Substitutions"},{"type":"op","aoid":"GetSubstitution","refId":"sec-getsubstitution","location":"","referencingIds":[],"key":"GetSubstitution"},{"type":"clause","id":"sec-getsubstitution","aoid":"GetSubstitution","title":"Runtime Semantics: GetSubstitution ( matched, str, position, captures, namedCaptures, replacement )","titleHTML":"Runtime Semantics: GetSubstitution ( <var>matched</var>, <var>str</var>, <var>position</var>, <var>captures</var>, <var>namedCaptures</var>, <var>replacement</var> )","number":"21.1.3.16.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5877","_ref_6250"],"key":"Runtime Semantics: GetSubstitution ( matched, str, position, captures, namedCaptures, replacement )"},{"type":"clause","id":"sec-string.prototype.replace","aoid":null,"title":"String.prototype.replace ( searchValue, replaceValue )","titleHTML":"String.prototype.replace ( <var>searchValue</var>, <var>replaceValue</var> )","number":"21.1.3.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_29"],"key":"String.prototype.replace ( searchValue, replaceValue )"},{"type":"clause","id":"sec-string.prototype.search","aoid":null,"title":"String.prototype.search ( regexp )","titleHTML":"String.prototype.search ( <var>regexp</var> )","number":"21.1.3.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_30"],"key":"String.prototype.search ( regexp )"},{"type":"clause","id":"sec-string.prototype.slice","aoid":null,"title":"String.prototype.slice ( start, end )","titleHTML":"String.prototype.slice ( <var>start</var>, <var>end</var> )","number":"21.1.3.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.slice ( start, end )"},{"type":"op","aoid":"SplitMatch","refId":"sec-splitmatch","location":"","referencingIds":[],"key":"SplitMatch"},{"type":"clause","id":"sec-splitmatch","aoid":"SplitMatch","title":"Runtime Semantics: SplitMatch ( S, q, R )","titleHTML":"Runtime Semantics: SplitMatch ( <var>S</var>, <var>q</var>, <var>R</var> )","number":"21.1.3.19.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5915","_ref_5917"],"key":"Runtime Semantics: SplitMatch ( S, q, R )"},{"type":"clause","id":"sec-string.prototype.split","aoid":null,"title":"String.prototype.split ( separator, limit )","titleHTML":"String.prototype.split ( <var>separator</var>, <var>limit</var> )","number":"21.1.3.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_31"],"key":"String.prototype.split ( separator, limit )"},{"type":"clause","id":"sec-string.prototype.startswith","aoid":null,"title":"String.prototype.startsWith ( searchString [ , position ] )","titleHTML":"String.prototype.startsWith ( <var>searchString</var> [ , <var>position</var> ] )","number":"21.1.3.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.startsWith ( searchString [ , position ] )"},{"type":"clause","id":"sec-string.prototype.substring","aoid":null,"title":"String.prototype.substring ( start, end )","titleHTML":"String.prototype.substring ( <var>start</var>, <var>end</var> )","number":"21.1.3.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.substring ( start, end )"},{"type":"clause","id":"sec-string.prototype.tolocalelowercase","aoid":null,"title":"String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )","titleHTML":"String.prototype.toLocaleLowerCase ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )","number":"21.1.3.22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )"},{"type":"clause","id":"sec-string.prototype.tolocaleuppercase","aoid":null,"title":"String.prototype.toLocaleUpperCase ( [ reserved1 [ , reserved2 ] ] )","titleHTML":"String.prototype.toLocaleUpperCase ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )","number":"21.1.3.23","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.toLocaleUpperCase ( [ reserved1 [ , reserved2 ] ] )"},{"type":"clause","id":"sec-string.prototype.tolowercase","aoid":null,"title":"String.prototype.toLowerCase ( )","titleHTML":"String.prototype.toLowerCase ( )","number":"21.1.3.24","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_849"],"key":"String.prototype.toLowerCase ( )"},{"type":"clause","id":"sec-string.prototype.tostring","aoid":null,"title":"String.prototype.toString ( )","titleHTML":"String.prototype.toString ( )","number":"21.1.3.25","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.toString ( )"},{"type":"clause","id":"sec-string.prototype.touppercase","aoid":null,"title":"String.prototype.toUpperCase ( )","titleHTML":"String.prototype.toUpperCase ( )","number":"21.1.3.26","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_850"],"key":"String.prototype.toUpperCase ( )"},{"type":"op","aoid":"TrimString","refId":"sec-trimstring","location":"","referencingIds":[],"key":"TrimString"},{"type":"clause","id":"sec-trimstring","aoid":"TrimString","title":"Runtime Semantics: TrimString ( string, where )","titleHTML":"Runtime Semantics: TrimString ( <var>string</var>, <var>where</var> )","number":"21.1.3.27.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5949","_ref_5953","_ref_5954"],"key":"Runtime Semantics: TrimString ( string, where )"},{"type":"clause","id":"sec-string.prototype.trim","aoid":null,"title":"String.prototype.trim ( )","titleHTML":"String.prototype.trim ( )","number":"21.1.3.27","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_851"],"key":"String.prototype.trim ( )"},{"type":"clause","id":"sec-string.prototype.trimend","aoid":null,"title":"String.prototype.trimEnd ( )","titleHTML":"String.prototype.trimEnd ( )","number":"21.1.3.28","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.trimEnd ( )"},{"type":"clause","id":"sec-string.prototype.trimstart","aoid":null,"title":"String.prototype.trimStart ( )","titleHTML":"String.prototype.trimStart ( )","number":"21.1.3.29","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.trimStart ( )"},{"type":"clause","id":"sec-string.prototype.valueof","aoid":null,"title":"String.prototype.valueOf ( )","titleHTML":"String.prototype.valueOf ( )","number":"21.1.3.30","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.valueOf ( )"},{"type":"clause","id":"sec-string.prototype-@@iterator","aoid":null,"title":"String.prototype [ @@iterator ] ( )","titleHTML":"String.prototype [ @@iterator ] ( )","number":"21.1.3.31","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype [ @@iterator ] ( )"},{"type":"clause","id":"sec-properties-of-the-string-prototype-object","aoid":null,"title":"Properties of the String Prototype Object","titleHTML":"Properties of the String Prototype Object","number":"21.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1168","_ref_5775"],"key":"Properties of the String Prototype Object"},{"type":"clause","id":"sec-properties-of-string-instances-length","aoid":null,"title":"length","titleHTML":"length","number":"21.1.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"length"},{"type":"clause","id":"sec-properties-of-string-instances","aoid":null,"title":"Properties of String Instances","titleHTML":"Properties of String Instances","number":"21.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of String Instances"},{"type":"op","aoid":"CreateStringIterator","refId":"sec-createstringiterator","location":"","referencingIds":[],"key":"CreateStringIterator"},{"type":"clause","id":"sec-createstringiterator","aoid":"CreateStringIterator","title":"CreateStringIterator ( string )","titleHTML":"CreateStringIterator ( <var>string</var> )","number":"21.1.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_5958"],"key":"CreateStringIterator ( string )"},{"type":"term","term":"%StringIteratorPrototype%","refId":"sec-%stringiteratorprototype%-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%StringIteratorPrototype%"},{"type":"clause","id":"sec-%stringiteratorprototype%.next","aoid":null,"title":"%StringIteratorPrototype%.next ( )","titleHTML":"%StringIteratorPrototype%.next ( )","number":"21.1.5.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%StringIteratorPrototype%.next ( )"},{"type":"clause","id":"sec-%stringiteratorprototype%-@@tostringtag","aoid":null,"title":"%StringIteratorPrototype% [ @@toStringTag ]","titleHTML":"%StringIteratorPrototype% [ @@toStringTag ]","number":"21.1.5.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%StringIteratorPrototype% [ @@toStringTag ]"},{"type":"clause","id":"sec-%stringiteratorprototype%-object","aoid":null,"title":"The %StringIteratorPrototype% Object","titleHTML":"The %StringIteratorPrototype% Object","number":"21.1.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1167","_ref_5963","_ref_5970"],"key":"The %StringIteratorPrototype% Object"},{"type":"table","id":"table-46","number":52,"caption":"Table 52: Internal Slots of String Iterator Instances","referencingIds":["_ref_539"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 52: Internal Slots of String Iterator Instances"},{"type":"clause","id":"sec-properties-of-string-iterator-instances","aoid":null,"title":"Properties of String Iterator Instances","titleHTML":"Properties of String Iterator Instances","number":"21.1.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_538"],"key":"Properties of String Iterator Instances"},{"type":"clause","id":"sec-string-iterator-objects","aoid":null,"title":"String Iterator Objects","titleHTML":"String Iterator Objects","number":"21.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_109"],"key":"String Iterator Objects"},{"type":"clause","id":"sec-string-objects","aoid":null,"title":"String Objects","titleHTML":"String Objects","number":"21.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_147"],"key":"String Objects"},{"type":"production","id":"prod-Pattern","name":"Pattern","referencingIds":["_ref_8803","_ref_10045","_ref_14361","_ref_14467","_ref_14475","_ref_14564","_ref_14565","_ref_14566","_ref_14693","_ref_14784","_ref_14786","_ref_14787","_ref_14789","_ref_14790","_ref_14791","_ref_14792","_ref_14801"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Pattern"},{"type":"production","id":"prod-Disjunction","name":"Disjunction","referencingIds":["_ref_14362","_ref_14365","_ref_14372","_ref_14373","_ref_14374","_ref_14375","_ref_14386","_ref_14387","_ref_14466","_ref_14571","_ref_14573","_ref_14574","_ref_14575","_ref_14579","_ref_14581","_ref_14583","_ref_14585","_ref_14588","_ref_14612","_ref_14616","_ref_14639","_ref_14640","_ref_14641","_ref_14642","_ref_14643","_ref_14644","_ref_14645","_ref_14646","_ref_14667","_ref_14668","_ref_14671","_ref_14673","_ref_14674","_ref_14675","_ref_14676","_ref_14677","_ref_14678","_ref_14679","_ref_14680","_ref_14681","_ref_14682","_ref_14683","_ref_14684","_ref_14685","_ref_14701","_ref_14954","_ref_14955","_ref_14957","_ref_14958","_ref_14959","_ref_14960","_ref_14963","_ref_14964","_ref_15011","_ref_15013","_ref_15014","_ref_15033","_ref_15034"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Disjunction"},{"type":"production","id":"prod-Alternative","name":"Alternative","referencingIds":["_ref_14363","_ref_14364","_ref_14366","_ref_14576","_ref_14577","_ref_14578","_ref_14580","_ref_14582","_ref_14584","_ref_14586","_ref_14587","_ref_14589","_ref_14590","_ref_14592","_ref_14595","_ref_14599","_ref_14600"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Alternative"},{"type":"production","id":"prod-Term","name":"Term","referencingIds":["_ref_14367","_ref_14591","_ref_14593","_ref_14594","_ref_14596","_ref_14597","_ref_14598","_ref_14601","_ref_14610","_ref_14613"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Term"},{"type":"production","id":"prod-Assertion","name":"Assertion","referencingIds":["_ref_14368","_ref_14602","_ref_14603"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Assertion"},{"type":"production","id":"prod-Quantifier","name":"Quantifier","referencingIds":["_ref_14371","_ref_14607","_ref_14609","_ref_14619","_ref_14620","_ref_14621","_ref_14947","_ref_14949","_ref_14952","_ref_15016","_ref_15018","_ref_15022","_ref_15024"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Quantifier"},{"type":"production","id":"prod-QuantifierPrefix","name":"QuantifierPrefix","referencingIds":["_ref_14376","_ref_14377","_ref_14647","_ref_14648","_ref_14649","_ref_14650"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"QuantifierPrefix"},{"type":"production","id":"prod-Atom","name":"Atom","referencingIds":["_ref_14369","_ref_14370","_ref_14604","_ref_14605","_ref_14606","_ref_14608","_ref_14614","_ref_14617","_ref_14618","_ref_14622","_ref_14623","_ref_14624","_ref_14625","_ref_14626","_ref_14627","_ref_14628","_ref_14629","_ref_14630","_ref_14631","_ref_14632","_ref_14633","_ref_14634","_ref_14635","_ref_14636","_ref_14669","_ref_14672"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Atom"},{"type":"production","id":"prod-SyntaxCharacter","name":"SyntaxCharacter","referencingIds":["_ref_14389","_ref_14426","_ref_14985"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"SyntaxCharacter"},{"type":"production","id":"prod-PatternCharacter","name":"PatternCharacter","referencingIds":["_ref_14382","_ref_14659","_ref_14660","_ref_15039"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"PatternCharacter"},{"type":"production","id":"prod-AtomEscape","name":"AtomEscape","referencingIds":["_ref_14383","_ref_14662","_ref_14663"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"AtomEscape"},{"type":"production","id":"prod-CharacterEscape","name":"CharacterEscape","referencingIds":["_ref_14392","_ref_14465","_ref_14523","_ref_14688","_ref_14689","_ref_14703","_ref_14710","_ref_14774"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CharacterEscape"},{"type":"production","id":"prod-ControlEscape","name":"ControlEscape","referencingIds":["_ref_14394","_ref_14527","_ref_14704","_ref_14978"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ControlEscape"},{"type":"production","id":"prod-ControlLetter","name":"ControlLetter","referencingIds":["_ref_14395","_ref_14445","_ref_14528","_ref_14529","_ref_14705","_ref_14979"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ControlLetter"},{"type":"production","id":"prod-GroupSpecifier","name":"GroupSpecifier","referencingIds":["_ref_14385","_ref_14468","_ref_14476","_ref_14570","_ref_14572","_ref_14611","_ref_14615","_ref_14666","_ref_14670","_ref_14694","_ref_14698","_ref_14699","_ref_14700","_ref_14702","_ref_15010","_ref_15012"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"GroupSpecifier"},{"type":"production","id":"prod-GroupName","name":"GroupName","referencingIds":["_ref_14393","_ref_14400","_ref_14474","_ref_14479","_ref_14692","_ref_14697","_ref_14785","_ref_14797","_ref_14798","_ref_14977"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"GroupName"},{"type":"production","id":"prod-RegExpIdentifierName","name":"RegExpIdentifierName","referencingIds":["_ref_14401","_ref_14403","_ref_14469","_ref_14477","_ref_14478","_ref_14558","_ref_14560","_ref_14563","_ref_14695","_ref_14696","_ref_14799"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegExpIdentifierName"},{"type":"production","id":"prod-RegExpIdentifierStart","name":"RegExpIdentifierStart","referencingIds":["_ref_14402","_ref_14557"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegExpIdentifierStart"},{"type":"production","id":"prod-RegExpIdentifierPart","name":"RegExpIdentifierPart","referencingIds":["_ref_14404","_ref_14559"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegExpIdentifierPart"},{"type":"production","id":"prod-RegExpUnicodeEscapeSequence","name":"RegExpUnicodeEscapeSequence","referencingIds":["_ref_14398","_ref_14406","_ref_14408","_ref_14500","_ref_14501","_ref_14503","_ref_14504","_ref_14561","_ref_14562","_ref_14708","_ref_14982"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"RegExpUnicodeEscapeSequence"},{"type":"production","id":"prod-LeadSurrogate","name":"LeadSurrogate","referencingIds":["_ref_14409","_ref_14411","_ref_14417","_ref_14418","_ref_14533","_ref_14535","_ref_14537","_ref_14538","_ref_14828","_ref_14829"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LeadSurrogate"},{"type":"production","id":"prod-TrailSurrogate","name":"TrailSurrogate","referencingIds":["_ref_14410","_ref_14412","_ref_14416","_ref_14419","_ref_14534","_ref_14536","_ref_14539","_ref_14540","_ref_14827","_ref_14830"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"TrailSurrogate"},{"type":"production","id":"prod-NonSurrogate","name":"NonSurrogate","referencingIds":["_ref_14413","_ref_14541","_ref_14542"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NonSurrogate"},{"type":"production","id":"prod-IdentityEscape","name":"IdentityEscape","referencingIds":["_ref_14283","_ref_14399","_ref_14551","_ref_14552","_ref_14709"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"IdentityEscape"},{"type":"production","id":"prod-DecimalEscape","name":"DecimalEscape","referencingIds":["_ref_14390","_ref_14480","_ref_14481","_ref_14686","_ref_14687","_ref_14711","_ref_14714","_ref_14972","_ref_14973","_ref_14974"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"DecimalEscape"},{"type":"production","id":"prod-CharacterClassEscape","name":"CharacterClassEscape","referencingIds":["_ref_14391","_ref_14464","_ref_14524","_ref_14690","_ref_14691","_ref_14776","_ref_14777","_ref_14975","_ref_14992"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CharacterClassEscape"},{"type":"production","id":"prod-UnicodePropertyValueExpression","name":"UnicodePropertyValueExpression","referencingIds":["_ref_14432","_ref_14433","_ref_14717","_ref_14718","_ref_14719","_ref_14720"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnicodePropertyValueExpression"},{"type":"production","id":"prod-UnicodePropertyName","name":"UnicodePropertyName","referencingIds":["_ref_14434","_ref_14506","_ref_14508","_ref_14510","_ref_14721","_ref_14723"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnicodePropertyName"},{"type":"production","id":"prod-UnicodePropertyNameCharacters","name":"UnicodePropertyNameCharacters","referencingIds":["_ref_14437","_ref_14439","_ref_14554"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnicodePropertyNameCharacters"},{"type":"production","id":"prod-UnicodePropertyValue","name":"UnicodePropertyValue","referencingIds":["_ref_14435","_ref_14507","_ref_14509","_ref_14722","_ref_14724"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnicodePropertyValue"},{"type":"production","id":"prod-LoneUnicodePropertyNameOrValue","name":"LoneUnicodePropertyNameOrValue","referencingIds":["_ref_14436","_ref_14511","_ref_14512","_ref_14725","_ref_14726"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"LoneUnicodePropertyNameOrValue"},{"type":"production","id":"prod-UnicodePropertyValueCharacters","name":"UnicodePropertyValueCharacters","referencingIds":["_ref_14440","_ref_14441","_ref_14443","_ref_14556"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnicodePropertyValueCharacters"},{"type":"production","id":"prod-UnicodePropertyValueCharacter","name":"UnicodePropertyValueCharacter","referencingIds":["_ref_14442","_ref_14555"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnicodePropertyValueCharacter"},{"type":"production","id":"prod-UnicodePropertyNameCharacter","name":"UnicodePropertyNameCharacter","referencingIds":["_ref_14438","_ref_14444","_ref_14553"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"UnicodePropertyNameCharacter"},{"type":"production","id":"prod-CharacterClass","name":"CharacterClass","referencingIds":["_ref_14384","_ref_14664","_ref_14665","_ref_14779","_ref_14962"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"CharacterClass"},{"type":"production","id":"prod-ClassRanges","name":"ClassRanges","referencingIds":["_ref_14446","_ref_14447","_ref_14454","_ref_14460","_ref_14484","_ref_14493","_ref_14727","_ref_14728","_ref_14729","_ref_14730","_ref_14741","_ref_14744","_ref_14753","_ref_14756","_ref_14757","_ref_14760","_ref_14766","_ref_14998","_ref_15003","_ref_15049","_ref_15052","_ref_15055","_ref_15058"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassRanges"},{"type":"production","id":"prod-NonemptyClassRanges","name":"NonemptyClassRanges","referencingIds":["_ref_14448","_ref_14731","_ref_14732"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NonemptyClassRanges"},{"type":"production","id":"prod-NonemptyClassRangesNoDash","name":"NonemptyClassRangesNoDash","referencingIds":["_ref_14451","_ref_14457","_ref_14736","_ref_14738","_ref_14748","_ref_14750"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"NonemptyClassRangesNoDash"},{"type":"production","id":"prod-ClassAtom","name":"ClassAtom","referencingIds":["_ref_14449","_ref_14450","_ref_14452","_ref_14453","_ref_14455","_ref_14459","_ref_14482","_ref_14483","_ref_14485","_ref_14486","_ref_14487","_ref_14488","_ref_14489","_ref_14490","_ref_14492","_ref_14495","_ref_14497","_ref_14499","_ref_14733","_ref_14734","_ref_14735","_ref_14737","_ref_14739","_ref_14740","_ref_14742","_ref_14743","_ref_14745","_ref_14746","_ref_14752","_ref_14755","_ref_14758","_ref_14759","_ref_14761","_ref_14762","_ref_14763","_ref_14764","_ref_14765","_ref_14778","_ref_14780","_ref_14996","_ref_14997","_ref_14999","_ref_15000","_ref_15002","_ref_15005","_ref_15047","_ref_15048","_ref_15050","_ref_15051","_ref_15054","_ref_15057"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassAtom"},{"type":"production","id":"prod-ClassAtomNoDash","name":"ClassAtomNoDash","referencingIds":["_ref_14456","_ref_14458","_ref_14461","_ref_14491","_ref_14494","_ref_14496","_ref_14498","_ref_14747","_ref_14749","_ref_14751","_ref_14754","_ref_14767","_ref_14768"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassAtomNoDash"},{"type":"production","id":"prod-ClassEscape","name":"ClassEscape","referencingIds":["_ref_14463","_ref_14771","_ref_14772","_ref_14773","_ref_14775"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ClassEscape"},{"type":"clause","id":"sec-patterns-static-semantics-early-errors","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"21.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_728"],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-patterns-static-semantics-capturing-group-number","aoid":null,"title":"Static Semantics: CapturingGroupNumber","titleHTML":"Static Semantics: CapturingGroupNumber","number":"21.2.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: CapturingGroupNumber"},{"type":"clause","id":"sec-patterns-static-semantics-is-character-class","aoid":null,"title":"Static Semantics: IsCharacterClass","titleHTML":"Static Semantics: IsCharacterClass","number":"21.2.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_729"],"key":"Static Semantics: IsCharacterClass"},{"type":"table","id":"table-47","number":53,"caption":"Table 53: ControlEscape Code Point Values","referencingIds":["_ref_547"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 53: ControlEscape Code Point Values"},{"type":"clause","id":"sec-patterns-static-semantics-character-value","aoid":null,"title":"Static Semantics: CharacterValue","titleHTML":"Static Semantics: CharacterValue","number":"21.2.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_730"],"key":"Static Semantics: CharacterValue"},{"type":"clause","id":"sec-static-semantics-sourcetext","aoid":null,"title":"Static Semantics: SourceText","titleHTML":"Static Semantics: SourceText","number":"21.2.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: SourceText"},{"type":"clause","id":"sec-regexp-identifier-names-static-semantics-stringvalue","aoid":null,"title":"Static Semantics: StringValue","titleHTML":"Static Semantics: StringValue","number":"21.2.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: StringValue"},{"type":"clause","id":"sec-patterns","aoid":null,"title":"Patterns","titleHTML":"Patterns","number":"21.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_10","_ref_296","_ref_297","_ref_316","_ref_386","_ref_568","_ref_569","_ref_727"],"key":"Patterns"},{"type":"clause","id":"sec-notation","aoid":null,"title":"Notation","titleHTML":"Notation","number":"21.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_540","_ref_564","_ref_573"],"key":"Notation"},{"type":"clause","id":"sec-pattern","aoid":null,"title":"Pattern","titleHTML":"Pattern","number":"21.2.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Pattern"},{"type":"clause","id":"sec-disjunction","aoid":null,"title":"Disjunction","titleHTML":"Disjunction","number":"21.2.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Disjunction"},{"type":"clause","id":"sec-alternative","aoid":null,"title":"Alternative","titleHTML":"Alternative","number":"21.2.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Alternative"},{"type":"op","aoid":"RepeatMatcher","refId":"sec-runtime-semantics-repeatmatcher-abstract-operation","location":"","referencingIds":[],"key":"RepeatMatcher"},{"type":"clause","id":"sec-runtime-semantics-repeatmatcher-abstract-operation","aoid":"RepeatMatcher","title":"Runtime Semantics: RepeatMatcher ( m, min, max, greedy, x, c, parenIndex, parenCount )","titleHTML":"Runtime Semantics: 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> )","number":"21.2.2.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6005","_ref_6006"],"key":"Runtime Semantics: RepeatMatcher ( m, min, max, greedy, x, c, parenIndex, parenCount )"},{"type":"clause","id":"sec-term","aoid":null,"title":"Term","titleHTML":"Term","number":"21.2.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_733","_ref_734"],"key":"Term"},{"type":"op","aoid":"WordCharacters","refId":"sec-runtime-semantics-wordcharacters-abstract-operation","location":"","referencingIds":[],"key":"WordCharacters"},{"type":"clause","id":"sec-runtime-semantics-wordcharacters-abstract-operation","aoid":"WordCharacters","title":"Runtime Semantics: WordCharacters ( )","titleHTML":"Runtime Semantics: WordCharacters ( )","number":"21.2.2.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6016","_ref_6069"],"key":"Runtime Semantics: WordCharacters ( )"},{"type":"op","aoid":"IsWordChar","refId":"sec-runtime-semantics-iswordchar-abstract-operation","location":"","referencingIds":[],"key":"IsWordChar"},{"type":"clause","id":"sec-runtime-semantics-iswordchar-abstract-operation","aoid":"IsWordChar","title":"Runtime Semantics: IsWordChar ( e )","titleHTML":"Runtime Semantics: IsWordChar ( <var>e</var> )","number":"21.2.2.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6008","_ref_6009","_ref_6010","_ref_6011"],"key":"Runtime Semantics: IsWordChar ( e )"},{"type":"clause","id":"sec-assertion","aoid":null,"title":"Assertion","titleHTML":"Assertion","number":"21.2.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_735","_ref_736"],"key":"Assertion"},{"type":"clause","id":"sec-quantifier","aoid":null,"title":"Quantifier","titleHTML":"Quantifier","number":"21.2.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Quantifier"},{"type":"op","aoid":"CharacterSetMatcher","refId":"sec-runtime-semantics-charactersetmatcher-abstract-operation","location":"","referencingIds":[],"key":"CharacterSetMatcher"},{"type":"clause","id":"sec-runtime-semantics-charactersetmatcher-abstract-operation","aoid":"CharacterSetMatcher","title":"Runtime Semantics: CharacterSetMatcher ( A, invert, direction )","titleHTML":"Runtime Semantics: CharacterSetMatcher ( <var>A</var>, <var>invert</var>, <var>direction</var> )","number":"21.2.2.8.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6017","_ref_6018","_ref_6019","_ref_6061","_ref_6062","_ref_8638","_ref_8639"],"key":"Runtime Semantics: CharacterSetMatcher ( A, invert, direction )"},{"type":"op","aoid":"Canonicalize","refId":"sec-runtime-semantics-canonicalize-ch","location":"","referencingIds":[],"key":"Canonicalize"},{"type":"clause","id":"sec-runtime-semantics-canonicalize-ch","aoid":"Canonicalize","title":"Runtime Semantics: Canonicalize ( ch )","titleHTML":"Runtime Semantics: Canonicalize ( <var>ch</var> )","number":"21.2.2.8.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6014","_ref_6027","_ref_6028","_ref_6030","_ref_6067","_ref_6068"],"key":"Runtime Semantics: Canonicalize ( ch )"},{"type":"table","id":"table-nonbinary-unicode-properties","number":54,"caption":"Table 54: Non-binary Unicode property aliases and their canonical property names","referencingIds":["_ref_541","_ref_554","_ref_556","_ref_558","_ref_565"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 54: Non-binary Unicode property aliases and their canonical property names"},{"type":"table","id":"table-binary-unicode-properties","number":55,"caption":"Table 55: Binary Unicode property aliases and their canonical property names","referencingIds":["_ref_545","_ref_555","_ref_557","_ref_567"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 55: Binary Unicode property aliases and their canonical property names"},{"type":"op","aoid":"UnicodeMatchProperty","refId":"sec-runtime-semantics-unicodematchproperty-p","location":"","referencingIds":[],"key":"UnicodeMatchProperty"},{"type":"clause","id":"sec-runtime-semantics-unicodematchproperty-p","aoid":"UnicodeMatchProperty","title":"Runtime Semantics: UnicodeMatchProperty ( p )","titleHTML":"Runtime Semantics: UnicodeMatchProperty ( <var>p</var> )","number":"21.2.2.8.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6070","_ref_6077"],"key":"Runtime Semantics: UnicodeMatchProperty ( p )"},{"type":"table","id":"table-unicode-general-category-values","number":56,"caption":"Table 56: Value aliases and canonical values for the Unicode property <a href=\"https://unicode.org/reports/tr18/#General_Category_Property\">`General_Category`</a>","referencingIds":["_ref_542","_ref_544","_ref_559","_ref_561","_ref_566"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 56: Value aliases and canonical values for the Unicode property <a href=\"https://unicode.org/reports/tr18/#General_Category_Property\">`General_Category`</a>"},{"type":"table","id":"table-unicode-script-values","number":57,"caption":"Table 57: Value aliases and canonical values for the Unicode properties <a href=\"https://unicode.org/reports/tr24/#Script\">`Script`</a> and <a href=\"https://unicode.org/reports/tr24/#Script_Extensions\">`Script_Extensions`</a>","referencingIds":["_ref_543","_ref_560","_ref_562"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 57: Value aliases and canonical values for the Unicode properties <a href=\"https://unicode.org/reports/tr24/#Script\">`Script`</a> and <a href=\"https://unicode.org/reports/tr24/#Script_Extensions\">`Script_Extensions`</a>"},{"type":"op","aoid":"UnicodeMatchPropertyValue","refId":"sec-runtime-semantics-unicodematchpropertyvalue-p-v","location":"","referencingIds":[],"key":"UnicodeMatchPropertyValue"},{"type":"clause","id":"sec-runtime-semantics-unicodematchpropertyvalue-p-v","aoid":"UnicodeMatchPropertyValue","title":"Runtime Semantics: UnicodeMatchPropertyValue ( p, v )","titleHTML":"Runtime Semantics: UnicodeMatchPropertyValue ( <var>p</var>, <var>v</var> )","number":"21.2.2.8.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6074","_ref_6075"],"key":"Runtime Semantics: UnicodeMatchPropertyValue ( p, v )"},{"type":"clause","id":"sec-atom","aoid":null,"title":"Atom","titleHTML":"Atom","number":"21.2.2.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_737"],"key":"Atom"},{"type":"op","aoid":"BackreferenceMatcher","refId":"sec-backreference-matcher","location":"","referencingIds":[],"key":"BackreferenceMatcher"},{"type":"clause","id":"sec-backreference-matcher","aoid":"BackreferenceMatcher","title":"Runtime Semantics: BackreferenceMatcher ( n, direction )","titleHTML":"Runtime Semantics: BackreferenceMatcher ( <var>n</var>, <var>direction</var> )","number":"21.2.2.9.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6060","_ref_6064"],"key":"Runtime Semantics: BackreferenceMatcher ( n, direction )"},{"type":"clause","id":"sec-atomescape","aoid":null,"title":"AtomEscape","titleHTML":"AtomEscape","number":"21.2.2.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AtomEscape"},{"type":"clause","id":"sec-characterescape","aoid":null,"title":"CharacterEscape","titleHTML":"CharacterEscape","number":"21.2.2.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_738"],"key":"CharacterEscape"},{"type":"clause","id":"sec-decimalescape","aoid":null,"title":"DecimalEscape","titleHTML":"DecimalEscape","number":"21.2.2.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DecimalEscape"},{"type":"clause","id":"sec-characterclassescape","aoid":null,"title":"CharacterClassEscape","titleHTML":"CharacterClassEscape","number":"21.2.2.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CharacterClassEscape"},{"type":"clause","id":"sec-characterclass","aoid":null,"title":"CharacterClass","titleHTML":"CharacterClass","number":"21.2.2.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"CharacterClass"},{"type":"clause","id":"sec-classranges","aoid":null,"title":"ClassRanges","titleHTML":"ClassRanges","number":"21.2.2.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ClassRanges"},{"type":"op","aoid":"CharacterRange","refId":"sec-runtime-semantics-characterrange-abstract-operation","location":"","referencingIds":[],"key":"CharacterRange"},{"type":"clause","id":"sec-runtime-semantics-characterrange-abstract-operation","aoid":"CharacterRange","title":"Runtime Semantics: CharacterRange ( A, B )","titleHTML":"Runtime Semantics: CharacterRange ( <var>A</var>, <var>B</var> )","number":"21.2.2.15.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6080","_ref_6083","_ref_8642"],"key":"Runtime Semantics: CharacterRange ( A, B )"},{"type":"clause","id":"sec-nonemptyclassranges","aoid":null,"title":"NonemptyClassRanges","titleHTML":"NonemptyClassRanges","number":"21.2.2.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_739"],"key":"NonemptyClassRanges"},{"type":"clause","id":"sec-nonemptyclassrangesnodash","aoid":null,"title":"NonemptyClassRangesNoDash","titleHTML":"NonemptyClassRangesNoDash","number":"21.2.2.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_740"],"key":"NonemptyClassRangesNoDash"},{"type":"clause","id":"sec-classatom","aoid":null,"title":"ClassAtom","titleHTML":"ClassAtom","number":"21.2.2.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ClassAtom"},{"type":"clause","id":"sec-classatomnodash","aoid":null,"title":"ClassAtomNoDash","titleHTML":"ClassAtomNoDash","number":"21.2.2.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_742"],"key":"ClassAtomNoDash"},{"type":"clause","id":"sec-classescape","aoid":null,"title":"ClassEscape","titleHTML":"ClassEscape","number":"21.2.2.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_741"],"key":"ClassEscape"},{"type":"clause","id":"sec-pattern-semantics","aoid":null,"title":"Pattern Semantics","titleHTML":"Pattern Semantics","number":"21.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_550","_ref_551","_ref_552","_ref_571","_ref_732"],"key":"Pattern Semantics"},{"type":"term","term":"%RegExp%","refId":"sec-regexp-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%RegExp%"},{"type":"clause","id":"sec-regexp-pattern-flags","aoid":null,"title":"RegExp ( pattern, flags )","titleHTML":"RegExp ( <var>pattern</var>, <var>flags</var> )","number":"21.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_808","_ref_852"],"key":"RegExp ( pattern, flags )"},{"type":"op","aoid":"RegExpAlloc","refId":"sec-regexpalloc","location":"","referencingIds":[],"key":"RegExpAlloc"},{"type":"clause","id":"sec-regexpalloc","aoid":"RegExpAlloc","title":"Runtime Semantics: RegExpAlloc ( newTarget )","titleHTML":"Runtime Semantics: RegExpAlloc ( <var>newTarget</var> )","number":"21.2.3.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6095","_ref_6108"],"key":"Runtime Semantics: RegExpAlloc ( newTarget )"},{"type":"op","aoid":"RegExpInitialize","refId":"sec-regexpinitialize","location":"","referencingIds":[],"key":"RegExpInitialize"},{"type":"clause","id":"sec-regexpinitialize","aoid":"RegExpInitialize","title":"Runtime Semantics: RegExpInitialize ( obj, pattern, flags )","titleHTML":"Runtime Semantics: RegExpInitialize ( <var>obj</var>, <var>pattern</var>, <var>flags</var> )","number":"21.2.3.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6096","_ref_6110","_ref_8724"],"key":"Runtime Semantics: RegExpInitialize ( obj, pattern, flags )"},{"type":"op","aoid":"RegExpCreate","refId":"sec-regexpcreate","location":"","referencingIds":[],"key":"RegExpCreate"},{"type":"clause","id":"sec-regexpcreate","aoid":"RegExpCreate","title":"Runtime Semantics: RegExpCreate ( P, F )","titleHTML":"Runtime Semantics: RegExpCreate ( <var>P</var>, <var>F</var> )","number":"21.2.3.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3221","_ref_5849","_ref_5896"],"key":"Runtime Semantics: RegExpCreate ( P, F )"},{"type":"op","aoid":"EscapeRegExpPattern","refId":"sec-escaperegexppattern","location":"","referencingIds":[],"key":"EscapeRegExpPattern"},{"type":"clause","id":"sec-escaperegexppattern","aoid":"EscapeRegExpPattern","title":"Runtime Semantics: EscapeRegExpPattern ( P, F )","titleHTML":"Runtime Semantics: EscapeRegExpPattern ( <var>P</var>, <var>F</var> )","number":"21.2.3.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_809","_ref_6268"],"key":"Runtime Semantics: EscapeRegExpPattern ( P, F )"},{"type":"clause","id":"sec-abstract-operations-for-the-regexp-constructor","aoid":null,"title":"Abstract Operations for the RegExp Constructor","titleHTML":"Abstract Operations for the RegExp Constructor","number":"21.2.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Abstract Operations for the RegExp Constructor"},{"type":"clause","id":"sec-regexp-constructor","aoid":null,"title":"The RegExp Constructor","titleHTML":"The RegExp Constructor","number":"21.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_104","_ref_295","_ref_450","_ref_1149","_ref_1153","_ref_6109","_ref_6119","_ref_6272"],"key":"The RegExp Constructor"},{"type":"clause","id":"sec-regexp.prototype","aoid":null,"title":"RegExp.prototype","titleHTML":"RegExp.prototype","number":"21.2.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RegExp.prototype"},{"type":"clause","id":"sec-get-regexp-@@species","aoid":null,"title":"get RegExp [ @@species ]","titleHTML":"get RegExp [ @@species ]","number":"21.2.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get RegExp [ @@species ]"},{"type":"clause","id":"sec-properties-of-the-regexp-constructor","aoid":null,"title":"Properties of the RegExp Constructor","titleHTML":"Properties of the RegExp Constructor","number":"21.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the RegExp Constructor"},{"type":"term","term":"%RegExpPrototype%","refId":"sec-properties-of-the-regexp-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%RegExpPrototype%"},{"type":"clause","id":"sec-regexp.prototype.constructor","aoid":null,"title":"RegExp.prototype.constructor","titleHTML":"RegExp.prototype.constructor","number":"21.2.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RegExp.prototype.constructor"},{"type":"op","aoid":"RegExpExec","refId":"sec-regexpexec","location":"","referencingIds":[],"key":"RegExpExec"},{"type":"clause","id":"sec-regexpexec","aoid":"RegExpExec","title":"Runtime Semantics: RegExpExec ( R, S )","titleHTML":"Runtime Semantics: RegExpExec ( <var>R</var>, <var>S</var> )","number":"21.2.5.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6196","_ref_6201","_ref_6226","_ref_6258","_ref_6279","_ref_6282","_ref_6305"],"key":"Runtime Semantics: RegExpExec ( R, S )"},{"type":"op","aoid":"RegExpBuiltinExec","refId":"sec-regexpbuiltinexec","location":"","referencingIds":[],"key":"RegExpBuiltinExec"},{"type":"clause","id":"sec-regexpbuiltinexec","aoid":"RegExpBuiltinExec","title":"Runtime Semantics: RegExpBuiltinExec ( R, S )","titleHTML":"Runtime Semantics: RegExpBuiltinExec ( <var>R</var>, <var>S</var> )","number":"21.2.5.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_574","_ref_6002","_ref_6123","_ref_6132"],"key":"Runtime Semantics: RegExpBuiltinExec ( R, S )"},{"type":"op","aoid":"AdvanceStringIndex","refId":"sec-advancestringindex","location":"","referencingIds":[],"key":"AdvanceStringIndex"},{"type":"clause","id":"sec-advancestringindex","aoid":"AdvanceStringIndex","title":"AdvanceStringIndex ( S, index, unicode )","titleHTML":"AdvanceStringIndex ( <var>S</var>, <var>index</var>, <var>unicode</var> )","number":"21.2.5.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6140","_ref_6209","_ref_6231","_ref_6283","_ref_6287"],"key":"AdvanceStringIndex ( S, index, unicode )"},{"type":"clause","id":"sec-regexp.prototype.exec","aoid":null,"title":"RegExp.prototype.exec ( string )","titleHTML":"RegExp.prototype.exec ( <var>string</var> )","number":"21.2.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RegExp.prototype.exec ( string )"},{"type":"clause","id":"sec-get-regexp.prototype.dotAll","aoid":null,"title":"get RegExp.prototype.dotAll","titleHTML":"get RegExp.prototype.dotAll","number":"21.2.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get RegExp.prototype.dotAll"},{"type":"clause","id":"sec-get-regexp.prototype.flags","aoid":null,"title":"get RegExp.prototype.flags","titleHTML":"get RegExp.prototype.flags","number":"21.2.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get RegExp.prototype.flags"},{"type":"clause","id":"sec-get-regexp.prototype.global","aoid":null,"title":"get RegExp.prototype.global","titleHTML":"get RegExp.prototype.global","number":"21.2.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get RegExp.prototype.global"},{"type":"clause","id":"sec-get-regexp.prototype.ignorecase","aoid":null,"title":"get RegExp.prototype.ignoreCase","titleHTML":"get RegExp.prototype.ignoreCase","number":"21.2.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get RegExp.prototype.ignoreCase"},{"type":"clause","id":"sec-regexp.prototype-@@match","aoid":null,"title":"RegExp.prototype [ @@match ] ( string )","titleHTML":"RegExp.prototype [ @@match ] ( <var>string</var> )","number":"21.2.5.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_810"],"key":"RegExp.prototype [ @@match ] ( string )"},{"type":"clause","id":"sec-get-regexp.prototype.multiline","aoid":null,"title":"get RegExp.prototype.multiline","titleHTML":"get RegExp.prototype.multiline","number":"21.2.5.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get RegExp.prototype.multiline"},{"type":"clause","id":"sec-regexp.prototype-@@replace","aoid":null,"title":"RegExp.prototype [ @@replace ] ( string, replaceValue )","titleHTML":"RegExp.prototype [ @@replace ] ( <var>string</var>, <var>replaceValue</var> )","number":"21.2.5.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_811"],"key":"RegExp.prototype [ @@replace ] ( string, replaceValue )"},{"type":"clause","id":"sec-regexp.prototype-@@search","aoid":null,"title":"RegExp.prototype [ @@search ] ( string )","titleHTML":"RegExp.prototype [ @@search ] ( <var>string</var> )","number":"21.2.5.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RegExp.prototype [ @@search ] ( string )"},{"type":"clause","id":"sec-get-regexp.prototype.source","aoid":null,"title":"get RegExp.prototype.source","titleHTML":"get RegExp.prototype.source","number":"21.2.5.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get RegExp.prototype.source"},{"type":"clause","id":"sec-regexp.prototype-@@split","aoid":null,"title":"RegExp.prototype [ @@split ] ( string, limit )","titleHTML":"RegExp.prototype [ @@split ] ( <var>string</var>, <var>limit</var> )","number":"21.2.5.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RegExp.prototype [ @@split ] ( string, limit )"},{"type":"clause","id":"sec-get-regexp.prototype.sticky","aoid":null,"title":"get RegExp.prototype.sticky","titleHTML":"get RegExp.prototype.sticky","number":"21.2.5.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get RegExp.prototype.sticky"},{"type":"clause","id":"sec-regexp.prototype.test","aoid":null,"title":"RegExp.prototype.test ( S )","titleHTML":"RegExp.prototype.test ( <var>S</var> )","number":"21.2.5.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RegExp.prototype.test ( S )"},{"type":"clause","id":"sec-regexp.prototype.tostring","aoid":null,"title":"RegExp.prototype.toString ( )","titleHTML":"RegExp.prototype.toString ( )","number":"21.2.5.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RegExp.prototype.toString ( )"},{"type":"clause","id":"sec-get-regexp.prototype.unicode","aoid":null,"title":"get RegExp.prototype.unicode","titleHTML":"get RegExp.prototype.unicode","number":"21.2.5.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get RegExp.prototype.unicode"},{"type":"clause","id":"sec-properties-of-the-regexp-prototype-object","aoid":null,"title":"Properties of the RegExp Prototype Object","titleHTML":"Properties of the RegExp Prototype Object","number":"21.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_853","_ref_854","_ref_1151","_ref_6114","_ref_6169","_ref_6187","_ref_6191","_ref_6215","_ref_6266","_ref_6302","_ref_6315"],"key":"Properties of the RegExp Prototype Object"},{"type":"clause","id":"sec-lastindex","aoid":null,"title":"lastIndex","titleHTML":"lastIndex","number":"21.2.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"lastIndex"},{"type":"clause","id":"sec-properties-of-regexp-instances","aoid":null,"title":"Properties of RegExp Instances","titleHTML":"Properties of RegExp Instances","number":"21.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of RegExp Instances"},{"type":"clause","id":"sec-regexp-regular-expression-objects","aoid":null,"title":"RegExp (Regular Expression) Objects","titleHTML":"RegExp (Regular Expression) Objects","number":"21.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_294"],"key":"RegExp (Regular Expression) Objects"},{"type":"clause","id":"sec-text-processing","aoid":null,"title":"Text Processing","titleHTML":"Text Processing","number":"21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Text Processing"},{"type":"term","term":"%Array%","refId":"sec-array-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Array%"},{"type":"clause","id":"sec-array-constructor-array","aoid":null,"title":"Array ( )","titleHTML":"Array ( )","number":"22.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array ( )"},{"type":"clause","id":"sec-array-len","aoid":null,"title":"Array ( len )","titleHTML":"Array ( <var>len</var> )","number":"22.1.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array ( len )"},{"type":"clause","id":"sec-array-items","aoid":null,"title":"Array ( ...items )","titleHTML":"Array ( ...<var>items</var> )","number":"22.1.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array ( ...items )"},{"type":"clause","id":"sec-array-constructor","aoid":null,"title":"The Array Constructor","titleHTML":"The Array Constructor","number":"22.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_52","_ref_430","_ref_1004","_ref_1014","_ref_2684","_ref_6414"],"key":"The Array Constructor"},{"type":"clause","id":"sec-array.from","aoid":null,"title":"Array.from ( items [ , mapfn [ , thisArg ] ] )","titleHTML":"Array.from ( <var>items</var> [ , <var>mapfn</var> [ , <var>thisArg</var> ] ] )","number":"22.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.from ( items [ , mapfn [ , thisArg ] ] )"},{"type":"clause","id":"sec-array.isarray","aoid":null,"title":"Array.isArray ( arg )","titleHTML":"Array.isArray ( <var>arg</var> )","number":"22.1.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.isArray ( arg )"},{"type":"clause","id":"sec-array.of","aoid":null,"title":"Array.of ( ...items )","titleHTML":"Array.of ( ...<var>items</var> )","number":"22.1.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.of ( ...items )"},{"type":"clause","id":"sec-array.prototype","aoid":null,"title":"Array.prototype","titleHTML":"Array.prototype","number":"22.1.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype"},{"type":"clause","id":"sec-get-array-@@species","aoid":null,"title":"get Array [ @@species ]","titleHTML":"get Array [ @@species ]","number":"22.1.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get Array [ @@species ]"},{"type":"clause","id":"sec-properties-of-the-array-constructor","aoid":null,"title":"Properties of the Array Constructor","titleHTML":"Properties of the Array Constructor","number":"22.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Array Constructor"},{"type":"term","term":"%ArrayPrototype%","refId":"sec-properties-of-the-array-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ArrayPrototype%"},{"type":"op","aoid":"IsConcatSpreadable","refId":"sec-isconcatspreadable","location":"","referencingIds":[],"key":"IsConcatSpreadable"},{"type":"clause","id":"sec-isconcatspreadable","aoid":"IsConcatSpreadable","title":"Runtime Semantics: IsConcatSpreadable ( O )","titleHTML":"Runtime Semantics: IsConcatSpreadable ( <var>O</var> )","number":"22.1.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6399"],"key":"Runtime Semantics: IsConcatSpreadable ( O )"},{"type":"clause","id":"sec-array.prototype.concat","aoid":null,"title":"Array.prototype.concat ( ...arguments )","titleHTML":"Array.prototype.concat ( ...<var>arguments</var> )","number":"22.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_27"],"key":"Array.prototype.concat ( ...arguments )"},{"type":"clause","id":"sec-array.prototype.constructor","aoid":null,"title":"Array.prototype.constructor","titleHTML":"Array.prototype.constructor","number":"22.1.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype.constructor"},{"type":"clause","id":"sec-array.prototype.copywithin","aoid":null,"title":"Array.prototype.copyWithin ( target, start [ , end ] )","titleHTML":"Array.prototype.copyWithin ( <var>target</var>, <var>start</var> [ , <var>end</var> ] )","number":"22.1.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_584"],"key":"Array.prototype.copyWithin ( target, start [ , end ] )"},{"type":"term","term":"%ArrayProto_entries%","refId":"sec-array.prototype.entries","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ArrayProto_entries%"},{"type":"clause","id":"sec-array.prototype.entries","aoid":null,"title":"Array.prototype.entries ( )","titleHTML":"Array.prototype.entries ( )","number":"22.1.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_56","_ref_1015"],"key":"Array.prototype.entries ( )"},{"type":"clause","id":"sec-array.prototype.every","aoid":null,"title":"Array.prototype.every ( callbackfn [ , thisArg ] )","titleHTML":"Array.prototype.every ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"22.1.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_586"],"key":"Array.prototype.every ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-array.prototype.fill","aoid":null,"title":"Array.prototype.fill ( value [ , start [ , end ] ] )","titleHTML":"Array.prototype.fill ( <var>value</var> [ , <var>start</var> [ , <var>end</var> ] ] )","number":"22.1.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_587"],"key":"Array.prototype.fill ( value [ , start [ , end ] ] )"},{"type":"clause","id":"sec-array.prototype.filter","aoid":null,"title":"Array.prototype.filter ( callbackfn [ , thisArg ] )","titleHTML":"Array.prototype.filter ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"22.1.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_588"],"key":"Array.prototype.filter ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-array.prototype.find","aoid":null,"title":"Array.prototype.find ( predicate [ , thisArg ] )","titleHTML":"Array.prototype.find ( <var>predicate</var> [ , <var>thisArg</var> ] )","number":"22.1.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_589"],"key":"Array.prototype.find ( predicate [ , thisArg ] )"},{"type":"clause","id":"sec-array.prototype.findindex","aoid":null,"title":"Array.prototype.findIndex ( predicate [ , thisArg ] )","titleHTML":"Array.prototype.findIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )","number":"22.1.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_591"],"key":"Array.prototype.findIndex ( predicate [ , thisArg ] )"},{"type":"op","aoid":"FlattenIntoArray","refId":"sec-flattenintoarray","location":"","referencingIds":[],"key":"FlattenIntoArray"},{"type":"clause","id":"sec-flattenintoarray","aoid":"FlattenIntoArray","title":"FlattenIntoArray(target, source, sourceLen, start, depth [ , mapperFunction, thisArg ])","titleHTML":"FlattenIntoArray(<var>target</var>, <var>source</var>, <var>sourceLen</var>, <var>start</var>, <var>depth</var> [ , <var>mapperFunction</var>, <var>thisArg</var> ])","number":"22.1.3.10.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6489","_ref_6498","_ref_6506"],"key":"FlattenIntoArray(target, source, sourceLen, start, depth [ , mapperFunction, thisArg ])"},{"type":"clause","id":"sec-array.prototype.flat","aoid":null,"title":"Array.prototype.flat( [ depth ] )","titleHTML":"Array.prototype.flat( [ <var>depth</var> ] )","number":"22.1.3.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype.flat( [ depth ] )"},{"type":"clause","id":"sec-array.prototype.flatmap","aoid":null,"title":"Array.prototype.flatMap ( mapperFunction [ , thisArg ] )","titleHTML":"Array.prototype.flatMap ( <var>mapperFunction</var> [ , <var>thisArg</var> ] )","number":"22.1.3.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype.flatMap ( mapperFunction [ , thisArg ] )"},{"type":"term","term":"%ArrayProto_forEach%","refId":"sec-array.prototype.foreach","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ArrayProto_forEach%"},{"type":"clause","id":"sec-array.prototype.foreach","aoid":null,"title":"Array.prototype.forEach ( callbackfn [ , thisArg ] )","titleHTML":"Array.prototype.forEach ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"22.1.3.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_57","_ref_593","_ref_1018"],"key":"Array.prototype.forEach ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-array.prototype.includes","aoid":null,"title":"Array.prototype.includes ( searchElement [ , fromIndex ] )","titleHTML":"Array.prototype.includes ( <var>searchElement</var> [ , <var>fromIndex</var> ] )","number":"22.1.3.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_595"],"key":"Array.prototype.includes ( searchElement [ , fromIndex ] )"},{"type":"clause","id":"sec-array.prototype.indexof","aoid":null,"title":"Array.prototype.indexOf ( searchElement [ , fromIndex ] )","titleHTML":"Array.prototype.indexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )","number":"22.1.3.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_597"],"key":"Array.prototype.indexOf ( searchElement [ , fromIndex ] )"},{"type":"clause","id":"sec-array.prototype.join","aoid":null,"title":"Array.prototype.join ( separator )","titleHTML":"Array.prototype.join ( <var>separator</var> )","number":"22.1.3.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_599"],"key":"Array.prototype.join ( separator )"},{"type":"term","term":"%ArrayProto_keys%","refId":"sec-array.prototype.keys","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ArrayProto_keys%"},{"type":"clause","id":"sec-array.prototype.keys","aoid":null,"title":"Array.prototype.keys ( )","titleHTML":"Array.prototype.keys ( )","number":"22.1.3.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_58","_ref_1021"],"key":"Array.prototype.keys ( )"},{"type":"clause","id":"sec-array.prototype.lastindexof","aoid":null,"title":"Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )","titleHTML":"Array.prototype.lastIndexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )","number":"22.1.3.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_601"],"key":"Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )"},{"type":"clause","id":"sec-array.prototype.map","aoid":null,"title":"Array.prototype.map ( callbackfn [ , thisArg ] )","titleHTML":"Array.prototype.map ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"22.1.3.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_603"],"key":"Array.prototype.map ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-array.prototype.pop","aoid":null,"title":"Array.prototype.pop ( )","titleHTML":"Array.prototype.pop ( )","number":"22.1.3.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype.pop ( )"},{"type":"clause","id":"sec-array.prototype.push","aoid":null,"title":"Array.prototype.push ( ...items )","titleHTML":"Array.prototype.push ( ...<var>items</var> )","number":"22.1.3.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype.push ( ...items )"},{"type":"clause","id":"sec-array.prototype.reduce","aoid":null,"title":"Array.prototype.reduce ( callbackfn [ , initialValue ] )","titleHTML":"Array.prototype.reduce ( <var>callbackfn</var> [ , <var>initialValue</var> ] )","number":"22.1.3.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_604"],"key":"Array.prototype.reduce ( callbackfn [ , initialValue ] )"},{"type":"clause","id":"sec-array.prototype.reduceright","aoid":null,"title":"Array.prototype.reduceRight ( callbackfn [ , initialValue ] )","titleHTML":"Array.prototype.reduceRight ( <var>callbackfn</var> [ , <var>initialValue</var> ] )","number":"22.1.3.22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_606"],"key":"Array.prototype.reduceRight ( callbackfn [ , initialValue ] )"},{"type":"clause","id":"sec-array.prototype.reverse","aoid":null,"title":"Array.prototype.reverse ( )","titleHTML":"Array.prototype.reverse ( )","number":"22.1.3.23","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_608"],"key":"Array.prototype.reverse ( )"},{"type":"clause","id":"sec-array.prototype.shift","aoid":null,"title":"Array.prototype.shift ( )","titleHTML":"Array.prototype.shift ( )","number":"22.1.3.24","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype.shift ( )"},{"type":"clause","id":"sec-array.prototype.slice","aoid":null,"title":"Array.prototype.slice ( start, end )","titleHTML":"Array.prototype.slice ( <var>start</var>, <var>end</var> )","number":"22.1.3.25","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_618"],"key":"Array.prototype.slice ( start, end )"},{"type":"clause","id":"sec-array.prototype.some","aoid":null,"title":"Array.prototype.some ( callbackfn [ , thisArg ] )","titleHTML":"Array.prototype.some ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"22.1.3.26","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_622"],"key":"Array.prototype.some ( callbackfn [ , thisArg ] )"},{"type":"op","aoid":"SortCompare","refId":"sec-sortcompare","location":"","referencingIds":[],"key":"SortCompare"},{"type":"clause","id":"sec-sortcompare","aoid":"SortCompare","title":"Runtime Semantics: SortCompare ( x, y )","titleHTML":"Runtime Semantics: SortCompare ( <var>x</var>, <var>y</var> )","number":"22.1.3.27.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_813","_ref_6667","_ref_6677","_ref_6679","_ref_6682","_ref_6685","_ref_6687","_ref_6688","_ref_6691","_ref_6692","_ref_7032","_ref_7034","_ref_7035"],"key":"Runtime Semantics: SortCompare ( x, y )"},{"type":"clause","id":"sec-array.prototype.sort","aoid":null,"title":"Array.prototype.sort ( comparefn )","titleHTML":"Array.prototype.sort ( <var>comparefn</var> )","number":"22.1.3.27","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_525","_ref_624","_ref_626","_ref_627","_ref_812"],"key":"Array.prototype.sort ( comparefn )"},{"type":"clause","id":"sec-array.prototype.splice","aoid":null,"title":"Array.prototype.splice ( start, deleteCount, ...items )","titleHTML":"Array.prototype.splice ( <var>start</var>, <var>deleteCount</var>, ...<var>items</var> )","number":"22.1.3.28","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype.splice ( start, deleteCount, ...items )"},{"type":"clause","id":"sec-array.prototype.tolocalestring","aoid":null,"title":"Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )","titleHTML":"Array.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )","number":"22.1.3.29","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_629"],"key":"Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"},{"type":"clause","id":"sec-array.prototype.tostring","aoid":null,"title":"Array.prototype.toString ( )","titleHTML":"Array.prototype.toString ( )","number":"22.1.3.30","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_631"],"key":"Array.prototype.toString ( )"},{"type":"clause","id":"sec-array.prototype.unshift","aoid":null,"title":"Array.prototype.unshift ( ...items )","titleHTML":"Array.prototype.unshift ( ...<var>items</var> )","number":"22.1.3.31","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype.unshift ( ...items )"},{"type":"term","term":"%ArrayProto_values%","refId":"sec-array.prototype.values","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ArrayProto_values%"},{"type":"clause","id":"sec-array.prototype.values","aoid":null,"title":"Array.prototype.values ( )","titleHTML":"Array.prototype.values ( )","number":"22.1.3.32","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_59","_ref_1024","_ref_2791","_ref_2810"],"key":"Array.prototype.values ( )"},{"type":"clause","id":"sec-array.prototype-@@iterator","aoid":null,"title":"Array.prototype [ @@iterator ] ( )","titleHTML":"Array.prototype [ @@iterator ] ( )","number":"22.1.3.33","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype [ @@iterator ] ( )"},{"type":"clause","id":"sec-array.prototype-@@unscopables","aoid":null,"title":"Array.prototype [ @@unscopables ]","titleHTML":"Array.prototype [ @@unscopables ]","number":"22.1.3.34","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array.prototype [ @@unscopables ]"},{"type":"clause","id":"sec-properties-of-the-array-prototype-object","aoid":null,"title":"Properties of the Array Prototype Object","titleHTML":"Properties of the Array Prototype Object","number":"22.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_55","_ref_1012","_ref_1017","_ref_1020","_ref_1023","_ref_1026","_ref_2671","_ref_6389"],"key":"Properties of the Array Prototype Object"},{"type":"clause","id":"sec-properties-of-array-instances-length","aoid":null,"title":"length","titleHTML":"length","number":"22.1.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"length"},{"type":"clause","id":"sec-properties-of-array-instances","aoid":null,"title":"Properties of Array Instances","titleHTML":"Properties of Array Instances","number":"22.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Array Instances"},{"type":"op","aoid":"CreateArrayIterator","refId":"sec-createarrayiterator","location":"","referencingIds":[],"key":"CreateArrayIterator"},{"type":"clause","id":"sec-createarrayiterator","aoid":"CreateArrayIterator","title":"CreateArrayIterator ( array, kind )","titleHTML":"CreateArrayIterator ( <var>array</var>, <var>kind</var> )","number":"22.1.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6435","_ref_6547","_ref_6765","_ref_6901","_ref_6947","_ref_7059"],"key":"CreateArrayIterator ( array, kind )"},{"type":"term","term":"%ArrayIteratorPrototype%","refId":"sec-%arrayiteratorprototype%-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ArrayIteratorPrototype%"},{"type":"clause","id":"sec-%arrayiteratorprototype%.next","aoid":null,"title":"%ArrayIteratorPrototype%.next ( )","titleHTML":"%ArrayIteratorPrototype%.next ( )","number":"22.1.5.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%ArrayIteratorPrototype%.next ( )"},{"type":"clause","id":"sec-%arrayiteratorprototype%-@@tostringtag","aoid":null,"title":"%ArrayIteratorPrototype% [ @@toStringTag ]","titleHTML":"%ArrayIteratorPrototype% [ @@toStringTag ]","number":"22.1.5.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%ArrayIteratorPrototype% [ @@toStringTag ]"},{"type":"clause","id":"sec-%arrayiteratorprototype%-object","aoid":null,"title":"The %ArrayIteratorPrototype% Object","titleHTML":"The %ArrayIteratorPrototype% Object","number":"22.1.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1011","_ref_6790","_ref_6804"],"key":"The %ArrayIteratorPrototype% Object"},{"type":"table","id":"table-48","number":58,"caption":"Table 58: Internal Slots of Array Iterator Instances","referencingIds":["_ref_580"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 58: Internal Slots of Array Iterator Instances"},{"type":"clause","id":"sec-properties-of-array-iterator-instances","aoid":null,"title":"Properties of Array Iterator Instances","titleHTML":"Properties of Array Iterator Instances","number":"22.1.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_579"],"key":"Properties of Array Iterator Instances"},{"type":"clause","id":"sec-array-iterator-objects","aoid":null,"title":"Array Iterator Objects","titleHTML":"Array Iterator Objects","number":"22.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_54"],"key":"Array Iterator Objects"},{"type":"clause","id":"sec-array-objects","aoid":null,"title":"Array Objects","titleHTML":"Array Objects","number":"22.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Array Objects"},{"type":"table","id":"table-49","number":59,"caption":"Table 59: The TypedArray Constructors","referencingIds":["_ref_235","_ref_236","_ref_237","_ref_238","_ref_582","_ref_583","_ref_585","_ref_611","_ref_612","_ref_614","_ref_615","_ref_616","_ref_617","_ref_619","_ref_620","_ref_621","_ref_628","_ref_632","_ref_633","_ref_634","_ref_635","_ref_636","_ref_637","_ref_638","_ref_639","_ref_640","_ref_641","_ref_642","_ref_643","_ref_644","_ref_645","_ref_646","_ref_647","_ref_649","_ref_656","_ref_657","_ref_658","_ref_659","_ref_660","_ref_661","_ref_662","_ref_663","_ref_664","_ref_665","_ref_666","_ref_667","_ref_668","_ref_669","_ref_670","_ref_671"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 59: The TypedArray Constructors"},{"type":"term","term":"%TypedArray%","refId":"sec-%typedarray%-intrinsic-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%TypedArray%"},{"type":"clause","id":"sec-%typedarray%","aoid":null,"title":"%TypedArray% ( )","titleHTML":"%TypedArray% ( )","number":"22.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray% ( )"},{"type":"clause","id":"sec-%typedarray%-intrinsic-object","aoid":null,"title":"The %TypedArray% Intrinsic Object","titleHTML":"The %TypedArray% Intrinsic Object","number":"22.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_113","_ref_1180","_ref_1183","_ref_4763","_ref_6824","_ref_6826","_ref_6828","_ref_6858","_ref_6860","_ref_6866","_ref_6870","_ref_6875","_ref_6880","_ref_6881","_ref_6882","_ref_6902","_ref_6905","_ref_6917","_ref_6928","_ref_6931","_ref_6934","_ref_6937","_ref_6940","_ref_6943","_ref_6948","_ref_6951","_ref_6956","_ref_6964","_ref_6967","_ref_6970","_ref_6973","_ref_7006","_ref_7024","_ref_7027","_ref_7028","_ref_7031","_ref_7033","_ref_7052","_ref_7055","_ref_7061","_ref_7062","_ref_7070","_ref_7144"],"key":"The %TypedArray% Intrinsic Object"},{"type":"op","aoid":"IterableToList","refId":"sec-iterabletolist","location":"","referencingIds":[],"key":"IterableToList"},{"type":"clause","id":"sec-iterabletolist","aoid":"IterableToList","title":"Runtime Semantics: IterableToList ( items, method )","titleHTML":"Runtime Semantics: IterableToList ( <var>items</var>, <var>method</var> )","number":"22.2.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6833","_ref_7113"],"key":"Runtime Semantics: IterableToList ( items, method )"},{"type":"clause","id":"sec-%typedarray%.from","aoid":null,"title":"%TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )","titleHTML":"%TypedArray%.from ( <var>source</var> [ , <var>mapfn</var> [ , <var>thisArg</var> ] ] )","number":"22.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )"},{"type":"clause","id":"sec-%typedarray%.of","aoid":null,"title":"%TypedArray%.of ( ...items )","titleHTML":"%TypedArray%.of ( ...<var>items</var> )","number":"22.2.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.of ( ...items )"},{"type":"clause","id":"sec-%typedarray%.prototype","aoid":null,"title":"%TypedArray%.prototype","titleHTML":"%TypedArray%.prototype","number":"22.2.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype"},{"type":"clause","id":"sec-get-%typedarray%-@@species","aoid":null,"title":"get %TypedArray% [ @@species ]","titleHTML":"get %TypedArray% [ @@species ]","number":"22.2.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get %TypedArray% [ @@species ]"},{"type":"clause","id":"sec-properties-of-the-%typedarray%-intrinsic-object","aoid":null,"title":"Properties of the %TypedArray% Intrinsic Object","titleHTML":"Properties of the %TypedArray% Intrinsic Object","number":"22.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the %TypedArray% Intrinsic Object"},{"type":"term","term":"%TypedArrayPrototype%","refId":"sec-properties-of-the-%typedarrayprototype%-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%TypedArrayPrototype%"},{"type":"clause","id":"sec-get-%typedarray%.prototype.buffer","aoid":null,"title":"get %TypedArray%.prototype.buffer","titleHTML":"get %TypedArray%.prototype.buffer","number":"22.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get %TypedArray%.prototype.buffer"},{"type":"clause","id":"sec-get-%typedarray%.prototype.bytelength","aoid":null,"title":"get %TypedArray%.prototype.byteLength","titleHTML":"get %TypedArray%.prototype.byteLength","number":"22.2.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get %TypedArray%.prototype.byteLength"},{"type":"clause","id":"sec-get-%typedarray%.prototype.byteoffset","aoid":null,"title":"get %TypedArray%.prototype.byteOffset","titleHTML":"get %TypedArray%.prototype.byteOffset","number":"22.2.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get %TypedArray%.prototype.byteOffset"},{"type":"clause","id":"sec-%typedarray%.prototype.constructor","aoid":null,"title":"%TypedArray%.prototype.constructor","titleHTML":"%TypedArray%.prototype.constructor","number":"22.2.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.constructor"},{"type":"op","aoid":"ValidateTypedArray","refId":"sec-validatetypedarray","location":"","referencingIds":[],"key":"ValidateTypedArray"},{"type":"clause","id":"sec-validatetypedarray","aoid":"ValidateTypedArray","title":"Runtime Semantics: ValidateTypedArray ( O )","titleHTML":"Runtime Semantics: ValidateTypedArray ( <var>O</var> )","number":"22.2.3.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6883","_ref_6900","_ref_6903","_ref_6906","_ref_6918","_ref_6929","_ref_6932","_ref_6935","_ref_6938","_ref_6941","_ref_6944","_ref_6946","_ref_6949","_ref_6957","_ref_6965","_ref_6968","_ref_6971","_ref_7007","_ref_7025","_ref_7030","_ref_7053","_ref_7058","_ref_7137"],"key":"Runtime Semantics: ValidateTypedArray ( O )"},{"type":"clause","id":"sec-%typedarray%.prototype.copywithin","aoid":null,"title":"%TypedArray%.prototype.copyWithin ( target, start [ , end ] )","titleHTML":"%TypedArray%.prototype.copyWithin ( <var>target</var>, <var>start</var> [ , <var>end</var> ] )","number":"22.2.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.copyWithin ( target, start [ , end ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.entries","aoid":null,"title":"%TypedArray%.prototype.entries ( )","titleHTML":"%TypedArray%.prototype.entries ( )","number":"22.2.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.entries ( )"},{"type":"clause","id":"sec-%typedarray%.prototype.every","aoid":null,"title":"%TypedArray%.prototype.every ( callbackfn [ , thisArg ] )","titleHTML":"%TypedArray%.prototype.every ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"22.2.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.every ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.fill","aoid":null,"title":"%TypedArray%.prototype.fill ( value [ , start [ , end ] ] )","titleHTML":"%TypedArray%.prototype.fill ( <var>value</var> [ , <var>start</var> [ , <var>end</var> ] ] )","number":"22.2.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.fill ( value [ , start [ , end ] ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.filter","aoid":null,"title":"%TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )","titleHTML":"%TypedArray%.prototype.filter ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"22.2.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.find","aoid":null,"title":"%TypedArray%.prototype.find ( predicate [ , thisArg ] )","titleHTML":"%TypedArray%.prototype.find ( <var>predicate</var> [ , <var>thisArg</var> ] )","number":"22.2.3.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.find ( predicate [ , thisArg ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.findindex","aoid":null,"title":"%TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )","titleHTML":"%TypedArray%.prototype.findIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )","number":"22.2.3.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.foreach","aoid":null,"title":"%TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )","titleHTML":"%TypedArray%.prototype.forEach ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"22.2.3.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.includes","aoid":null,"title":"%TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )","titleHTML":"%TypedArray%.prototype.includes ( <var>searchElement</var> [ , <var>fromIndex</var> ] )","number":"22.2.3.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.indexof","aoid":null,"title":"%TypedArray%.prototype.indexOf ( searchElement [ , fromIndex ] )","titleHTML":"%TypedArray%.prototype.indexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )","number":"22.2.3.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.indexOf ( searchElement [ , fromIndex ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.join","aoid":null,"title":"%TypedArray%.prototype.join ( separator )","titleHTML":"%TypedArray%.prototype.join ( <var>separator</var> )","number":"22.2.3.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.join ( separator )"},{"type":"clause","id":"sec-%typedarray%.prototype.keys","aoid":null,"title":"%TypedArray%.prototype.keys ( )","titleHTML":"%TypedArray%.prototype.keys ( )","number":"22.2.3.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.keys ( )"},{"type":"clause","id":"sec-%typedarray%.prototype.lastindexof","aoid":null,"title":"%TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )","titleHTML":"%TypedArray%.prototype.lastIndexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )","number":"22.2.3.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )"},{"type":"clause","id":"sec-get-%typedarray%.prototype.length","aoid":null,"title":"get %TypedArray%.prototype.length","titleHTML":"get %TypedArray%.prototype.length","number":"22.2.3.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get %TypedArray%.prototype.length"},{"type":"clause","id":"sec-%typedarray%.prototype.map","aoid":null,"title":"%TypedArray%.prototype.map ( callbackfn [ , thisArg ] )","titleHTML":"%TypedArray%.prototype.map ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"22.2.3.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.map ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.reduce","aoid":null,"title":"%TypedArray%.prototype.reduce ( callbackfn [ , initialValue ] )","titleHTML":"%TypedArray%.prototype.reduce ( <var>callbackfn</var> [ , <var>initialValue</var> ] )","number":"22.2.3.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.reduce ( callbackfn [ , initialValue ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.reduceright","aoid":null,"title":"%TypedArray%.prototype.reduceRight ( callbackfn [ , initialValue ] )","titleHTML":"%TypedArray%.prototype.reduceRight ( <var>callbackfn</var> [ , <var>initialValue</var> ] )","number":"22.2.3.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.reduceRight ( callbackfn [ , initialValue ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.reverse","aoid":null,"title":"%TypedArray%.prototype.reverse ( )","titleHTML":"%TypedArray%.prototype.reverse ( )","number":"22.2.3.22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.reverse ( )"},{"type":"clause","id":"sec-%typedarray%.prototype.set-array-offset","aoid":null,"title":"%TypedArray%.prototype.set ( array [ , offset ] )","titleHTML":"%TypedArray%.prototype.set ( <var>array</var> [ , <var>offset</var> ] )","number":"22.2.3.23.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_613"],"key":"%TypedArray%.prototype.set ( array [ , offset ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.set-typedarray-offset","aoid":null,"title":"%TypedArray%.prototype.set ( typedArray [ , offset ] )","titleHTML":"%TypedArray%.prototype.set ( <var>typedArray</var> [ , <var>offset</var> ] )","number":"22.2.3.23.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_610"],"key":"%TypedArray%.prototype.set ( typedArray [ , offset ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.set-overloaded-offset","aoid":null,"title":"%TypedArray%.prototype.set ( overloaded [ , offset ] )","titleHTML":"%TypedArray%.prototype.set ( <var>overloaded</var> [ , <var>offset</var> ] )","number":"22.2.3.23","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.set ( overloaded [ , offset ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.slice","aoid":null,"title":"%TypedArray%.prototype.slice ( start, end )","titleHTML":"%TypedArray%.prototype.slice ( <var>start</var>, <var>end</var> )","number":"22.2.3.24","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.slice ( start, end )"},{"type":"clause","id":"sec-%typedarray%.prototype.some","aoid":null,"title":"%TypedArray%.prototype.some ( callbackfn [ , thisArg ] )","titleHTML":"%TypedArray%.prototype.some ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"22.2.3.25","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.some ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.sort","aoid":null,"title":"%TypedArray%.prototype.sort ( comparefn )","titleHTML":"%TypedArray%.prototype.sort ( <var>comparefn</var> )","number":"22.2.3.26","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.sort ( comparefn )"},{"type":"clause","id":"sec-%typedarray%.prototype.subarray","aoid":null,"title":"%TypedArray%.prototype.subarray ( begin, end )","titleHTML":"%TypedArray%.prototype.subarray ( <var>begin</var>, <var>end</var> )","number":"22.2.3.27","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.subarray ( begin, end )"},{"type":"clause","id":"sec-%typedarray%.prototype.tolocalestring","aoid":null,"title":"%TypedArray%.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )","titleHTML":"%TypedArray%.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )","number":"22.2.3.28","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"},{"type":"clause","id":"sec-%typedarray%.prototype.tostring","aoid":null,"title":"%TypedArray%.prototype.toString ( )","titleHTML":"%TypedArray%.prototype.toString ( )","number":"22.2.3.29","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.toString ( )"},{"type":"clause","id":"sec-%typedarray%.prototype.values","aoid":null,"title":"%TypedArray%.prototype.values ( )","titleHTML":"%TypedArray%.prototype.values ( )","number":"22.2.3.30","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype.values ( )"},{"type":"clause","id":"sec-%typedarray%.prototype-@@iterator","aoid":null,"title":"%TypedArray%.prototype [ @@iterator ] ( )","titleHTML":"%TypedArray%.prototype [ @@iterator ] ( )","number":"22.2.3.31","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%TypedArray%.prototype [ @@iterator ] ( )"},{"type":"clause","id":"sec-get-%typedarray%.prototype-@@tostringtag","aoid":null,"title":"get %TypedArray%.prototype [ @@toStringTag ]","titleHTML":"get %TypedArray%.prototype [ @@toStringTag ]","number":"22.2.3.32","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get %TypedArray%.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-%typedarrayprototype%-object","aoid":null,"title":"Properties of the %TypedArrayPrototype% Object","titleHTML":"Properties of the %TypedArrayPrototype% Object","number":"22.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1181","_ref_6859","_ref_6862","_ref_7146"],"key":"Properties of the %TypedArrayPrototype% Object"},{"type":"clause","id":"sec-typedarray","aoid":null,"title":"TypedArray ( )","titleHTML":"<var>TypedArray</var> ( )","number":"22.2.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"TypedArray ( )"},{"type":"op","aoid":"AllocateTypedArray","refId":"sec-allocatetypedarray","location":"","referencingIds":[],"key":"AllocateTypedArray"},{"type":"clause","id":"sec-allocatetypedarray","aoid":"AllocateTypedArray","title":"Runtime Semantics: AllocateTypedArray ( constructorName, newTarget, defaultProto [ , length ] )","titleHTML":"Runtime Semantics: AllocateTypedArray ( <var>constructorName</var>, <var>newTarget</var>, <var>defaultProto</var> [ , <var>length</var> ] )","number":"22.2.4.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7073","_ref_7079","_ref_7095","_ref_7111","_ref_7129"],"key":"Runtime Semantics: AllocateTypedArray ( constructorName, newTarget, defaultProto [ , length ] )"},{"type":"op","aoid":"AllocateTypedArrayBuffer","refId":"sec-allocatetypedarraybuffer","location":"","referencingIds":[],"key":"AllocateTypedArrayBuffer"},{"type":"clause","id":"sec-allocatetypedarraybuffer","aoid":"AllocateTypedArrayBuffer","title":"Runtime Semantics: AllocateTypedArrayBuffer ( O, length )","titleHTML":"Runtime Semantics: AllocateTypedArrayBuffer ( <var>O</var>, <var>length</var> )","number":"22.2.4.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7085","_ref_7114","_ref_7121"],"key":"Runtime Semantics: AllocateTypedArrayBuffer ( O, length )"},{"type":"clause","id":"sec-typedarray-length","aoid":null,"title":"TypedArray ( length )","titleHTML":"<var>TypedArray</var> ( <var>length</var> )","number":"22.2.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"TypedArray ( length )"},{"type":"clause","id":"sec-typedarray-typedarray","aoid":null,"title":"TypedArray ( typedArray )","titleHTML":"<var>TypedArray</var> ( <var>typedArray</var> )","number":"22.2.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"TypedArray ( typedArray )"},{"type":"clause","id":"sec-typedarray-object","aoid":null,"title":"TypedArray ( object )","titleHTML":"<var>TypedArray</var> ( <var>object</var> )","number":"22.2.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"TypedArray ( object )"},{"type":"clause","id":"sec-typedarray-buffer-byteoffset-length","aoid":null,"title":"TypedArray ( buffer [ , byteOffset [ , length ] ] )","titleHTML":"<var>TypedArray</var> ( <var>buffer</var> [ , <var>byteOffset</var> [ , <var>length</var> ] ] )","number":"22.2.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"TypedArray ( buffer [ , byteOffset [ , length ] ] )"},{"type":"op","aoid":"TypedArrayCreate","refId":"typedarray-create","location":"","referencingIds":[],"key":"TypedArrayCreate"},{"type":"clause","id":"typedarray-create","aoid":"TypedArrayCreate","title":"TypedArrayCreate ( constructor, argumentList )","titleHTML":"TypedArrayCreate ( <var>constructor</var>, <var>argumentList</var> )","number":"22.2.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6834","_ref_6843","_ref_6855","_ref_7142"],"key":"TypedArrayCreate ( constructor, argumentList )"},{"type":"op","aoid":"TypedArraySpeciesCreate","refId":"typedarray-species-create","location":"","referencingIds":[],"key":"TypedArraySpeciesCreate"},{"type":"clause","id":"typedarray-species-create","aoid":"TypedArraySpeciesCreate","title":"TypedArraySpeciesCreate ( exemplar, argumentList )","titleHTML":"TypedArraySpeciesCreate ( <var>exemplar</var>, <var>argumentList</var> )","number":"22.2.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6925","_ref_6959","_ref_7015","_ref_7051"],"key":"TypedArraySpeciesCreate ( exemplar, argumentList )"},{"type":"clause","id":"sec-typedarray-constructors","aoid":null,"title":"The TypedArray Constructors","titleHTML":"The <var>TypedArray</var> Constructors","number":"22.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_437","_ref_438","_ref_440","_ref_441","_ref_442","_ref_457","_ref_458","_ref_459","_ref_460"],"key":"The TypedArray Constructors"},{"type":"clause","id":"sec-typedarray.bytes_per_element","aoid":null,"title":"TypedArray.BYTES_PER_ELEMENT","titleHTML":"<var>TypedArray</var>.BYTES_PER_ELEMENT","number":"22.2.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"TypedArray.BYTES_PER_ELEMENT"},{"type":"clause","id":"sec-typedarray.prototype","aoid":null,"title":"TypedArray.prototype","titleHTML":"<var>TypedArray</var>.prototype","number":"22.2.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"TypedArray.prototype"},{"type":"clause","id":"sec-properties-of-the-typedarray-constructors","aoid":null,"title":"Properties of the TypedArray Constructors","titleHTML":"Properties of the <var>TypedArray</var> Constructors","number":"22.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the TypedArray Constructors"},{"type":"clause","id":"sec-typedarray.prototype.bytes_per_element","aoid":null,"title":"TypedArray.prototype.BYTES_PER_ELEMENT","titleHTML":"<var>TypedArray</var>.prototype.BYTES_PER_ELEMENT","number":"22.2.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"TypedArray.prototype.BYTES_PER_ELEMENT"},{"type":"clause","id":"sec-typedarray.prototype.constructor","aoid":null,"title":"TypedArray.prototype.constructor","titleHTML":"<var>TypedArray</var>.prototype.constructor","number":"22.2.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"TypedArray.prototype.constructor"},{"type":"clause","id":"sec-properties-of-typedarray-prototype-objects","aoid":null,"title":"Properties of the TypedArray Prototype Objects","titleHTML":"Properties of the <var>TypedArray</var> Prototype Objects","number":"22.2.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_648"],"key":"Properties of the TypedArray Prototype Objects"},{"type":"clause","id":"sec-properties-of-typedarray-instances","aoid":null,"title":"Properties of TypedArray Instances","titleHTML":"Properties of <var>TypedArray</var> Instances","number":"22.2.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of TypedArray Instances"},{"type":"clause","id":"sec-typedarray-objects","aoid":null,"title":"TypedArray Objects","titleHTML":"TypedArray Objects","number":"22.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_75","_ref_76","_ref_79","_ref_80","_ref_81","_ref_115","_ref_116","_ref_117","_ref_118"],"key":"TypedArray Objects"},{"type":"clause","id":"sec-indexed-collections","aoid":null,"title":"Indexed Collections","titleHTML":"Indexed Collections","number":"22","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Indexed Collections"},{"type":"term","term":"%Map%","refId":"sec-map-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Map%"},{"type":"clause","id":"sec-map-iterable","aoid":null,"title":"Map ( [ iterable ] )","titleHTML":"Map ( [ <var>iterable</var> ] )","number":"23.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map ( [ iterable ] )"},{"type":"op","aoid":"AddEntriesFromIterable","refId":"sec-add-entries-from-iterable","location":"","referencingIds":[],"key":"AddEntriesFromIterable"},{"type":"clause","id":"sec-add-entries-from-iterable","aoid":"AddEntriesFromIterable","title":"AddEntriesFromIterable ( target, iterable, adder )","titleHTML":"AddEntriesFromIterable ( <var>target</var>, <var>iterable</var>, <var>adder</var> )","number":"23.1.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4928","_ref_7155","_ref_7303"],"key":"AddEntriesFromIterable ( target, iterable, adder )"},{"type":"clause","id":"sec-map-constructor","aoid":null,"title":"The Map Constructor","titleHTML":"The Map Constructor","number":"23.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_85","_ref_443","_ref_1100","_ref_1105","_ref_7186"],"key":"The Map Constructor"},{"type":"clause","id":"sec-map.prototype","aoid":null,"title":"Map.prototype","titleHTML":"Map.prototype","number":"23.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype"},{"type":"clause","id":"sec-get-map-@@species","aoid":null,"title":"get Map [ @@species ]","titleHTML":"get Map [ @@species ]","number":"23.1.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get Map [ @@species ]"},{"type":"clause","id":"sec-properties-of-the-map-constructor","aoid":null,"title":"Properties of the Map Constructor","titleHTML":"Properties of the Map Constructor","number":"23.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Map Constructor"},{"type":"term","term":"%MapPrototype%","refId":"sec-properties-of-the-map-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%MapPrototype%"},{"type":"clause","id":"sec-map.prototype.clear","aoid":null,"title":"Map.prototype.clear ( )","titleHTML":"Map.prototype.clear ( )","number":"23.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype.clear ( )"},{"type":"clause","id":"sec-map.prototype.constructor","aoid":null,"title":"Map.prototype.constructor","titleHTML":"Map.prototype.constructor","number":"23.1.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype.constructor"},{"type":"clause","id":"sec-map.prototype.delete","aoid":null,"title":"Map.prototype.delete ( key )","titleHTML":"Map.prototype.delete ( <var>key</var> )","number":"23.1.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype.delete ( key )"},{"type":"clause","id":"sec-map.prototype.entries","aoid":null,"title":"Map.prototype.entries ( )","titleHTML":"Map.prototype.entries ( )","number":"23.1.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype.entries ( )"},{"type":"clause","id":"sec-map.prototype.foreach","aoid":null,"title":"Map.prototype.forEach ( callbackfn [ , thisArg ] )","titleHTML":"Map.prototype.forEach ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"23.1.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype.forEach ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-map.prototype.get","aoid":null,"title":"Map.prototype.get ( key )","titleHTML":"Map.prototype.get ( <var>key</var> )","number":"23.1.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype.get ( key )"},{"type":"clause","id":"sec-map.prototype.has","aoid":null,"title":"Map.prototype.has ( key )","titleHTML":"Map.prototype.has ( <var>key</var> )","number":"23.1.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype.has ( key )"},{"type":"clause","id":"sec-map.prototype.keys","aoid":null,"title":"Map.prototype.keys ( )","titleHTML":"Map.prototype.keys ( )","number":"23.1.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype.keys ( )"},{"type":"clause","id":"sec-map.prototype.set","aoid":null,"title":"Map.prototype.set ( key, value )","titleHTML":"Map.prototype.set ( <var>key</var>, <var>value</var> )","number":"23.1.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype.set ( key, value )"},{"type":"clause","id":"sec-get-map.prototype.size","aoid":null,"title":"get Map.prototype.size","titleHTML":"get Map.prototype.size","number":"23.1.3.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get Map.prototype.size"},{"type":"clause","id":"sec-map.prototype.values","aoid":null,"title":"Map.prototype.values ( )","titleHTML":"Map.prototype.values ( )","number":"23.1.3.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype.values ( )"},{"type":"clause","id":"sec-map.prototype-@@iterator","aoid":null,"title":"Map.prototype [ @@iterator ] ( )","titleHTML":"Map.prototype [ @@iterator ] ( )","number":"23.1.3.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype [ @@iterator ] ( )"},{"type":"clause","id":"sec-map.prototype-@@tostringtag","aoid":null,"title":"Map.prototype [ @@toStringTag ]","titleHTML":"Map.prototype [ @@toStringTag ]","number":"23.1.3.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-map-prototype-object","aoid":null,"title":"Properties of the Map Prototype Object","titleHTML":"Properties of the Map Prototype Object","number":"23.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1103","_ref_7175"],"key":"Properties of the Map Prototype Object"},{"type":"clause","id":"sec-properties-of-map-instances","aoid":null,"title":"Properties of Map Instances","titleHTML":"Properties of Map Instances","number":"23.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Map Instances"},{"type":"op","aoid":"CreateMapIterator","refId":"sec-createmapiterator","location":"","referencingIds":[],"key":"CreateMapIterator"},{"type":"clause","id":"sec-createmapiterator","aoid":"CreateMapIterator","title":"CreateMapIterator ( map, kind )","titleHTML":"CreateMapIterator ( <var>map</var>, <var>kind</var> )","number":"23.1.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7191","_ref_7205","_ref_7215"],"key":"CreateMapIterator ( map, kind )"},{"type":"term","term":"%MapIteratorPrototype%","refId":"sec-%mapiteratorprototype%-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%MapIteratorPrototype%"},{"type":"clause","id":"sec-%mapiteratorprototype%.next","aoid":null,"title":"%MapIteratorPrototype%.next ( )","titleHTML":"%MapIteratorPrototype%.next ( )","number":"23.1.5.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%MapIteratorPrototype%.next ( )"},{"type":"clause","id":"sec-%mapiteratorprototype%-@@tostringtag","aoid":null,"title":"%MapIteratorPrototype% [ @@toStringTag ]","titleHTML":"%MapIteratorPrototype% [ @@toStringTag ]","number":"23.1.5.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%MapIteratorPrototype% [ @@toStringTag ]"},{"type":"clause","id":"sec-%mapiteratorprototype%-object","aoid":null,"title":"The %MapIteratorPrototype% Object","titleHTML":"The %MapIteratorPrototype% Object","number":"23.1.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1102","_ref_7220","_ref_7231"],"key":"The %MapIteratorPrototype% Object"},{"type":"table","id":"table-50","number":60,"caption":"Table 60: Internal Slots of Map Iterator Instances","referencingIds":["_ref_652"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 60: Internal Slots of Map Iterator Instances"},{"type":"clause","id":"sec-properties-of-map-iterator-instances","aoid":null,"title":"Properties of Map Iterator Instances","titleHTML":"Properties of Map Iterator Instances","number":"23.1.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_651"],"key":"Properties of Map Iterator Instances"},{"type":"clause","id":"sec-map-iterator-objects","aoid":null,"title":"Map Iterator Objects","titleHTML":"Map Iterator Objects","number":"23.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_86"],"key":"Map Iterator Objects"},{"type":"clause","id":"sec-map-objects","aoid":null,"title":"Map Objects","titleHTML":"Map Objects","number":"23.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Map Objects"},{"type":"term","term":"%Set%","refId":"sec-set-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Set%"},{"type":"clause","id":"sec-set-iterable","aoid":null,"title":"Set ( [ iterable ] )","titleHTML":"Set ( [ <var>iterable</var> ] )","number":"23.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set ( [ iterable ] )"},{"type":"clause","id":"sec-set-constructor","aoid":null,"title":"The Set Constructor","titleHTML":"The Set Constructor","number":"23.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_105","_ref_451","_ref_1154","_ref_1159","_ref_7263"],"key":"The Set Constructor"},{"type":"clause","id":"sec-set.prototype","aoid":null,"title":"Set.prototype","titleHTML":"Set.prototype","number":"23.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype"},{"type":"clause","id":"sec-get-set-@@species","aoid":null,"title":"get Set [ @@species ]","titleHTML":"get Set [ @@species ]","number":"23.2.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get Set [ @@species ]"},{"type":"clause","id":"sec-properties-of-the-set-constructor","aoid":null,"title":"Properties of the Set Constructor","titleHTML":"Properties of the Set Constructor","number":"23.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Set Constructor"},{"type":"term","term":"%SetPrototype%","refId":"sec-properties-of-the-set-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%SetPrototype%"},{"type":"clause","id":"sec-set.prototype.add","aoid":null,"title":"Set.prototype.add ( value )","titleHTML":"Set.prototype.add ( <var>value</var> )","number":"23.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype.add ( value )"},{"type":"clause","id":"sec-set.prototype.clear","aoid":null,"title":"Set.prototype.clear ( )","titleHTML":"Set.prototype.clear ( )","number":"23.2.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype.clear ( )"},{"type":"clause","id":"sec-set.prototype.constructor","aoid":null,"title":"Set.prototype.constructor","titleHTML":"Set.prototype.constructor","number":"23.2.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype.constructor"},{"type":"clause","id":"sec-set.prototype.delete","aoid":null,"title":"Set.prototype.delete ( value )","titleHTML":"Set.prototype.delete ( <var>value</var> )","number":"23.2.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype.delete ( value )"},{"type":"clause","id":"sec-set.prototype.entries","aoid":null,"title":"Set.prototype.entries ( )","titleHTML":"Set.prototype.entries ( )","number":"23.2.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype.entries ( )"},{"type":"clause","id":"sec-set.prototype.foreach","aoid":null,"title":"Set.prototype.forEach ( callbackfn [ , thisArg ] )","titleHTML":"Set.prototype.forEach ( <var>callbackfn</var> [ , <var>thisArg</var> ] )","number":"23.2.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype.forEach ( callbackfn [ , thisArg ] )"},{"type":"clause","id":"sec-set.prototype.has","aoid":null,"title":"Set.prototype.has ( value )","titleHTML":"Set.prototype.has ( <var>value</var> )","number":"23.2.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype.has ( value )"},{"type":"clause","id":"sec-set.prototype.keys","aoid":null,"title":"Set.prototype.keys ( )","titleHTML":"Set.prototype.keys ( )","number":"23.2.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype.keys ( )"},{"type":"clause","id":"sec-get-set.prototype.size","aoid":null,"title":"get Set.prototype.size","titleHTML":"get Set.prototype.size","number":"23.2.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get Set.prototype.size"},{"type":"clause","id":"sec-set.prototype.values","aoid":null,"title":"Set.prototype.values ( )","titleHTML":"Set.prototype.values ( )","number":"23.2.3.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype.values ( )"},{"type":"clause","id":"sec-set.prototype-@@iterator","aoid":null,"title":"Set.prototype [ @@iterator ] ( )","titleHTML":"Set.prototype [ @@iterator ] ( )","number":"23.2.3.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype [ @@iterator ] ( )"},{"type":"clause","id":"sec-set.prototype-@@tostringtag","aoid":null,"title":"Set.prototype [ @@toStringTag ]","titleHTML":"Set.prototype [ @@toStringTag ]","number":"23.2.3.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-set-prototype-object","aoid":null,"title":"Properties of the Set Prototype Object","titleHTML":"Properties of the Set Prototype Object","number":"23.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1157","_ref_7250"],"key":"Properties of the Set Prototype Object"},{"type":"clause","id":"sec-properties-of-set-instances","aoid":null,"title":"Properties of Set Instances","titleHTML":"Properties of Set Instances","number":"23.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Set Instances"},{"type":"op","aoid":"CreateSetIterator","refId":"sec-createsetiterator","location":"","referencingIds":[],"key":"CreateSetIterator"},{"type":"clause","id":"sec-createsetiterator","aoid":"CreateSetIterator","title":"CreateSetIterator ( set, kind )","titleHTML":"CreateSetIterator ( <var>set</var>, <var>kind</var> )","number":"23.2.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7267","_ref_7279"],"key":"CreateSetIterator ( set, kind )"},{"type":"term","term":"%SetIteratorPrototype%","refId":"sec-%setiteratorprototype%-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%SetIteratorPrototype%"},{"type":"clause","id":"sec-%setiteratorprototype%.next","aoid":null,"title":"%SetIteratorPrototype%.next ( )","titleHTML":"%SetIteratorPrototype%.next ( )","number":"23.2.5.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%SetIteratorPrototype%.next ( )"},{"type":"clause","id":"sec-%setiteratorprototype%-@@tostringtag","aoid":null,"title":"%SetIteratorPrototype% [ @@toStringTag ]","titleHTML":"%SetIteratorPrototype% [ @@toStringTag ]","number":"23.2.5.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%SetIteratorPrototype% [ @@toStringTag ]"},{"type":"clause","id":"sec-%setiteratorprototype%-object","aoid":null,"title":"The %SetIteratorPrototype% Object","titleHTML":"The %SetIteratorPrototype% Object","number":"23.2.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1156","_ref_7284","_ref_7294"],"key":"The %SetIteratorPrototype% Object"},{"type":"table","id":"table-51","number":61,"caption":"Table 61: Internal Slots of Set Iterator Instances","referencingIds":["_ref_654"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 61: Internal Slots of Set Iterator Instances"},{"type":"clause","id":"sec-properties-of-set-iterator-instances","aoid":null,"title":"Properties of Set Iterator Instances","titleHTML":"Properties of Set Iterator Instances","number":"23.2.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_653"],"key":"Properties of Set Iterator Instances"},{"type":"clause","id":"sec-set-iterator-objects","aoid":null,"title":"Set Iterator Objects","titleHTML":"Set Iterator Objects","number":"23.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_106"],"key":"Set Iterator Objects"},{"type":"clause","id":"sec-set-objects","aoid":null,"title":"Set Objects","titleHTML":"Set Objects","number":"23.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Set Objects"},{"type":"term","term":"%WeakMap%","refId":"sec-weakmap-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%WeakMap%"},{"type":"clause","id":"sec-weakmap-iterable","aoid":null,"title":"WeakMap ( [ iterable ] )","titleHTML":"WeakMap ( [ <var>iterable</var> ] )","number":"23.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakMap ( [ iterable ] )"},{"type":"clause","id":"sec-weakmap-constructor","aoid":null,"title":"The WeakMap Constructor","titleHTML":"The WeakMap Constructor","number":"23.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_120","_ref_462","_ref_1196","_ref_1200","_ref_7308"],"key":"The WeakMap Constructor"},{"type":"clause","id":"sec-weakmap.prototype","aoid":null,"title":"WeakMap.prototype","titleHTML":"WeakMap.prototype","number":"23.3.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakMap.prototype"},{"type":"clause","id":"sec-properties-of-the-weakmap-constructor","aoid":null,"title":"Properties of the WeakMap Constructor","titleHTML":"Properties of the WeakMap Constructor","number":"23.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the WeakMap Constructor"},{"type":"term","term":"%WeakMapPrototype%","refId":"sec-properties-of-the-weakmap-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%WeakMapPrototype%"},{"type":"clause","id":"sec-weakmap.prototype.constructor","aoid":null,"title":"WeakMap.prototype.constructor","titleHTML":"WeakMap.prototype.constructor","number":"23.3.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakMap.prototype.constructor"},{"type":"clause","id":"sec-weakmap.prototype.delete","aoid":null,"title":"WeakMap.prototype.delete ( key )","titleHTML":"WeakMap.prototype.delete ( <var>key</var> )","number":"23.3.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakMap.prototype.delete ( key )"},{"type":"clause","id":"sec-weakmap.prototype.get","aoid":null,"title":"WeakMap.prototype.get ( key )","titleHTML":"WeakMap.prototype.get ( <var>key</var> )","number":"23.3.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakMap.prototype.get ( key )"},{"type":"clause","id":"sec-weakmap.prototype.has","aoid":null,"title":"WeakMap.prototype.has ( key )","titleHTML":"WeakMap.prototype.has ( <var>key</var> )","number":"23.3.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakMap.prototype.has ( key )"},{"type":"clause","id":"sec-weakmap.prototype.set","aoid":null,"title":"WeakMap.prototype.set ( key, value )","titleHTML":"WeakMap.prototype.set ( <var>key</var>, <var>value</var> )","number":"23.3.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakMap.prototype.set ( key, value )"},{"type":"clause","id":"sec-weakmap.prototype-@@tostringtag","aoid":null,"title":"WeakMap.prototype [ @@toStringTag ]","titleHTML":"WeakMap.prototype [ @@toStringTag ]","number":"23.3.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakMap.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-weakmap-prototype-object","aoid":null,"title":"Properties of the WeakMap Prototype Object","titleHTML":"Properties of the WeakMap Prototype Object","number":"23.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1198","_ref_7306"],"key":"Properties of the WeakMap Prototype Object"},{"type":"clause","id":"sec-properties-of-weakmap-instances","aoid":null,"title":"Properties of WeakMap Instances","titleHTML":"Properties of WeakMap Instances","number":"23.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of WeakMap Instances"},{"type":"clause","id":"sec-weakmap-objects","aoid":null,"title":"WeakMap Objects","titleHTML":"WeakMap Objects","number":"23.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_655"],"key":"WeakMap Objects"},{"type":"term","term":"%WeakSet%","refId":"sec-weakset-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%WeakSet%"},{"type":"clause","id":"sec-weakset-iterable","aoid":null,"title":"WeakSet ( [ iterable ] )","titleHTML":"WeakSet ( [ <var>iterable</var> ] )","number":"23.4.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakSet ( [ iterable ] )"},{"type":"clause","id":"sec-weakset-constructor","aoid":null,"title":"The WeakSet Constructor","titleHTML":"The WeakSet Constructor","number":"23.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_121","_ref_1201","_ref_1205","_ref_7352"],"key":"The WeakSet Constructor"},{"type":"clause","id":"sec-weakset.prototype","aoid":null,"title":"WeakSet.prototype","titleHTML":"WeakSet.prototype","number":"23.4.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakSet.prototype"},{"type":"clause","id":"sec-properties-of-the-weakset-constructor","aoid":null,"title":"Properties of the WeakSet Constructor","titleHTML":"Properties of the WeakSet Constructor","number":"23.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the WeakSet Constructor"},{"type":"term","term":"%WeakSetPrototype%","refId":"sec-properties-of-the-weakset-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%WeakSetPrototype%"},{"type":"clause","id":"sec-weakset.prototype.add","aoid":null,"title":"WeakSet.prototype.add ( value )","titleHTML":"WeakSet.prototype.add ( <var>value</var> )","number":"23.4.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakSet.prototype.add ( value )"},{"type":"clause","id":"sec-weakset.prototype.constructor","aoid":null,"title":"WeakSet.prototype.constructor","titleHTML":"WeakSet.prototype.constructor","number":"23.4.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakSet.prototype.constructor"},{"type":"clause","id":"sec-weakset.prototype.delete","aoid":null,"title":"WeakSet.prototype.delete ( value )","titleHTML":"WeakSet.prototype.delete ( <var>value</var> )","number":"23.4.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakSet.prototype.delete ( value )"},{"type":"clause","id":"sec-weakset.prototype.has","aoid":null,"title":"WeakSet.prototype.has ( value )","titleHTML":"WeakSet.prototype.has ( <var>value</var> )","number":"23.4.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakSet.prototype.has ( value )"},{"type":"clause","id":"sec-weakset.prototype-@@tostringtag","aoid":null,"title":"WeakSet.prototype [ @@toStringTag ]","titleHTML":"WeakSet.prototype [ @@toStringTag ]","number":"23.4.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"WeakSet.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-weakset-prototype-object","aoid":null,"title":"Properties of the WeakSet Prototype Object","titleHTML":"Properties of the WeakSet Prototype Object","number":"23.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1203","_ref_7346"],"key":"Properties of the WeakSet Prototype Object"},{"type":"clause","id":"sec-properties-of-weakset-instances","aoid":null,"title":"Properties of WeakSet Instances","titleHTML":"Properties of WeakSet Instances","number":"23.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of WeakSet Instances"},{"type":"clause","id":"sec-weakset-objects","aoid":null,"title":"WeakSet Objects","titleHTML":"WeakSet Objects","number":"23.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_463"],"key":"WeakSet Objects"},{"type":"clause","id":"sec-keyed-collections","aoid":null,"title":"Keyed Collections","titleHTML":"Keyed Collections","number":"23","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Keyed Collections"},{"type":"op","aoid":"AllocateArrayBuffer","refId":"sec-allocatearraybuffer","location":"","referencingIds":[],"key":"AllocateArrayBuffer"},{"type":"clause","id":"sec-allocatearraybuffer","aoid":"AllocateArrayBuffer","title":"AllocateArrayBuffer ( constructor, byteLength )","titleHTML":"AllocateArrayBuffer ( <var>constructor</var>, <var>byteLength</var> )","number":"24.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7089","_ref_7103","_ref_7378","_ref_7439"],"key":"AllocateArrayBuffer ( constructor, byteLength )"},{"type":"op","aoid":"IsDetachedBuffer","refId":"sec-isdetachedbuffer","location":"","referencingIds":[],"key":"IsDetachedBuffer"},{"type":"clause","id":"sec-isdetachedbuffer","aoid":"IsDetachedBuffer","title":"IsDetachedBuffer ( arrayBuffer )","titleHTML":"IsDetachedBuffer ( <var>arrayBuffer</var> )","number":"24.1.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2837","_ref_2879","_ref_2886","_ref_6794","_ref_6874","_ref_6879","_ref_6894","_ref_6899","_ref_6914","_ref_6955","_ref_6979","_ref_6986","_ref_6992","_ref_6993","_ref_7021","_ref_7041","_ref_7096","_ref_7104","_ref_7133","_ref_7379","_ref_7383","_ref_7403","_ref_7451","_ref_7455","_ref_7467","_ref_7469","_ref_7514","_ref_7521","_ref_7529","_ref_7532","_ref_7543","_ref_7547"],"key":"IsDetachedBuffer ( arrayBuffer )"},{"type":"op","aoid":"DetachArrayBuffer","refId":"sec-detacharraybuffer","location":"","referencingIds":[],"key":"DetachArrayBuffer"},{"type":"clause","id":"sec-detacharraybuffer","aoid":"DetachArrayBuffer","title":"DetachArrayBuffer ( arrayBuffer [ , key ] )","titleHTML":"DetachArrayBuffer ( <var>arrayBuffer</var> [ , <var>key</var> ] )","number":"24.1.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7471"],"key":"DetachArrayBuffer ( arrayBuffer [ , key ] )"},{"type":"op","aoid":"CloneArrayBuffer","refId":"sec-clonearraybuffer","location":"","referencingIds":[],"key":"CloneArrayBuffer"},{"type":"clause","id":"sec-clonearraybuffer","aoid":"CloneArrayBuffer","title":"CloneArrayBuffer ( srcBuffer, srcByteOffset, srcLength, cloneConstructor )","titleHTML":"CloneArrayBuffer ( <var>srcBuffer</var>, <var>srcByteOffset</var>, <var>srcLength</var>, <var>cloneConstructor</var> )","number":"24.1.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6998","_ref_7102"],"key":"CloneArrayBuffer ( srcBuffer, srcByteOffset, srcLength, cloneConstructor )"},{"type":"op","aoid":"RawBytesToNumber","refId":"sec-rawbytestonumber","location":"","referencingIds":[],"key":"RawBytesToNumber"},{"type":"clause","id":"sec-rawbytestonumber","aoid":"RawBytesToNumber","title":"RawBytesToNumber ( type, rawBytes, isLittleEndian )","titleHTML":"RawBytesToNumber ( <var>type</var>, <var>rawBytes</var>, <var>isLittleEndian</var> )","number":"24.1.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7397","_ref_7433"],"key":"RawBytesToNumber ( type, rawBytes, isLittleEndian )"},{"type":"op","aoid":"GetValueFromBuffer","refId":"sec-getvaluefrombuffer","location":"","referencingIds":[],"key":"GetValueFromBuffer"},{"type":"clause","id":"sec-getvaluefrombuffer","aoid":"GetValueFromBuffer","title":"GetValueFromBuffer ( arrayBuffer, byteIndex, type, isTypedArray, order [ , isLittleEndian ] )","titleHTML":"GetValueFromBuffer ( <var>arrayBuffer</var>, <var>byteIndex</var>, <var>type</var>, <var>isTypedArray</var>, <var>order</var> [ , <var>isLittleEndian</var> ] )","number":"24.1.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2243","_ref_2881","_ref_6895","_ref_7002","_ref_7004","_ref_7022","_ref_7105","_ref_7515","_ref_7648"],"key":"GetValueFromBuffer ( arrayBuffer, byteIndex, type, isTypedArray, order [ , isLittleEndian ] )"},{"type":"op","aoid":"NumberToRawBytes","refId":"sec-numbertorawbytes","location":"","referencingIds":[],"key":"NumberToRawBytes"},{"type":"clause","id":"sec-numbertorawbytes","aoid":"NumberToRawBytes","title":"NumberToRawBytes ( type, value, isLittleEndian )","titleHTML":"NumberToRawBytes ( <var>type</var>, <var>value</var>, <var>isLittleEndian</var> )","number":"24.1.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7410","_ref_7425","_ref_7662"],"key":"NumberToRawBytes ( type, value, isLittleEndian )"},{"type":"op","aoid":"SetValueInBuffer","refId":"sec-setvalueinbuffer","location":"","referencingIds":[],"key":"SetValueInBuffer"},{"type":"clause","id":"sec-setvalueinbuffer","aoid":"SetValueInBuffer","title":"SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isTypedArray, order [ , isLittleEndian ] )","titleHTML":"SetValueInBuffer ( <var>arrayBuffer</var>, <var>byteIndex</var>, <var>type</var>, <var>value</var>, <var>isTypedArray</var>, <var>order</var> [ , <var>isLittleEndian</var> ] )","number":"24.1.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2244","_ref_2888","_ref_6896","_ref_6987","_ref_7003","_ref_7005","_ref_7023","_ref_7106","_ref_7522","_ref_7678"],"key":"SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isTypedArray, order [ , isLittleEndian ] )"},{"type":"op","aoid":"GetModifySetValueInBuffer","refId":"sec-getmodifysetvalueinbuffer","location":"","referencingIds":[],"key":"GetModifySetValueInBuffer"},{"type":"clause","id":"sec-getmodifysetvalueinbuffer","aoid":"GetModifySetValueInBuffer","title":"GetModifySetValueInBuffer ( arrayBuffer, byteIndex, type, value, op [ , isLittleEndian ] )","titleHTML":"GetModifySetValueInBuffer ( <var>arrayBuffer</var>, <var>byteIndex</var>, <var>type</var>, <var>value</var>, <var>op</var> [ , <var>isLittleEndian</var> ] )","number":"24.1.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7645","_ref_7664"],"key":"GetModifySetValueInBuffer ( arrayBuffer, byteIndex, type, value, op [ , isLittleEndian ] )"},{"type":"clause","id":"sec-abstract-operations-for-arraybuffer-objects","aoid":null,"title":"Abstract Operations For ArrayBuffer Objects","titleHTML":"Abstract Operations For ArrayBuffer Objects","number":"24.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Abstract Operations For ArrayBuffer Objects"},{"type":"term","term":"%ArrayBuffer%","refId":"sec-arraybuffer-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ArrayBuffer%"},{"type":"clause","id":"sec-arraybuffer-length","aoid":null,"title":"ArrayBuffer ( length )","titleHTML":"ArrayBuffer ( <var>length</var> )","number":"24.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ArrayBuffer ( length )"},{"type":"clause","id":"sec-arraybuffer-constructor","aoid":null,"title":"The ArrayBuffer Constructor","titleHTML":"The ArrayBuffer Constructor","number":"24.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_53","_ref_431","_ref_1006","_ref_1010","_ref_6999","_ref_7000","_ref_7090","_ref_7099","_ref_7100","_ref_7452","_ref_7464"],"key":"The ArrayBuffer Constructor"},{"type":"clause","id":"sec-arraybuffer.isview","aoid":null,"title":"ArrayBuffer.isView ( arg )","titleHTML":"ArrayBuffer.isView ( <var>arg</var> )","number":"24.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ArrayBuffer.isView ( arg )"},{"type":"clause","id":"sec-arraybuffer.prototype","aoid":null,"title":"ArrayBuffer.prototype","titleHTML":"ArrayBuffer.prototype","number":"24.1.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ArrayBuffer.prototype"},{"type":"clause","id":"sec-get-arraybuffer-@@species","aoid":null,"title":"get ArrayBuffer [ @@species ]","titleHTML":"get ArrayBuffer [ @@species ]","number":"24.1.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get ArrayBuffer [ @@species ]"},{"type":"clause","id":"sec-properties-of-the-arraybuffer-constructor","aoid":null,"title":"Properties of the ArrayBuffer Constructor","titleHTML":"Properties of the ArrayBuffer Constructor","number":"24.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the ArrayBuffer Constructor"},{"type":"term","term":"%ArrayBufferPrototype%","refId":"sec-properties-of-the-arraybuffer-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%ArrayBufferPrototype%"},{"type":"clause","id":"sec-get-arraybuffer.prototype.bytelength","aoid":null,"title":"get ArrayBuffer.prototype.byteLength","titleHTML":"get ArrayBuffer.prototype.byteLength","number":"24.1.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get ArrayBuffer.prototype.byteLength"},{"type":"clause","id":"sec-arraybuffer.prototype.constructor","aoid":null,"title":"ArrayBuffer.prototype.constructor","titleHTML":"ArrayBuffer.prototype.constructor","number":"24.1.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ArrayBuffer.prototype.constructor"},{"type":"clause","id":"sec-arraybuffer.prototype.slice","aoid":null,"title":"ArrayBuffer.prototype.slice ( start, end )","titleHTML":"ArrayBuffer.prototype.slice ( <var>start</var>, <var>end</var> )","number":"24.1.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ArrayBuffer.prototype.slice ( start, end )"},{"type":"clause","id":"sec-arraybuffer.prototype-@@tostringtag","aoid":null,"title":"ArrayBuffer.prototype [ @@toStringTag ]","titleHTML":"ArrayBuffer.prototype [ @@toStringTag ]","number":"24.1.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"ArrayBuffer.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-arraybuffer-prototype-object","aoid":null,"title":"Properties of the ArrayBuffer Prototype Object","titleHTML":"Properties of the ArrayBuffer Prototype Object","number":"24.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1008","_ref_7443"],"key":"Properties of the ArrayBuffer Prototype Object"},{"type":"clause","id":"sec-properties-of-the-arraybuffer-instances","aoid":null,"title":"Properties of ArrayBuffer Instances","titleHTML":"Properties of ArrayBuffer Instances","number":"24.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of ArrayBuffer Instances"},{"type":"clause","id":"sec-arraybuffer-objects","aoid":null,"title":"ArrayBuffer Objects","titleHTML":"ArrayBuffer Objects","number":"24.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_33","_ref_581"],"key":"ArrayBuffer Objects"},{"type":"op","aoid":"AllocateSharedArrayBuffer","refId":"sec-allocatesharedarraybuffer","location":"","referencingIds":[],"key":"AllocateSharedArrayBuffer"},{"type":"clause","id":"sec-allocatesharedarraybuffer","aoid":"AllocateSharedArrayBuffer","title":"AllocateSharedArrayBuffer ( constructor, byteLength )","titleHTML":"AllocateSharedArrayBuffer ( <var>constructor</var>, <var>byteLength</var> )","number":"24.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7485"],"key":"AllocateSharedArrayBuffer ( constructor, byteLength )"},{"type":"op","aoid":"IsSharedArrayBuffer","refId":"sec-issharedarraybuffer","location":"","referencingIds":[],"key":"IsSharedArrayBuffer"},{"type":"clause","id":"sec-issharedarraybuffer","aoid":"IsSharedArrayBuffer","title":"IsSharedArrayBuffer ( obj )","titleHTML":"IsSharedArrayBuffer ( <var>obj</var> )","number":"24.2.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_6994","_ref_6995","_ref_7097","_ref_7369","_ref_7386","_ref_7411","_ref_7418","_ref_7450","_ref_7454","_ref_7466","_ref_7493","_ref_7496","_ref_7507","_ref_7574"],"key":"IsSharedArrayBuffer ( obj )"},{"type":"clause","id":"sec-abstract-operations-for-sharedarraybuffer-objects","aoid":null,"title":"Abstract Operations for SharedArrayBuffer Objects","titleHTML":"Abstract Operations for SharedArrayBuffer Objects","number":"24.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Abstract Operations for SharedArrayBuffer Objects"},{"type":"term","term":"%SharedArrayBuffer%","refId":"sec-sharedarraybuffer-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%SharedArrayBuffer%"},{"type":"clause","id":"sec-sharedarraybuffer-length","aoid":null,"title":"SharedArrayBuffer ( [ length ] )","titleHTML":"SharedArrayBuffer ( [ <var>length</var> ] )","number":"24.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SharedArrayBuffer ( [ length ] )"},{"type":"clause","id":"sec-sharedarraybuffer-constructor","aoid":null,"title":"The SharedArrayBuffer Constructor","titleHTML":"The SharedArrayBuffer Constructor","number":"24.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_107","_ref_452","_ref_1160","_ref_1164","_ref_7494","_ref_7505"],"key":"The SharedArrayBuffer Constructor"},{"type":"clause","id":"sec-sharedarraybuffer.prototype","aoid":null,"title":"SharedArrayBuffer.prototype","titleHTML":"SharedArrayBuffer.prototype","number":"24.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SharedArrayBuffer.prototype"},{"type":"clause","id":"sec-sharedarraybuffer-@@species","aoid":null,"title":"get SharedArrayBuffer [ @@species ]","titleHTML":"get SharedArrayBuffer [ @@species ]","number":"24.2.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get SharedArrayBuffer [ @@species ]"},{"type":"clause","id":"sec-properties-of-the-sharedarraybuffer-constructor","aoid":null,"title":"Properties of the SharedArrayBuffer Constructor","titleHTML":"Properties of the SharedArrayBuffer Constructor","number":"24.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the SharedArrayBuffer Constructor"},{"type":"term","term":"%SharedArrayBufferPrototype%","refId":"sec-properties-of-the-sharedarraybuffer-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%SharedArrayBufferPrototype%"},{"type":"clause","id":"sec-get-sharedarraybuffer.prototype.bytelength","aoid":null,"title":"get SharedArrayBuffer.prototype.byteLength","titleHTML":"get SharedArrayBuffer.prototype.byteLength","number":"24.2.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get SharedArrayBuffer.prototype.byteLength"},{"type":"clause","id":"sec-sharedarraybuffer.prototype.constructor","aoid":null,"title":"SharedArrayBuffer.prototype.constructor","titleHTML":"SharedArrayBuffer.prototype.constructor","number":"24.2.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SharedArrayBuffer.prototype.constructor"},{"type":"clause","id":"sec-sharedarraybuffer.prototype.slice","aoid":null,"title":"SharedArrayBuffer.prototype.slice ( start, end )","titleHTML":"SharedArrayBuffer.prototype.slice ( <var>start</var>, <var>end</var> )","number":"24.2.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SharedArrayBuffer.prototype.slice ( start, end )"},{"type":"clause","id":"sec-sharedarraybuffer.prototype.toString","aoid":null,"title":"SharedArrayBuffer.prototype [ @@toStringTag ]","titleHTML":"SharedArrayBuffer.prototype [ @@toStringTag ]","number":"24.2.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SharedArrayBuffer.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-sharedarraybuffer-prototype-object","aoid":null,"title":"Properties of the SharedArrayBuffer Prototype Object","titleHTML":"Properties of the SharedArrayBuffer Prototype Object","number":"24.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1162","_ref_7488"],"key":"Properties of the SharedArrayBuffer Prototype Object"},{"type":"clause","id":"sec-properties-of-the-sharedarraybuffer-instances","aoid":null,"title":"Properties of SharedArrayBuffer Instances","titleHTML":"Properties of SharedArrayBuffer Instances","number":"24.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of SharedArrayBuffer Instances"},{"type":"clause","id":"sec-sharedarraybuffer-objects","aoid":null,"title":"SharedArrayBuffer Objects","titleHTML":"SharedArrayBuffer Objects","number":"24.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_34"],"key":"SharedArrayBuffer Objects"},{"type":"op","aoid":"GetViewValue","refId":"sec-getviewvalue","location":"","referencingIds":[],"key":"GetViewValue"},{"type":"clause","id":"sec-getviewvalue","aoid":"GetViewValue","title":"GetViewValue ( view, requestIndex, isLittleEndian, type )","titleHTML":"GetViewValue ( <var>view</var>, <var>requestIndex</var>, <var>isLittleEndian</var>, <var>type</var> )","number":"24.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7549","_ref_7550","_ref_7551","_ref_7552","_ref_7553","_ref_7554","_ref_7555","_ref_7556"],"key":"GetViewValue ( view, requestIndex, isLittleEndian, type )"},{"type":"op","aoid":"SetViewValue","refId":"sec-setviewvalue","location":"","referencingIds":[],"key":"SetViewValue"},{"type":"clause","id":"sec-setviewvalue","aoid":"SetViewValue","title":"SetViewValue ( view, requestIndex, isLittleEndian, type, value )","titleHTML":"SetViewValue ( <var>view</var>, <var>requestIndex</var>, <var>isLittleEndian</var>, <var>type</var>, <var>value</var> )","number":"24.3.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7557","_ref_7558","_ref_7559","_ref_7560","_ref_7561","_ref_7562","_ref_7563","_ref_7564"],"key":"SetViewValue ( view, requestIndex, isLittleEndian, type, value )"},{"type":"clause","id":"sec-abstract-operations-for-dataview-objects","aoid":null,"title":"Abstract Operations For DataView Objects","titleHTML":"Abstract Operations For DataView Objects","number":"24.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Abstract Operations For DataView Objects"},{"type":"term","term":"%DataView%","refId":"sec-dataview-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%DataView%"},{"type":"clause","id":"sec-dataview-buffer-byteoffset-bytelength","aoid":null,"title":"DataView ( buffer [ , byteOffset [ , byteLength ] ] )","titleHTML":"DataView ( <var>buffer</var> [ , <var>byteOffset</var> [ , <var>byteLength</var> ] ] )","number":"24.3.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView ( buffer [ , byteOffset [ , byteLength ] ] )"},{"type":"clause","id":"sec-dataview-constructor","aoid":null,"title":"The DataView Constructor","titleHTML":"The DataView Constructor","number":"24.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_66","_ref_433","_ref_1046","_ref_1050","_ref_7548"],"key":"The DataView Constructor"},{"type":"clause","id":"sec-dataview.prototype","aoid":null,"title":"DataView.prototype","titleHTML":"DataView.prototype","number":"24.3.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype"},{"type":"clause","id":"sec-properties-of-the-dataview-constructor","aoid":null,"title":"Properties of the DataView Constructor","titleHTML":"Properties of the DataView Constructor","number":"24.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the DataView Constructor"},{"type":"term","term":"%DataViewPrototype%","refId":"sec-properties-of-the-dataview-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%DataViewPrototype%"},{"type":"clause","id":"sec-get-dataview.prototype.buffer","aoid":null,"title":"get DataView.prototype.buffer","titleHTML":"get DataView.prototype.buffer","number":"24.3.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get DataView.prototype.buffer"},{"type":"clause","id":"sec-get-dataview.prototype.bytelength","aoid":null,"title":"get DataView.prototype.byteLength","titleHTML":"get DataView.prototype.byteLength","number":"24.3.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get DataView.prototype.byteLength"},{"type":"clause","id":"sec-get-dataview.prototype.byteoffset","aoid":null,"title":"get DataView.prototype.byteOffset","titleHTML":"get DataView.prototype.byteOffset","number":"24.3.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get DataView.prototype.byteOffset"},{"type":"clause","id":"sec-dataview.prototype.constructor","aoid":null,"title":"DataView.prototype.constructor","titleHTML":"DataView.prototype.constructor","number":"24.3.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.constructor"},{"type":"clause","id":"sec-dataview.prototype.getfloat32","aoid":null,"title":"DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )","titleHTML":"DataView.prototype.getFloat32 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.getfloat64","aoid":null,"title":"DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )","titleHTML":"DataView.prototype.getFloat64 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.getint8","aoid":null,"title":"DataView.prototype.getInt8 ( byteOffset )","titleHTML":"DataView.prototype.getInt8 ( <var>byteOffset</var> )","number":"24.3.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.getInt8 ( byteOffset )"},{"type":"clause","id":"sec-dataview.prototype.getint16","aoid":null,"title":"DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )","titleHTML":"DataView.prototype.getInt16 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.getint32","aoid":null,"title":"DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )","titleHTML":"DataView.prototype.getInt32 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.getuint8","aoid":null,"title":"DataView.prototype.getUint8 ( byteOffset )","titleHTML":"DataView.prototype.getUint8 ( <var>byteOffset</var> )","number":"24.3.4.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.getUint8 ( byteOffset )"},{"type":"clause","id":"sec-dataview.prototype.getuint16","aoid":null,"title":"DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )","titleHTML":"DataView.prototype.getUint16 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.getuint32","aoid":null,"title":"DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )","titleHTML":"DataView.prototype.getUint32 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.setfloat32","aoid":null,"title":"DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )","titleHTML":"DataView.prototype.setFloat32 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.setfloat64","aoid":null,"title":"DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )","titleHTML":"DataView.prototype.setFloat64 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.setint8","aoid":null,"title":"DataView.prototype.setInt8 ( byteOffset, value )","titleHTML":"DataView.prototype.setInt8 ( <var>byteOffset</var>, <var>value</var> )","number":"24.3.4.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.setInt8 ( byteOffset, value )"},{"type":"clause","id":"sec-dataview.prototype.setint16","aoid":null,"title":"DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )","titleHTML":"DataView.prototype.setInt16 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.setint32","aoid":null,"title":"DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )","titleHTML":"DataView.prototype.setInt32 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.17","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.setuint8","aoid":null,"title":"DataView.prototype.setUint8 ( byteOffset, value )","titleHTML":"DataView.prototype.setUint8 ( <var>byteOffset</var>, <var>value</var> )","number":"24.3.4.18","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.setUint8 ( byteOffset, value )"},{"type":"clause","id":"sec-dataview.prototype.setuint16","aoid":null,"title":"DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )","titleHTML":"DataView.prototype.setUint16 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.19","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype.setuint32","aoid":null,"title":"DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )","titleHTML":"DataView.prototype.setUint32 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )","number":"24.3.4.20","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )"},{"type":"clause","id":"sec-dataview.prototype-@@tostringtag","aoid":null,"title":"DataView.prototype [ @@toStringTag ]","titleHTML":"DataView.prototype [ @@toStringTag ]","number":"24.3.4.21","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-dataview-prototype-object","aoid":null,"title":"Properties of the DataView Prototype Object","titleHTML":"Properties of the DataView Prototype Object","number":"24.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1048","_ref_7535"],"key":"Properties of the DataView Prototype Object"},{"type":"clause","id":"sec-properties-of-dataview-instances","aoid":null,"title":"Properties of DataView Instances","titleHTML":"Properties of DataView Instances","number":"24.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of DataView Instances"},{"type":"clause","id":"sec-dataview-objects","aoid":null,"title":"DataView Objects","titleHTML":"DataView Objects","number":"24.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"DataView Objects"},{"type":"term","term":"%Atomics%","refId":"sec-atomics-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Atomics%"},{"type":"op","aoid":"ValidateSharedIntegerTypedArray","refId":"sec-validatesharedintegertypedarray","location":"","referencingIds":[],"key":"ValidateSharedIntegerTypedArray"},{"type":"clause","id":"sec-validatesharedintegertypedarray","aoid":"ValidateSharedIntegerTypedArray","title":"ValidateSharedIntegerTypedArray ( typedArray [ , onlyInt32 ] )","titleHTML":"ValidateSharedIntegerTypedArray ( <var>typedArray</var> [ , <var>onlyInt32</var> ] )","number":"24.4.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7642","_ref_7646","_ref_7656","_ref_7675","_ref_7684","_ref_7700"],"key":"ValidateSharedIntegerTypedArray ( typedArray [ , onlyInt32 ] )"},{"type":"op","aoid":"ValidateAtomicAccess","refId":"sec-validateatomicaccess","location":"","referencingIds":[],"key":"ValidateAtomicAccess"},{"type":"clause","id":"sec-validateatomicaccess","aoid":"ValidateAtomicAccess","title":"ValidateAtomicAccess ( typedArray, requestIndex )","titleHTML":"ValidateAtomicAccess ( <var>typedArray</var>, <var>requestIndex</var> )","number":"24.4.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7643","_ref_7647","_ref_7657","_ref_7676","_ref_7685","_ref_7701"],"key":"ValidateAtomicAccess ( typedArray, requestIndex )"},{"type":"term","term":"WaiterList","refId":"sec-getwaiterlist","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"WaiterList"},{"type":"op","aoid":"GetWaiterList","refId":"sec-getwaiterlist","location":"","referencingIds":[],"key":"GetWaiterList"},{"type":"clause","id":"sec-getwaiterlist","aoid":"GetWaiterList","title":"GetWaiterList ( block, i )","titleHTML":"GetWaiterList ( <var>block</var>, <var>i</var> )","number":"24.4.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7588","_ref_7589","_ref_7592","_ref_7595","_ref_7598","_ref_7603","_ref_7604","_ref_7609","_ref_7614","_ref_7629","_ref_7690","_ref_7704"],"key":"GetWaiterList ( block, i )"},{"type":"op","aoid":"EnterCriticalSection","refId":"sec-entercriticalsection","location":"","referencingIds":[],"key":"EnterCriticalSection"},{"type":"clause","id":"sec-entercriticalsection","aoid":"EnterCriticalSection","title":"EnterCriticalSection ( WL )","titleHTML":"EnterCriticalSection ( <var>WL</var> )","number":"24.4.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7626","_ref_7691","_ref_7705"],"key":"EnterCriticalSection ( WL )"},{"type":"op","aoid":"LeaveCriticalSection","refId":"sec-leavecriticalsection","location":"","referencingIds":[],"key":"LeaveCriticalSection"},{"type":"clause","id":"sec-leavecriticalsection","aoid":"LeaveCriticalSection","title":"LeaveCriticalSection ( WL )","titleHTML":"LeaveCriticalSection ( <var>WL</var> )","number":"24.4.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7623","_ref_7693","_ref_7699","_ref_7710"],"key":"LeaveCriticalSection ( WL )"},{"type":"op","aoid":"AddWaiter","refId":"sec-addwaiter","location":"","referencingIds":[],"key":"AddWaiter"},{"type":"clause","id":"sec-addwaiter","aoid":"AddWaiter","title":"AddWaiter ( WL, W )","titleHTML":"AddWaiter ( <var>WL</var>, <var>W</var> )","number":"24.4.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7695"],"key":"AddWaiter ( WL, W )"},{"type":"op","aoid":"RemoveWaiter","refId":"sec-removewaiter","location":"","referencingIds":[],"key":"RemoveWaiter"},{"type":"clause","id":"sec-removewaiter","aoid":"RemoveWaiter","title":"RemoveWaiter ( WL, W )","titleHTML":"RemoveWaiter ( <var>WL</var>, <var>W</var> )","number":"24.4.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7698"],"key":"RemoveWaiter ( WL, W )"},{"type":"op","aoid":"RemoveWaiters","refId":"sec-removewaiters","location":"","referencingIds":[],"key":"RemoveWaiters"},{"type":"clause","id":"sec-removewaiters","aoid":"RemoveWaiters","title":"RemoveWaiters ( WL, c )","titleHTML":"RemoveWaiters ( <var>WL</var>, <var>c</var> )","number":"24.4.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7706"],"key":"RemoveWaiters ( WL, c )"},{"type":"op","aoid":"Suspend","refId":"sec-suspend","location":"","referencingIds":[],"key":"Suspend"},{"type":"clause","id":"sec-suspend","aoid":"Suspend","title":"Suspend ( WL, W, timeout )","titleHTML":"Suspend ( <var>WL</var>, <var>W</var>, <var>timeout</var> )","number":"24.4.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1240","_ref_1254","_ref_2209","_ref_4372","_ref_4405","_ref_4411","_ref_4654","_ref_4658","_ref_4822","_ref_7696","_ref_7941","_ref_7955","_ref_8028"],"key":"Suspend ( WL, W, timeout )"},{"type":"op","aoid":"NotifyWaiter","refId":"sec-notifywaiter","location":"","referencingIds":[],"key":"NotifyWaiter"},{"type":"clause","id":"sec-notifywaiter","aoid":"NotifyWaiter","title":"NotifyWaiter ( WL, W )","titleHTML":"NotifyWaiter ( <var>WL</var>, <var>W</var> )","number":"24.4.1.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7625","_ref_7628","_ref_7709"],"key":"NotifyWaiter ( WL, W )"},{"type":"op","aoid":"AtomicReadModifyWrite","refId":"sec-atomicreadmodifywrite","location":"","referencingIds":[],"key":"AtomicReadModifyWrite"},{"type":"clause","id":"sec-atomicreadmodifywrite","aoid":"AtomicReadModifyWrite","title":"AtomicReadModifyWrite ( typedArray, index, value, op )","titleHTML":"AtomicReadModifyWrite ( <var>typedArray</var>, <var>index</var>, <var>value</var>, <var>op</var> )","number":"24.4.1.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7652","_ref_7655","_ref_7666","_ref_7674","_ref_7682","_ref_7713"],"key":"AtomicReadModifyWrite ( typedArray, index, value, op )"},{"type":"op","aoid":"AtomicLoad","refId":"sec-atomicload","location":"","referencingIds":[],"key":"AtomicLoad"},{"type":"clause","id":"sec-atomicload","aoid":"AtomicLoad","title":"AtomicLoad ( typedArray, index )","titleHTML":"AtomicLoad ( <var>typedArray</var>, <var>index</var> )","number":"24.4.1.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7671","_ref_7692"],"key":"AtomicLoad ( typedArray, index )"},{"type":"clause","id":"sec-abstract-operations-for-atomics","aoid":null,"title":"Abstract Operations for Atomics","titleHTML":"Abstract Operations for Atomics","number":"24.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Abstract Operations for Atomics"},{"type":"clause","id":"sec-atomics.add","aoid":null,"title":"Atomics.add ( typedArray, index, value )","titleHTML":"Atomics.add ( <var>typedArray</var>, <var>index</var>, <var>value</var> )","number":"24.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.add ( typedArray, index, value )"},{"type":"clause","id":"sec-atomics.and","aoid":null,"title":"Atomics.and ( typedArray, index, value )","titleHTML":"Atomics.and ( <var>typedArray</var>, <var>index</var>, <var>value</var> )","number":"24.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.and ( typedArray, index, value )"},{"type":"clause","id":"sec-atomics.compareexchange","aoid":null,"title":"Atomics.compareExchange ( typedArray, index, expectedValue, replacementValue )","titleHTML":"Atomics.compareExchange ( <var>typedArray</var>, <var>index</var>, <var>expectedValue</var>, <var>replacementValue</var> )","number":"24.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.compareExchange ( typedArray, index, expectedValue, replacementValue )"},{"type":"clause","id":"sec-atomics.exchange","aoid":null,"title":"Atomics.exchange ( typedArray, index, value )","titleHTML":"Atomics.exchange ( <var>typedArray</var>, <var>index</var>, <var>value</var> )","number":"24.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.exchange ( typedArray, index, value )"},{"type":"clause","id":"sec-atomics.islockfree","aoid":null,"title":"Atomics.isLockFree ( size )","titleHTML":"Atomics.isLockFree ( <var>size</var> )","number":"24.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.isLockFree ( size )"},{"type":"clause","id":"sec-atomics.load","aoid":null,"title":"Atomics.load ( typedArray, index )","titleHTML":"Atomics.load ( <var>typedArray</var>, <var>index</var> )","number":"24.4.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.load ( typedArray, index )"},{"type":"clause","id":"sec-atomics.or","aoid":null,"title":"Atomics.or ( typedArray, index, value )","titleHTML":"Atomics.or ( <var>typedArray</var>, <var>index</var>, <var>value</var> )","number":"24.4.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.or ( typedArray, index, value )"},{"type":"clause","id":"sec-atomics.store","aoid":null,"title":"Atomics.store ( typedArray, index, value )","titleHTML":"Atomics.store ( <var>typedArray</var>, <var>index</var>, <var>value</var> )","number":"24.4.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.store ( typedArray, index, value )"},{"type":"clause","id":"sec-atomics.sub","aoid":null,"title":"Atomics.sub ( typedArray, index, value )","titleHTML":"Atomics.sub ( <var>typedArray</var>, <var>index</var>, <var>value</var> )","number":"24.4.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.sub ( typedArray, index, value )"},{"type":"clause","id":"sec-atomics.wait","aoid":null,"title":"Atomics.wait ( typedArray, index, value, timeout )","titleHTML":"Atomics.wait ( <var>typedArray</var>, <var>index</var>, <var>value</var>, <var>timeout</var> )","number":"24.4.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.wait ( typedArray, index, value, timeout )"},{"type":"clause","id":"sec-atomics.notify","aoid":null,"title":"Atomics.notify ( typedArray, index, count )","titleHTML":"Atomics.notify ( <var>typedArray</var>, <var>index</var>, <var>count</var> )","number":"24.4.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.notify ( typedArray, index, count )"},{"type":"clause","id":"sec-atomics.xor","aoid":null,"title":"Atomics.xor ( typedArray, index, value )","titleHTML":"Atomics.xor ( <var>typedArray</var>, <var>index</var>, <var>value</var> )","number":"24.4.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics.xor ( typedArray, index, value )"},{"type":"clause","id":"sec-atomics-@@tostringtag","aoid":null,"title":"Atomics [ @@toStringTag ]","titleHTML":"Atomics [ @@toStringTag ]","number":"24.4.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Atomics [ @@toStringTag ]"},{"type":"clause","id":"sec-atomics-object","aoid":null,"title":"The Atomics Object","titleHTML":"The Atomics Object","number":"24.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_63","_ref_464","_ref_1040"],"key":"The Atomics Object"},{"type":"term","term":"%JSON%","refId":"sec-json-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%JSON%"},{"type":"term","term":"%JSONParse%","refId":"sec-json.parse","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%JSONParse%"},{"type":"op","aoid":"InternalizeJSONProperty","refId":"sec-internalizejsonproperty","location":"","referencingIds":[],"key":"InternalizeJSONProperty"},{"type":"clause","id":"sec-internalizejsonproperty","aoid":"InternalizeJSONProperty","title":"Runtime Semantics: InternalizeJSONProperty ( holder, name )","titleHTML":"Runtime Semantics: InternalizeJSONProperty ( <var>holder</var>, <var>name</var> )","number":"24.5.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7725","_ref_7731","_ref_7738"],"key":"Runtime Semantics: InternalizeJSONProperty ( holder, name )"},{"type":"clause","id":"sec-json.parse","aoid":null,"title":"JSON.parse ( text [ , reviver ] )","titleHTML":"JSON.parse ( <var>text</var> [ , <var>reviver</var> ] )","number":"24.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1095"],"key":"JSON.parse ( text [ , reviver ] )"},{"type":"op","aoid":"SerializeJSONProperty","refId":"sec-serializejsonproperty","location":"","referencingIds":[],"key":"SerializeJSONProperty"},{"type":"clause","id":"sec-serializejsonproperty","aoid":"SerializeJSONProperty","title":"Runtime Semantics: SerializeJSONProperty ( key, holder )","titleHTML":"Runtime Semantics: SerializeJSONProperty ( <var>key</var>, <var>holder</var> )","number":"24.5.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7767","_ref_7800","_ref_7812"],"key":"Runtime Semantics: SerializeJSONProperty ( key, holder )"},{"type":"table","id":"table-json-single-character-escapes","number":62,"caption":"Table 62: JSON Single Character Escape Sequences","referencingIds":["_ref_676","_ref_677"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 62: JSON Single Character Escape Sequences"},{"type":"op","aoid":"QuoteJSONString","refId":"sec-quotejsonstring","location":"","referencingIds":[],"key":"QuoteJSONString"},{"type":"clause","id":"sec-quotejsonstring","aoid":"QuoteJSONString","title":"Runtime Semantics: QuoteJSONString ( value )","titleHTML":"Runtime Semantics: QuoteJSONString ( <var>value</var> )","number":"24.5.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7780","_ref_7801"],"key":"Runtime Semantics: QuoteJSONString ( value )"},{"type":"op","aoid":"UnicodeEscape","refId":"sec-unicodeescape","location":"","referencingIds":[],"key":"UnicodeEscape"},{"type":"clause","id":"sec-unicodeescape","aoid":"UnicodeEscape","title":"Runtime Semantics: UnicodeEscape ( C )","titleHTML":"Runtime Semantics: UnicodeEscape ( <var>C</var> )","number":"24.5.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7791"],"key":"Runtime Semantics: UnicodeEscape ( C )"},{"type":"op","aoid":"SerializeJSONObject","refId":"sec-serializejsonobject","location":"","referencingIds":[],"key":"SerializeJSONObject"},{"type":"clause","id":"sec-serializejsonobject","aoid":"SerializeJSONObject","title":"Runtime Semantics: SerializeJSONObject ( value )","titleHTML":"Runtime Semantics: SerializeJSONObject ( <var>value</var> )","number":"24.5.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7787"],"key":"Runtime Semantics: SerializeJSONObject ( value )"},{"type":"op","aoid":"SerializeJSONArray","refId":"sec-serializejsonarray","location":"","referencingIds":[],"key":"SerializeJSONArray"},{"type":"clause","id":"sec-serializejsonarray","aoid":"SerializeJSONArray","title":"Runtime Semantics: SerializeJSONArray ( value )","titleHTML":"Runtime Semantics: SerializeJSONArray ( <var>value</var> )","number":"24.5.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7786"],"key":"Runtime Semantics: SerializeJSONArray ( value )"},{"type":"clause","id":"sec-json.stringify","aoid":null,"title":"JSON.stringify ( value [ , replacer [ , space ] ] )","titleHTML":"JSON.stringify ( <var>value</var> [ , <var>replacer</var> [ , <var>space</var> ] ] )","number":"24.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_516"],"key":"JSON.stringify ( value [ , replacer [ , space ] ] )"},{"type":"clause","id":"sec-json-@@tostringtag","aoid":null,"title":"JSON [ @@toStringTag ]","titleHTML":"JSON [ @@toStringTag ]","number":"24.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"JSON [ @@toStringTag ]"},{"type":"clause","id":"sec-json-object","aoid":null,"title":"The JSON Object","titleHTML":"The JSON Object","number":"24.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_84","_ref_465","_ref_1094","_ref_1097","_ref_1099"],"key":"The JSON Object"},{"type":"clause","id":"sec-structured-data","aoid":null,"title":"Structured Data","titleHTML":"Structured Data","number":"24","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Structured Data"},{"type":"table","id":"table-52","number":63,"caption":"Table 63: <i>Iterable</i> Interface Required Properties","referencingIds":["_ref_681"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 63: <i>Iterable</i> Interface Required Properties"},{"type":"clause","id":"sec-iterable-interface","aoid":null,"title":"The Iterable Interface","titleHTML":"The <i>Iterable</i> Interface","number":"25.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Iterable Interface"},{"type":"table","id":"table-53","number":64,"caption":"Table 64: <i>Iterator</i> Interface Required Properties","referencingIds":["_ref_682"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 64: <i>Iterator</i> Interface Required Properties"},{"type":"table","id":"table-54","number":65,"caption":"Table 65: <i>Iterator</i> Interface Optional Properties","referencingIds":["_ref_683"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 65: <i>Iterator</i> Interface Optional Properties"},{"type":"clause","id":"sec-iterator-interface","aoid":null,"title":"The Iterator Interface","titleHTML":"The <i>Iterator</i> Interface","number":"25.1.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_152","_ref_349","_ref_537"],"key":"The Iterator Interface"},{"type":"table","id":"table-async-iterable","number":66,"caption":"Table 66: <i>AsyncIterable</i> Interface Required Properties","referencingIds":["_ref_684"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 66: <i>AsyncIterable</i> Interface Required Properties"},{"type":"clause","id":"sec-asynciterable-interface","aoid":null,"title":"The AsyncIterable Interface","titleHTML":"The <i>AsyncIterable</i> Interface","number":"25.1.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The AsyncIterable Interface"},{"type":"table","id":"table-async-iterator-required","number":67,"caption":"Table 67: <i>AsyncIterator</i> Interface Required Properties","referencingIds":["_ref_685"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 67: <i>AsyncIterator</i> Interface Required Properties"},{"type":"table","id":"table-async-iterator-optional","number":68,"caption":"Table 68: <i>AsyncIterator</i> Interface Optional Properties","referencingIds":["_ref_686"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 68: <i>AsyncIterator</i> Interface Optional Properties"},{"type":"clause","id":"sec-asynciterator-interface","aoid":null,"title":"The AsyncIterator Interface","titleHTML":"The <i>AsyncIterator</i> Interface","number":"25.1.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The AsyncIterator Interface"},{"type":"table","id":"table-55","number":69,"caption":"Table 69: <i>IteratorResult</i> Interface Properties","referencingIds":["_ref_687"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 69: <i>IteratorResult</i> Interface Properties"},{"type":"clause","id":"sec-iteratorresult-interface","aoid":null,"title":"The IteratorResult Interface","titleHTML":"The IteratorResult Interface","number":"25.1.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The IteratorResult Interface"},{"type":"clause","id":"sec-common-iteration-interfaces","aoid":null,"title":"Common Iteration Interfaces","titleHTML":"Common Iteration Interfaces","number":"25.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Common Iteration Interfaces"},{"type":"term","term":"%IteratorPrototype%","refId":"sec-%iteratorprototype%-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%IteratorPrototype%"},{"type":"clause","id":"sec-%iteratorprototype%-@@iterator","aoid":null,"title":"%IteratorPrototype% [ @@iterator ] ( )","titleHTML":"%IteratorPrototype% [ @@iterator ] ( )","number":"25.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%IteratorPrototype% [ @@iterator ] ( )"},{"type":"clause","id":"sec-%iteratorprototype%-object","aoid":null,"title":"The %IteratorPrototype% Object","titleHTML":"The %IteratorPrototype% Object","number":"25.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1093","_ref_1793","_ref_5964","_ref_6791","_ref_7221","_ref_7285","_ref_7914"],"key":"The %IteratorPrototype% Object"},{"type":"term","term":"%AsyncIteratorPrototype%","refId":"sec-asynciteratorprototype","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%AsyncIteratorPrototype%"},{"type":"clause","id":"sec-asynciteratorprototype-asynciterator","aoid":null,"title":"%AsyncIteratorPrototype% [ @@asyncIterator ] ( )","titleHTML":"%AsyncIteratorPrototype% [ @@asyncIterator ] ( )","number":"25.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%AsyncIteratorPrototype% [ @@asyncIterator ] ( )"},{"type":"clause","id":"sec-asynciteratorprototype","aoid":null,"title":"The %AsyncIteratorPrototype% Object","titleHTML":"The %AsyncIteratorPrototype% Object","number":"25.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1039","_ref_7827","_ref_7977"],"key":"The %AsyncIteratorPrototype% Object"},{"type":"op","aoid":"CreateAsyncFromSyncIterator","refId":"sec-createasyncfromsynciterator","location":"","referencingIds":[],"key":"CreateAsyncFromSyncIterator"},{"type":"clause","id":"sec-createasyncfromsynciterator","aoid":"CreateAsyncFromSyncIterator","title":"CreateAsyncFromSyncIterator ( syncIteratorRecord )","titleHTML":"CreateAsyncFromSyncIterator ( <var>syncIteratorRecord</var> )","number":"25.1.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1745","_ref_7821"],"key":"CreateAsyncFromSyncIterator ( syncIteratorRecord )"},{"type":"term","term":"%AsyncFromSyncIteratorPrototype%","refId":"sec-%asyncfromsynciteratorprototype%-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%AsyncFromSyncIteratorPrototype%"},{"type":"clause","id":"sec-%asyncfromsynciteratorprototype%.next","aoid":null,"title":"%AsyncFromSyncIteratorPrototype%.next ( value )","titleHTML":"%AsyncFromSyncIteratorPrototype%.next ( <var>value</var> )","number":"25.1.4.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%AsyncFromSyncIteratorPrototype%.next ( value )"},{"type":"clause","id":"sec-%asyncfromsynciteratorprototype%.return","aoid":null,"title":"%AsyncFromSyncIteratorPrototype%.return ( value )","titleHTML":"%AsyncFromSyncIteratorPrototype%.return ( <var>value</var> )","number":"25.1.4.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%AsyncFromSyncIteratorPrototype%.return ( value )"},{"type":"clause","id":"sec-%asyncfromsynciteratorprototype%.throw","aoid":null,"title":"%AsyncFromSyncIteratorPrototype%.throw ( value )","titleHTML":"%AsyncFromSyncIteratorPrototype%.throw ( <var>value</var> )","number":"25.1.4.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%AsyncFromSyncIteratorPrototype%.throw ( value )"},{"type":"clause","id":"sec-%asyncfromsynciteratorprototype%-@@tostringtag","aoid":null,"title":"%AsyncFromSyncIteratorPrototype% [ @@toStringTag ]","titleHTML":"%AsyncFromSyncIteratorPrototype% [ @@toStringTag ]","number":"25.1.4.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"%AsyncFromSyncIteratorPrototype% [ @@toStringTag ]"},{"type":"clause","id":"sec-async-from-sync-iterator-value-unwrap-functions","aoid":null,"title":"Async-from-Sync Iterator Value Unwrap Functions","titleHTML":"Async-from-Sync Iterator Value Unwrap Functions","number":"25.1.4.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_689"],"key":"Async-from-Sync Iterator Value Unwrap Functions"},{"type":"clause","id":"sec-%asyncfromsynciteratorprototype%-object","aoid":null,"title":"The %AsyncFromSyncIteratorPrototype% Object","titleHTML":"The %AsyncFromSyncIteratorPrototype% Object","number":"25.1.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1027","_ref_7825","_ref_7860","_ref_7863"],"key":"The %AsyncFromSyncIteratorPrototype% Object"},{"type":"table","id":"table-async-from-sync-iterator-internal-slots","number":70,"caption":"Table 70: Internal Slots of Async-from-Sync Iterator Instances","referencingIds":["_ref_688"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 70: Internal Slots of Async-from-Sync Iterator Instances"},{"type":"clause","id":"sec-properties-of-async-from-sync-iterator-instances","aoid":null,"title":"Properties of Async-from-Sync Iterator Instances","titleHTML":"Properties of Async-from-Sync Iterator Instances","number":"25.1.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Async-from-Sync Iterator Instances"},{"type":"op","aoid":"AsyncFromSyncIteratorContinuation","refId":"sec-asyncfromsynciteratorcontinuation","location":"","referencingIds":[],"key":"AsyncFromSyncIteratorContinuation"},{"type":"clause","id":"sec-asyncfromsynciteratorcontinuation","aoid":"AsyncFromSyncIteratorContinuation","title":"AsyncFromSyncIteratorContinuation ( result, promiseCapability )","titleHTML":"AsyncFromSyncIteratorContinuation ( <var>result</var>, <var>promiseCapability</var> )","number":"25.1.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7834","_ref_7847","_ref_7859"],"key":"AsyncFromSyncIteratorContinuation ( result, promiseCapability )"},{"type":"clause","id":"sec-async-from-sync-iterator-objects","aoid":null,"title":"Async-from-Sync Iterator Objects","titleHTML":"Async-from-Sync Iterator Objects","number":"25.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_60"],"key":"Async-from-Sync Iterator Objects"},{"type":"clause","id":"sec-iteration","aoid":null,"title":"Iteration","titleHTML":"Iteration","number":"25.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_151"],"key":"Iteration"},{"type":"figure","id":"figure-2","number":5,"caption":"Figure 5 (Informative): Generator Objects Relationships","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Figure 5 (Informative): Generator Objects Relationships"},{"type":"term","term":"%GeneratorFunction%","refId":"sec-generatorfunction-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%GeneratorFunction%"},{"type":"clause","id":"sec-generatorfunction","aoid":null,"title":"GeneratorFunction ( p1, p2, … , pn, body )","titleHTML":"GeneratorFunction ( <var>p1</var>, <var>p2</var>, … , <var>pn</var>, <var>body</var> )","number":"25.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_263"],"key":"GeneratorFunction ( p1, p2, … , pn, body )"},{"type":"clause","id":"sec-generatorfunction-constructor","aoid":null,"title":"The GeneratorFunction Constructor","titleHTML":"The GeneratorFunction Constructor","number":"25.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_78","_ref_1079","_ref_1080","_ref_7874","_ref_7887","_ref_7889"],"key":"The GeneratorFunction Constructor"},{"type":"clause","id":"sec-generatorfunction.length","aoid":null,"title":"GeneratorFunction.length","titleHTML":"GeneratorFunction.length","number":"25.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GeneratorFunction.length"},{"type":"clause","id":"sec-generatorfunction.prototype","aoid":null,"title":"GeneratorFunction.prototype","titleHTML":"GeneratorFunction.prototype","number":"25.2.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GeneratorFunction.prototype"},{"type":"clause","id":"sec-properties-of-the-generatorfunction-constructor","aoid":null,"title":"Properties of the GeneratorFunction Constructor","titleHTML":"Properties of the GeneratorFunction Constructor","number":"25.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the GeneratorFunction Constructor"},{"type":"term","term":"%Generator%","refId":"sec-properties-of-the-generatorfunction-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Generator%"},{"type":"clause","id":"sec-generatorfunction.prototype.constructor","aoid":null,"title":"GeneratorFunction.prototype.constructor","titleHTML":"GeneratorFunction.prototype.constructor","number":"25.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GeneratorFunction.prototype.constructor"},{"type":"clause","id":"sec-generatorfunction.prototype.prototype","aoid":null,"title":"GeneratorFunction.prototype.prototype","titleHTML":"GeneratorFunction.prototype.prototype","number":"25.2.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GeneratorFunction.prototype.prototype"},{"type":"clause","id":"sec-generatorfunction.prototype-@@tostringtag","aoid":null,"title":"GeneratorFunction.prototype [ @@toStringTag ]","titleHTML":"GeneratorFunction.prototype [ @@toStringTag ]","number":"25.2.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GeneratorFunction.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-generatorfunction-prototype-object","aoid":null,"title":"Properties of the GeneratorFunction Prototype Object","titleHTML":"Properties of the GeneratorFunction Prototype Object","number":"25.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1077","_ref_1084","_ref_2505","_ref_7885","_ref_7913","_ref_7915"],"key":"Properties of the GeneratorFunction Prototype Object"},{"type":"clause","id":"sec-generatorfunction-instances-length","aoid":null,"title":"length","titleHTML":"length","number":"25.2.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"length"},{"type":"clause","id":"sec-generatorfunction-instances-name","aoid":null,"title":"name","titleHTML":"name","number":"25.2.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"name"},{"type":"clause","id":"sec-generatorfunction-instances-prototype","aoid":null,"title":"prototype","titleHTML":"prototype","number":"25.2.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"prototype"},{"type":"clause","id":"sec-generatorfunction-instances","aoid":null,"title":"GeneratorFunction Instances","titleHTML":"GeneratorFunction Instances","number":"25.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GeneratorFunction Instances"},{"type":"clause","id":"sec-generatorfunction-objects","aoid":null,"title":"GeneratorFunction Objects","titleHTML":"GeneratorFunction Objects","number":"25.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"GeneratorFunction Objects"},{"type":"term","term":"%AsyncGeneratorFunction%","refId":"sec-asyncgeneratorfunction-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%AsyncGeneratorFunction%"},{"type":"clause","id":"sec-asyncgeneratorfunction","aoid":null,"title":"AsyncGeneratorFunction ( p1, p2, ..., pn, body )","titleHTML":"AsyncGeneratorFunction ( <var>p1</var>, <var>p2</var>, ..., <var>pn</var>, <var>body</var> )","number":"25.3.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGeneratorFunction ( p1, p2, ..., pn, body )"},{"type":"clause","id":"sec-asyncgeneratorfunction-constructor","aoid":null,"title":"The AsyncGeneratorFunction Constructor","titleHTML":"The AsyncGeneratorFunction Constructor","number":"25.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_62","_ref_1034","_ref_1035","_ref_7893","_ref_7905","_ref_7908"],"key":"The AsyncGeneratorFunction Constructor"},{"type":"clause","id":"sec-asyncgeneratorfunction-length","aoid":null,"title":"AsyncGeneratorFunction.length","titleHTML":"AsyncGeneratorFunction.length","number":"25.3.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGeneratorFunction.length"},{"type":"term","term":"%AsyncGenerator%","refId":"sec-asyncgeneratorfunction-prototype","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%AsyncGenerator%"},{"type":"clause","id":"sec-asyncgeneratorfunction-prototype","aoid":null,"title":"AsyncGeneratorFunction.prototype","titleHTML":"AsyncGeneratorFunction.prototype","number":"25.3.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1033","_ref_1038","_ref_2511","_ref_7906","_ref_7976","_ref_7978"],"key":"AsyncGeneratorFunction.prototype"},{"type":"clause","id":"sec-properties-of-asyncgeneratorfunction","aoid":null,"title":"Properties of the AsyncGeneratorFunction Constructor","titleHTML":"Properties of the AsyncGeneratorFunction Constructor","number":"25.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the AsyncGeneratorFunction Constructor"},{"type":"clause","id":"sec-asyncgeneratorfunction-prototype-constructor","aoid":null,"title":"AsyncGeneratorFunction.prototype.constructor","titleHTML":"AsyncGeneratorFunction.prototype.constructor","number":"25.3.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGeneratorFunction.prototype.constructor"},{"type":"clause","id":"sec-asyncgeneratorfunction-prototype-prototype","aoid":null,"title":"AsyncGeneratorFunction.prototype.prototype","titleHTML":"AsyncGeneratorFunction.prototype.prototype","number":"25.3.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGeneratorFunction.prototype.prototype"},{"type":"clause","id":"sec-asyncgeneratorfunction-prototype-tostringtag","aoid":null,"title":"AsyncGeneratorFunction.prototype [ @@toStringTag ]","titleHTML":"AsyncGeneratorFunction.prototype [ @@toStringTag ]","number":"25.3.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGeneratorFunction.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-asyncgeneratorfunction-prototype","aoid":null,"title":"Properties of the AsyncGeneratorFunction Prototype Object","titleHTML":"Properties of the AsyncGeneratorFunction Prototype Object","number":"25.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the AsyncGeneratorFunction Prototype Object"},{"type":"clause","id":"sec-asyncgeneratorfunction-instance-length","aoid":null,"title":"length","titleHTML":"length","number":"25.3.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"length"},{"type":"clause","id":"sec-asyncgeneratorfunction-instance-name","aoid":null,"title":"name","titleHTML":"name","number":"25.3.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"name"},{"type":"clause","id":"sec-asyncgeneratorfunction-instance-prototype","aoid":null,"title":"prototype","titleHTML":"prototype","number":"25.3.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"prototype"},{"type":"clause","id":"sec-asyncgeneratorfunction-instances","aoid":null,"title":"AsyncGeneratorFunction Instances","titleHTML":"AsyncGeneratorFunction Instances","number":"25.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGeneratorFunction Instances"},{"type":"clause","id":"sec-asyncgeneratorfunction-objects","aoid":null,"title":"AsyncGeneratorFunction Objects","titleHTML":"AsyncGeneratorFunction Objects","number":"25.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGeneratorFunction Objects"},{"type":"term","term":"%GeneratorPrototype%","refId":"sec-properties-of-generator-prototype","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%GeneratorPrototype%"},{"type":"clause","id":"sec-generator.prototype.constructor","aoid":null,"title":"Generator.prototype.constructor","titleHTML":"Generator.prototype.constructor","number":"25.4.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Generator.prototype.constructor"},{"type":"clause","id":"sec-generator.prototype.next","aoid":null,"title":"Generator.prototype.next ( value )","titleHTML":"Generator.prototype.next ( <var>value</var> )","number":"25.4.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Generator.prototype.next ( value )"},{"type":"clause","id":"sec-generator.prototype.return","aoid":null,"title":"Generator.prototype.return ( value )","titleHTML":"Generator.prototype.return ( <var>value</var> )","number":"25.4.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Generator.prototype.return ( value )"},{"type":"clause","id":"sec-generator.prototype.throw","aoid":null,"title":"Generator.prototype.throw ( exception )","titleHTML":"Generator.prototype.throw ( <var>exception</var> )","number":"25.4.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Generator.prototype.throw ( exception )"},{"type":"clause","id":"sec-generator.prototype-@@tostringtag","aoid":null,"title":"Generator.prototype [ @@toStringTag ]","titleHTML":"Generator.prototype [ @@toStringTag ]","number":"25.4.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Generator.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-generator-prototype","aoid":null,"title":"Properties of the Generator Prototype Object","titleHTML":"Properties of the Generator Prototype Object","number":"25.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1082","_ref_4123","_ref_4128","_ref_4138","_ref_4147","_ref_4155","_ref_5018","_ref_7890","_ref_7912"],"key":"Properties of the Generator Prototype Object"},{"type":"table","id":"table-56","number":71,"caption":"Table 71: Internal Slots of Generator Instances","referencingIds":["_ref_692","_ref_701"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 71: Internal Slots of Generator Instances"},{"type":"clause","id":"sec-properties-of-generator-instances","aoid":null,"title":"Properties of Generator Instances","titleHTML":"Properties of Generator Instances","number":"25.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Generator Instances"},{"type":"op","aoid":"GeneratorStart","refId":"sec-generatorstart","location":"","referencingIds":[],"key":"GeneratorStart"},{"type":"clause","id":"sec-generatorstart","aoid":"GeneratorStart","title":"GeneratorStart ( generator, generatorBody )","titleHTML":"GeneratorStart ( <var>generator</var>, <var>generatorBody</var> )","number":"25.4.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4118"],"key":"GeneratorStart ( generator, generatorBody )"},{"type":"op","aoid":"GeneratorValidate","refId":"sec-generatorvalidate","location":"","referencingIds":[],"key":"GeneratorValidate"},{"type":"clause","id":"sec-generatorvalidate","aoid":"GeneratorValidate","title":"GeneratorValidate ( generator )","titleHTML":"GeneratorValidate ( <var>generator</var> )","number":"25.4.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7937","_ref_7949"],"key":"GeneratorValidate ( generator )"},{"type":"op","aoid":"GeneratorResume","refId":"sec-generatorresume","location":"","referencingIds":[],"key":"GeneratorResume"},{"type":"clause","id":"sec-generatorresume","aoid":"GeneratorResume","title":"GeneratorResume ( generator, value )","titleHTML":"GeneratorResume ( <var>generator</var>, <var>value</var> )","number":"25.4.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7916"],"key":"GeneratorResume ( generator, value )"},{"type":"op","aoid":"GeneratorResumeAbrupt","refId":"sec-generatorresumeabrupt","location":"","referencingIds":[],"key":"GeneratorResumeAbrupt"},{"type":"clause","id":"sec-generatorresumeabrupt","aoid":"GeneratorResumeAbrupt","title":"GeneratorResumeAbrupt ( generator, abruptCompletion )","titleHTML":"GeneratorResumeAbrupt ( <var>generator</var>, <var>abruptCompletion</var> )","number":"25.4.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7918","_ref_7920"],"key":"GeneratorResumeAbrupt ( generator, abruptCompletion )"},{"type":"op","aoid":"GetGeneratorKind","refId":"sec-getgeneratorkind","location":"","referencingIds":[],"key":"GetGeneratorKind"},{"type":"clause","id":"sec-getgeneratorkind","aoid":"GetGeneratorKind","title":"GetGeneratorKind ( )","titleHTML":"GetGeneratorKind ( )","number":"25.4.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_3900","_ref_4158","_ref_4162","_ref_4167","_ref_7968","_ref_8061"],"key":"GetGeneratorKind ( )"},{"type":"op","aoid":"GeneratorYield","refId":"sec-generatoryield","location":"","referencingIds":[],"key":"GeneratorYield"},{"type":"clause","id":"sec-generatoryield","aoid":"GeneratorYield","title":"GeneratorYield ( iterNextObj )","titleHTML":"GeneratorYield ( <var>iterNextObj</var> )","number":"25.4.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4160","_ref_4165","_ref_4178","_ref_4187","_ref_4203"],"key":"GeneratorYield ( iterNextObj )"},{"type":"clause","id":"sec-generator-abstract-operations","aoid":null,"title":"Generator Abstract Operations","titleHTML":"Generator Abstract Operations","number":"25.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_356"],"key":"Generator Abstract Operations"},{"type":"clause","id":"sec-generator-objects","aoid":null,"title":"Generator Objects","titleHTML":"Generator Objects","number":"25.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Generator Objects"},{"type":"term","term":"%AsyncGeneratorPrototype%","refId":"sec-properties-of-asyncgenerator-prototype","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%AsyncGeneratorPrototype%"},{"type":"clause","id":"sec-asyncgenerator-prototype-constructor","aoid":null,"title":"AsyncGenerator.prototype.constructor","titleHTML":"AsyncGenerator.prototype.constructor","number":"25.5.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGenerator.prototype.constructor"},{"type":"clause","id":"sec-asyncgenerator-prototype-next","aoid":null,"title":"AsyncGenerator.prototype.next ( value )","titleHTML":"AsyncGenerator.prototype.next ( <var>value</var> )","number":"25.5.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGenerator.prototype.next ( value )"},{"type":"clause","id":"sec-asyncgenerator-prototype-return","aoid":null,"title":"AsyncGenerator.prototype.return ( value )","titleHTML":"AsyncGenerator.prototype.return ( <var>value</var> )","number":"25.5.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_704","_ref_705"],"key":"AsyncGenerator.prototype.return ( value )"},{"type":"clause","id":"sec-asyncgenerator-prototype-throw","aoid":null,"title":"AsyncGenerator.prototype.throw ( exception )","titleHTML":"AsyncGenerator.prototype.throw ( <var>exception</var> )","number":"25.5.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGenerator.prototype.throw ( exception )"},{"type":"clause","id":"sec-asyncgenerator-prototype-tostringtag","aoid":null,"title":"AsyncGenerator.prototype [ @@toStringTag ]","titleHTML":"AsyncGenerator.prototype [ @@toStringTag ]","number":"25.5.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGenerator.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-asyncgenerator-prototype","aoid":null,"title":"Properties of the AsyncGenerator Prototype Object","titleHTML":"Properties of the AsyncGenerator Prototype Object","number":"25.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1037","_ref_4215","_ref_4221","_ref_4230","_ref_4239","_ref_4247","_ref_5021","_ref_7909","_ref_7975"],"key":"Properties of the AsyncGenerator Prototype Object"},{"type":"table","id":"table-internal-slots-of-asyncgenerator-instances","number":72,"caption":"Table 72: Internal Slots of AsyncGenerator Instances","referencingIds":["_ref_698"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 72: Internal Slots of AsyncGenerator Instances"},{"type":"clause","id":"sec-properties-of-asyncgenerator-intances","aoid":null,"title":"Properties of AsyncGenerator Instances","titleHTML":"Properties of AsyncGenerator Instances","number":"25.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of AsyncGenerator Instances"},{"type":"clause","id":"sec-asyncgeneratorrequest-records","aoid":null,"title":"AsyncGeneratorRequest Records","titleHTML":"AsyncGeneratorRequest Records","number":"25.5.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGeneratorRequest Records"},{"type":"op","aoid":"AsyncGeneratorStart","refId":"sec-asyncgeneratorstart","location":"","referencingIds":[],"key":"AsyncGeneratorStart"},{"type":"clause","id":"sec-asyncgeneratorstart","aoid":"AsyncGeneratorStart","title":"AsyncGeneratorStart ( generator, generatorBody )","titleHTML":"AsyncGeneratorStart ( <var>generator</var>, <var>generatorBody</var> )","number":"25.5.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4210"],"key":"AsyncGeneratorStart ( generator, generatorBody )"},{"type":"op","aoid":"AsyncGeneratorResolve","refId":"sec-asyncgeneratorresolve","location":"","referencingIds":[],"key":"AsyncGeneratorResolve"},{"type":"clause","id":"sec-asyncgeneratorresolve","aoid":"AsyncGeneratorResolve","title":"AsyncGeneratorResolve ( generator, value, done )","titleHTML":"AsyncGeneratorResolve ( <var>generator</var>, <var>value</var>, <var>done</var> )","number":"25.5.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8000","_ref_8025","_ref_8041","_ref_8073"],"key":"AsyncGeneratorResolve ( generator, value, done )"},{"type":"op","aoid":"AsyncGeneratorReject","refId":"sec-asyncgeneratorreject","location":"","referencingIds":[],"key":"AsyncGeneratorReject"},{"type":"clause","id":"sec-asyncgeneratorreject","aoid":"AsyncGeneratorReject","title":"AsyncGeneratorReject ( generator, exception )","titleHTML":"AsyncGeneratorReject ( <var>generator</var>, <var>exception</var> )","number":"25.5.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7999","_ref_8024","_ref_8048"],"key":"AsyncGeneratorReject ( generator, exception )"},{"type":"clause","id":"async-generator-resume-next-return-processor-fulfilled","aoid":null,"title":"AsyncGeneratorResumeNext Return Processor Fulfilled Functions","titleHTML":"AsyncGeneratorResumeNext Return Processor Fulfilled Functions","number":"25.5.3.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_702"],"key":"AsyncGeneratorResumeNext Return Processor Fulfilled Functions"},{"type":"clause","id":"async-generator-resume-next-return-processor-rejected","aoid":null,"title":"AsyncGeneratorResumeNext Return Processor Rejected Functions","titleHTML":"AsyncGeneratorResumeNext Return Processor Rejected Functions","number":"25.5.3.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_703"],"key":"AsyncGeneratorResumeNext Return Processor Rejected Functions"},{"type":"op","aoid":"AsyncGeneratorResumeNext","refId":"sec-asyncgeneratorresumenext","location":"","referencingIds":[],"key":"AsyncGeneratorResumeNext"},{"type":"clause","id":"sec-asyncgeneratorresumenext","aoid":"AsyncGeneratorResumeNext","title":"AsyncGeneratorResumeNext ( generator )","titleHTML":"AsyncGeneratorResumeNext ( <var>generator</var> )","number":"25.5.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8007","_ref_8012","_ref_8036","_ref_8037","_ref_8038","_ref_8039","_ref_8042","_ref_8043","_ref_8044","_ref_8045","_ref_8046","_ref_8049","_ref_8056"],"key":"AsyncGeneratorResumeNext ( generator )"},{"type":"op","aoid":"AsyncGeneratorEnqueue","refId":"sec-asyncgeneratorenqueue","location":"","referencingIds":[],"key":"AsyncGeneratorEnqueue"},{"type":"clause","id":"sec-asyncgeneratorenqueue","aoid":"AsyncGeneratorEnqueue","title":"AsyncGeneratorEnqueue ( generator, completion )","titleHTML":"AsyncGeneratorEnqueue ( <var>generator</var>, <var>completion</var> )","number":"25.5.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7980","_ref_7982","_ref_7984"],"key":"AsyncGeneratorEnqueue ( generator, completion )"},{"type":"op","aoid":"AsyncGeneratorYield","refId":"sec-asyncgeneratoryield","location":"","referencingIds":[],"key":"AsyncGeneratorYield"},{"type":"clause","id":"sec-asyncgeneratoryield","aoid":"AsyncGeneratorYield","title":"AsyncGeneratorYield ( value )","titleHTML":"AsyncGeneratorYield ( <var>value</var> )","number":"25.5.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4159","_ref_4164","_ref_4176","_ref_4185","_ref_4201"],"key":"AsyncGeneratorYield ( value )"},{"type":"clause","id":"sec-asyncgenerator-abstract-operations","aoid":null,"title":"AsyncGenerator Abstract Operations","titleHTML":"AsyncGenerator Abstract Operations","number":"25.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_357"],"key":"AsyncGenerator Abstract Operations"},{"type":"clause","id":"sec-asyncgenerator-objects","aoid":null,"title":"AsyncGenerator Objects","titleHTML":"AsyncGenerator Objects","number":"25.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncGenerator Objects"},{"type":"table","id":"table-57","number":74,"caption":"Table 74: PromiseCapability Record Fields","referencingIds":["_ref_706"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 74: PromiseCapability Record Fields"},{"type":"op","aoid":"IfAbruptRejectPromise","refId":"sec-ifabruptrejectpromise","location":"","referencingIds":[],"key":"IfAbruptRejectPromise"},{"type":"clause","id":"sec-ifabruptrejectpromise","aoid":"IfAbruptRejectPromise","title":"IfAbruptRejectPromise ( value, capability )","titleHTML":"IfAbruptRejectPromise ( <var>value</var>, <var>capability</var> )","number":"25.6.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_7833","_ref_7840","_ref_7844","_ref_7853","_ref_7856","_ref_7867","_ref_7869","_ref_8080","_ref_8174","_ref_8178","_ref_8207","_ref_8211"],"key":"IfAbruptRejectPromise ( value, capability )"},{"type":"clause","id":"sec-promisecapability-records","aoid":null,"title":"PromiseCapability Records","titleHTML":"PromiseCapability Records","number":"25.6.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"PromiseCapability Records"},{"type":"table","id":"table-58","number":75,"caption":"Table 75: PromiseReaction Record Fields","referencingIds":["_ref_707"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 75: PromiseReaction Record Fields"},{"type":"clause","id":"sec-promisereaction-records","aoid":null,"title":"PromiseReaction Records","titleHTML":"PromiseReaction Records","number":"25.6.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"PromiseReaction Records"},{"type":"clause","id":"sec-promise-reject-functions","aoid":null,"title":"Promise Reject Functions","titleHTML":"Promise Reject Functions","number":"25.6.1.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_709"],"key":"Promise Reject Functions"},{"type":"clause","id":"sec-promise-resolve-functions","aoid":null,"title":"Promise Resolve Functions","titleHTML":"Promise Resolve Functions","number":"25.6.1.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_708"],"key":"Promise Resolve Functions"},{"type":"op","aoid":"CreateResolvingFunctions","refId":"sec-createresolvingfunctions","location":"","referencingIds":[],"key":"CreateResolvingFunctions"},{"type":"clause","id":"sec-createresolvingfunctions","aoid":"CreateResolvingFunctions","title":"CreateResolvingFunctions ( promise )","titleHTML":"CreateResolvingFunctions ( <var>promise</var> )","number":"25.6.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8148","_ref_8162"],"key":"CreateResolvingFunctions ( promise )"},{"type":"op","aoid":"FulfillPromise","refId":"sec-fulfillpromise","location":"","referencingIds":[],"key":"FulfillPromise"},{"type":"clause","id":"sec-fulfillpromise","aoid":"FulfillPromise","title":"FulfillPromise ( promise, value )","titleHTML":"FulfillPromise ( <var>promise</var>, <var>value</var> )","number":"25.6.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8102","_ref_8107"],"key":"FulfillPromise ( promise, value )"},{"type":"clause","id":"sec-getcapabilitiesexecutor-functions","aoid":null,"title":"GetCapabilitiesExecutor Functions","titleHTML":"GetCapabilitiesExecutor Functions","number":"25.6.1.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_711"],"key":"GetCapabilitiesExecutor Functions"},{"type":"op","aoid":"NewPromiseCapability","refId":"sec-newpromisecapability","location":"","referencingIds":[],"key":"NewPromiseCapability"},{"type":"clause","id":"sec-newpromisecapability","aoid":"NewPromiseCapability","title":"NewPromiseCapability ( C )","titleHTML":"NewPromiseCapability ( <var>C</var> )","number":"25.6.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4305","_ref_4348","_ref_7828","_ref_7835","_ref_7848","_ref_8052","_ref_8075","_ref_8172","_ref_8205","_ref_8228","_ref_8243","_ref_8285"],"key":"NewPromiseCapability ( C )"},{"type":"op","aoid":"IsPromise","refId":"sec-ispromise","location":"","referencingIds":[],"key":"IsPromise"},{"type":"clause","id":"sec-ispromise","aoid":"IsPromise","title":"IsPromise ( x )","titleHTML":"IsPromise ( <var>x</var> )","number":"25.6.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8240","_ref_8282","_ref_8288"],"key":"IsPromise ( x )"},{"type":"op","aoid":"RejectPromise","refId":"sec-rejectpromise","location":"","referencingIds":[],"key":"RejectPromise"},{"type":"clause","id":"sec-rejectpromise","aoid":"RejectPromise","title":"RejectPromise ( promise, reason )","titleHTML":"RejectPromise ( <var>promise</var>, <var>reason</var> )","number":"25.6.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8096","_ref_8100","_ref_8105"],"key":"RejectPromise ( promise, reason )"},{"type":"op","aoid":"TriggerPromiseReactions","refId":"sec-triggerpromisereactions","location":"","referencingIds":[],"key":"TriggerPromiseReactions"},{"type":"clause","id":"sec-triggerpromisereactions","aoid":"TriggerPromiseReactions","title":"TriggerPromiseReactions ( reactions, argument )","titleHTML":"TriggerPromiseReactions ( <var>reactions</var>, <var>argument</var> )","number":"25.6.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8111","_ref_8132"],"key":"TriggerPromiseReactions ( reactions, argument )"},{"type":"op","aoid":"HostPromiseRejectionTracker","refId":"sec-host-promise-rejection-tracker","location":"","referencingIds":[],"key":"HostPromiseRejectionTracker"},{"type":"clause","id":"sec-host-promise-rejection-tracker","aoid":"HostPromiseRejectionTracker","title":"HostPromiseRejectionTracker ( promise, operation )","titleHTML":"HostPromiseRejectionTracker ( <var>promise</var>, <var>operation</var> )","number":"25.6.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8131","_ref_8298"],"key":"HostPromiseRejectionTracker ( promise, operation )"},{"type":"clause","id":"sec-promise-abstract-operations","aoid":null,"title":"Promise Abstract Operations","titleHTML":"Promise Abstract Operations","number":"25.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Promise Abstract Operations"},{"type":"op","aoid":"PromiseReactionJob","refId":"sec-promisereactionjob","location":"","referencingIds":[],"key":"PromiseReactionJob"},{"type":"clause","id":"sec-promisereactionjob","aoid":"PromiseReactionJob","title":"PromiseReactionJob ( reaction, argument )","titleHTML":"PromiseReactionJob ( <var>reaction</var>, <var>argument</var> )","number":"25.6.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8086","_ref_8134","_ref_8296","_ref_8300"],"key":"PromiseReactionJob ( reaction, argument )"},{"type":"op","aoid":"PromiseResolveThenableJob","refId":"sec-promiseresolvethenablejob","location":"","referencingIds":[],"key":"PromiseResolveThenableJob"},{"type":"clause","id":"sec-promiseresolvethenablejob","aoid":"PromiseResolveThenableJob","title":"PromiseResolveThenableJob ( promiseToResolve, thenable, then )","titleHTML":"PromiseResolveThenableJob ( <var>promiseToResolve</var>, <var>thenable</var>, <var>then</var> )","number":"25.6.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8109"],"key":"PromiseResolveThenableJob ( promiseToResolve, thenable, then )"},{"type":"clause","id":"sec-promise-jobs","aoid":null,"title":"Promise Jobs","titleHTML":"Promise Jobs","number":"25.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Promise Jobs"},{"type":"term","term":"%Promise%","refId":"sec-promise-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Promise%"},{"type":"clause","id":"sec-promise-executor","aoid":null,"title":"Promise ( executor )","titleHTML":"Promise ( <var>executor</var> )","number":"25.6.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_710"],"key":"Promise ( executor )"},{"type":"clause","id":"sec-promise-constructor","aoid":null,"title":"The Promise Constructor","titleHTML":"The Promise Constructor","number":"25.6.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_95","_ref_446","_ref_1125","_ref_1129","_ref_1135","_ref_1138","_ref_1141","_ref_1221","_ref_4306","_ref_4349","_ref_7829","_ref_7836","_ref_7849","_ref_7871","_ref_8019","_ref_8053","_ref_8250","_ref_8253","_ref_8284"],"key":"The Promise Constructor"},{"type":"term","term":"%Promise_all%","refId":"sec-promise.all","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Promise_all%"},{"type":"op","aoid":"PerformPromiseAll","refId":"sec-performpromiseall","location":"","referencingIds":[],"key":"PerformPromiseAll"},{"type":"clause","id":"sec-performpromiseall","aoid":"PerformPromiseAll","title":"Runtime Semantics: PerformPromiseAll ( iteratorRecord, constructor, resultCapability )","titleHTML":"Runtime Semantics: PerformPromiseAll ( <var>iteratorRecord</var>, <var>constructor</var>, <var>resultCapability</var> )","number":"25.6.4.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8175"],"key":"Runtime Semantics: PerformPromiseAll ( iteratorRecord, constructor, resultCapability )"},{"type":"clause","id":"sec-promise.all-resolve-element-functions","aoid":null,"title":"Promise.all Resolve Element Functions","titleHTML":"<code>Promise.all</code> Resolve Element Functions","number":"25.6.4.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_712"],"key":"Promise.all Resolve Element Functions"},{"type":"clause","id":"sec-promise.all","aoid":null,"title":"Promise.all ( iterable )","titleHTML":"Promise.all ( <var>iterable</var> )","number":"25.6.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_97","_ref_1133"],"key":"Promise.all ( iterable )"},{"type":"clause","id":"sec-promise.prototype","aoid":null,"title":"Promise.prototype","titleHTML":"Promise.prototype","number":"25.6.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Promise.prototype"},{"type":"op","aoid":"PerformPromiseRace","refId":"sec-performpromiserace","location":"","referencingIds":[],"key":"PerformPromiseRace"},{"type":"clause","id":"sec-performpromiserace","aoid":"PerformPromiseRace","title":"Runtime Semantics: PerformPromiseRace ( iteratorRecord, constructor, resultCapability )","titleHTML":"Runtime Semantics: PerformPromiseRace ( <var>iteratorRecord</var>, <var>constructor</var>, <var>resultCapability</var> )","number":"25.6.4.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8208"],"key":"Runtime Semantics: PerformPromiseRace ( iteratorRecord, constructor, resultCapability )"},{"type":"clause","id":"sec-promise.race","aoid":null,"title":"Promise.race ( iterable )","titleHTML":"Promise.race ( <var>iterable</var> )","number":"25.6.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Promise.race ( iterable )"},{"type":"term","term":"%Promise_reject%","refId":"sec-promise.reject","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Promise_reject%"},{"type":"clause","id":"sec-promise.reject","aoid":null,"title":"Promise.reject ( r )","titleHTML":"Promise.reject ( <var>r</var> )","number":"25.6.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_98","_ref_1136"],"key":"Promise.reject ( r )"},{"type":"term","term":"%Promise_resolve%","refId":"sec-promise.resolve","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Promise_resolve%"},{"type":"op","aoid":"PromiseResolve","refId":"sec-promise-resolve","location":"","referencingIds":[],"key":"PromiseResolve"},{"type":"clause","id":"sec-promise-resolve","aoid":"PromiseResolve","title":"PromiseResolve ( C, x )","titleHTML":"PromiseResolve ( <var>C</var>, <var>x</var> )","number":"25.6.4.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1220","_ref_7870","_ref_8018","_ref_8234","_ref_8269","_ref_8280"],"key":"PromiseResolve ( C, x )"},{"type":"clause","id":"sec-promise.resolve","aoid":null,"title":"Promise.resolve ( x )","titleHTML":"Promise.resolve ( <var>x</var> )","number":"25.6.4.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_99","_ref_1139"],"key":"Promise.resolve ( x )"},{"type":"clause","id":"sec-get-promise-@@species","aoid":null,"title":"get Promise [ @@species ]","titleHTML":"get Promise [ @@species ]","number":"25.6.4.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get Promise [ @@species ]"},{"type":"clause","id":"sec-properties-of-the-promise-constructor","aoid":null,"title":"Properties of the Promise Constructor","titleHTML":"Properties of the Promise Constructor","number":"25.6.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Promise Constructor"},{"type":"term","term":"%PromisePrototype%","refId":"sec-properties-of-the-promise-prototype-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%PromisePrototype%"},{"type":"clause","id":"sec-promise.prototype.catch","aoid":null,"title":"Promise.prototype.catch ( onRejected )","titleHTML":"Promise.prototype.catch ( <var>onRejected</var> )","number":"25.6.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Promise.prototype.catch ( onRejected )"},{"type":"clause","id":"sec-promise.prototype.constructor","aoid":null,"title":"Promise.prototype.constructor","titleHTML":"Promise.prototype.constructor","number":"25.6.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Promise.prototype.constructor"},{"type":"clause","id":"sec-thenfinallyfunctions","aoid":null,"title":"Then Finally Functions","titleHTML":"Then Finally Functions","number":"25.6.5.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_713"],"key":"Then Finally Functions"},{"type":"clause","id":"sec-catchfinallyfunctions","aoid":null,"title":"Catch Finally Functions","titleHTML":"Catch Finally Functions","number":"25.6.5.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_714"],"key":"Catch Finally Functions"},{"type":"clause","id":"sec-promise.prototype.finally","aoid":null,"title":"Promise.prototype.finally ( onFinally )","titleHTML":"Promise.prototype.finally ( <var>onFinally</var> )","number":"25.6.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Promise.prototype.finally ( onFinally )"},{"type":"term","term":"%PromiseProto_then%","refId":"sec-promise.prototype.then","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%PromiseProto_then%"},{"type":"op","aoid":"PerformPromiseThen","refId":"sec-performpromisethen","location":"","referencingIds":[],"key":"PerformPromiseThen"},{"type":"clause","id":"sec-performpromisethen","aoid":"PerformPromiseThen","title":"PerformPromiseThen ( promise, onFulfilled, onRejected [ , resultCapability ] )","titleHTML":"PerformPromiseThen ( <var>promise</var>, <var>onFulfilled</var>, <var>onRejected</var> [ , <var>resultCapability</var> ] )","number":"25.6.5.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1224","_ref_7873","_ref_8022","_ref_8085","_ref_8286"],"key":"PerformPromiseThen ( promise, onFulfilled, onRejected [ , resultCapability ] )"},{"type":"clause","id":"sec-promise.prototype.then","aoid":null,"title":"Promise.prototype.then ( onFulfilled, onRejected )","titleHTML":"Promise.prototype.then ( <var>onFulfilled</var>, <var>onRejected</var> )","number":"25.6.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_96","_ref_1130"],"key":"Promise.prototype.then ( onFulfilled, onRejected )"},{"type":"clause","id":"sec-promise.prototype-@@tostringtag","aoid":null,"title":"Promise.prototype [ @@toStringTag ]","titleHTML":"Promise.prototype [ @@toStringTag ]","number":"25.6.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Promise.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-properties-of-the-promise-prototype-object","aoid":null,"title":"Properties of the Promise Prototype Object","titleHTML":"Properties of the Promise Prototype Object","number":"25.6.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1127","_ref_1132","_ref_8203","_ref_8301"],"key":"Properties of the Promise Prototype Object"},{"type":"table","id":"table-59","number":76,"caption":"Table 76: Internal Slots of Promise Instances","referencingIds":["_ref_715"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 76: Internal Slots of Promise Instances"},{"type":"clause","id":"sec-properties-of-promise-instances","aoid":null,"title":"Properties of Promise Instances","titleHTML":"Properties of Promise Instances","number":"25.6.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Promise Instances"},{"type":"clause","id":"sec-promise-objects","aoid":null,"title":"Promise Objects","titleHTML":"Promise Objects","number":"25.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_182"],"key":"Promise Objects"},{"type":"term","term":"%AsyncFunction%","refId":"sec-async-function-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%AsyncFunction%"},{"type":"clause","id":"sec-async-function-constructor-arguments","aoid":null,"title":"AsyncFunction ( p1, p2, … , pn, body )","titleHTML":"AsyncFunction ( <var>p1</var>, <var>p2</var>, … , <var>pn</var>, <var>body</var> )","number":"25.7.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_264"],"key":"AsyncFunction ( p1, p2, … , pn, body )"},{"type":"clause","id":"sec-async-function-constructor","aoid":null,"title":"The AsyncFunction Constructor","titleHTML":"The AsyncFunction Constructor","number":"25.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_61","_ref_1028","_ref_1032","_ref_8304","_ref_8317","_ref_8319"],"key":"The AsyncFunction Constructor"},{"type":"clause","id":"sec-async-function-constructor-length","aoid":null,"title":"AsyncFunction.length","titleHTML":"AsyncFunction.length","number":"25.7.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncFunction.length"},{"type":"clause","id":"sec-async-function-constructor-prototype","aoid":null,"title":"AsyncFunction.prototype","titleHTML":"AsyncFunction.prototype","number":"25.7.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncFunction.prototype"},{"type":"clause","id":"sec-async-function-constructor-properties","aoid":null,"title":"Properties of the AsyncFunction Constructor","titleHTML":"Properties of the AsyncFunction Constructor","number":"25.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the AsyncFunction Constructor"},{"type":"term","term":"%AsyncFunctionPrototype%","refId":"sec-async-function-prototype-properties","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%AsyncFunctionPrototype%"},{"type":"clause","id":"sec-async-function-prototype-properties-constructor","aoid":null,"title":"AsyncFunction.prototype.constructor","titleHTML":"AsyncFunction.prototype.constructor","number":"25.7.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncFunction.prototype.constructor"},{"type":"clause","id":"sec-async-function-prototype-properties-toStringTag","aoid":null,"title":"AsyncFunction.prototype [ @@toStringTag ]","titleHTML":"AsyncFunction.prototype [ @@toStringTag ]","number":"25.7.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncFunction.prototype [ @@toStringTag ]"},{"type":"clause","id":"sec-async-function-prototype-properties","aoid":null,"title":"Properties of the AsyncFunction Prototype Object","titleHTML":"Properties of the AsyncFunction Prototype Object","number":"25.7.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1030","_ref_2517","_ref_8315"],"key":"Properties of the AsyncFunction Prototype Object"},{"type":"clause","id":"sec-async-function-instances-length","aoid":null,"title":"length","titleHTML":"length","number":"25.7.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"length"},{"type":"clause","id":"sec-async-function-instances-name","aoid":null,"title":"name","titleHTML":"name","number":"25.7.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"name"},{"type":"clause","id":"sec-async-function-instances","aoid":null,"title":"AsyncFunction Instances","titleHTML":"AsyncFunction Instances","number":"25.7.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncFunction Instances"},{"type":"op","aoid":"AsyncFunctionStart","refId":"sec-async-functions-abstract-operations-async-function-start","location":"","referencingIds":[],"key":"AsyncFunctionStart"},{"type":"clause","id":"sec-async-functions-abstract-operations-async-function-start","aoid":"AsyncFunctionStart","title":"AsyncFunctionStart ( promiseCapability, asyncFunctionBody )","titleHTML":"AsyncFunctionStart ( <var>promiseCapability</var>, <var>asyncFunctionBody</var> )","number":"25.7.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_4309","_ref_4352"],"key":"AsyncFunctionStart ( promiseCapability, asyncFunctionBody )"},{"type":"clause","id":"sec-async-functions-abstract-operations","aoid":null,"title":"Async Functions Abstract Operations","titleHTML":"Async Functions Abstract Operations","number":"25.7.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Async Functions Abstract Operations"},{"type":"clause","id":"sec-async-function-objects","aoid":null,"title":"AsyncFunction Objects","titleHTML":"AsyncFunction Objects","number":"25.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"AsyncFunction Objects"},{"type":"clause","id":"sec-control-abstraction-objects","aoid":null,"title":"Control Abstraction Objects","titleHTML":"Control Abstraction Objects","number":"25","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Control Abstraction Objects"},{"type":"term","term":"%Reflect%","refId":"sec-reflect-object","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Reflect%"},{"type":"clause","id":"sec-reflect.apply","aoid":null,"title":"Reflect.apply ( target, thisArgument, argumentsList )","titleHTML":"Reflect.apply ( <var>target</var>, <var>thisArgument</var>, <var>argumentsList</var> )","number":"26.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.apply ( target, thisArgument, argumentsList )"},{"type":"clause","id":"sec-reflect.construct","aoid":null,"title":"Reflect.construct ( target, argumentsList [ , newTarget ] )","titleHTML":"Reflect.construct ( <var>target</var>, <var>argumentsList</var> [ , <var>newTarget</var> ] )","number":"26.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.construct ( target, argumentsList [ , newTarget ] )"},{"type":"clause","id":"sec-reflect.defineproperty","aoid":null,"title":"Reflect.defineProperty ( target, propertyKey, attributes )","titleHTML":"Reflect.defineProperty ( <var>target</var>, <var>propertyKey</var>, <var>attributes</var> )","number":"26.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.defineProperty ( target, propertyKey, attributes )"},{"type":"clause","id":"sec-reflect.deleteproperty","aoid":null,"title":"Reflect.deleteProperty ( target, propertyKey )","titleHTML":"Reflect.deleteProperty ( <var>target</var>, <var>propertyKey</var> )","number":"26.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.deleteProperty ( target, propertyKey )"},{"type":"clause","id":"sec-reflect.get","aoid":null,"title":"Reflect.get ( target, propertyKey [ , receiver ] )","titleHTML":"Reflect.get ( <var>target</var>, <var>propertyKey</var> [ , <var>receiver</var> ] )","number":"26.1.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.get ( target, propertyKey [ , receiver ] )"},{"type":"clause","id":"sec-reflect.getownpropertydescriptor","aoid":null,"title":"Reflect.getOwnPropertyDescriptor ( target, propertyKey )","titleHTML":"Reflect.getOwnPropertyDescriptor ( <var>target</var>, <var>propertyKey</var> )","number":"26.1.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.getOwnPropertyDescriptor ( target, propertyKey )"},{"type":"clause","id":"sec-reflect.getprototypeof","aoid":null,"title":"Reflect.getPrototypeOf ( target )","titleHTML":"Reflect.getPrototypeOf ( <var>target</var> )","number":"26.1.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.getPrototypeOf ( target )"},{"type":"clause","id":"sec-reflect.has","aoid":null,"title":"Reflect.has ( target, propertyKey )","titleHTML":"Reflect.has ( <var>target</var>, <var>propertyKey</var> )","number":"26.1.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.has ( target, propertyKey )"},{"type":"clause","id":"sec-reflect.isextensible","aoid":null,"title":"Reflect.isExtensible ( target )","titleHTML":"Reflect.isExtensible ( <var>target</var> )","number":"26.1.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.isExtensible ( target )"},{"type":"clause","id":"sec-reflect.ownkeys","aoid":null,"title":"Reflect.ownKeys ( target )","titleHTML":"Reflect.ownKeys ( <var>target</var> )","number":"26.1.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.ownKeys ( target )"},{"type":"clause","id":"sec-reflect.preventextensions","aoid":null,"title":"Reflect.preventExtensions ( target )","titleHTML":"Reflect.preventExtensions ( <var>target</var> )","number":"26.1.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.preventExtensions ( target )"},{"type":"clause","id":"sec-reflect.set","aoid":null,"title":"Reflect.set ( target, propertyKey, V [ , receiver ] )","titleHTML":"Reflect.set ( <var>target</var>, <var>propertyKey</var>, <var>V</var> [ , <var>receiver</var> ] )","number":"26.1.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.set ( target, propertyKey, V [ , receiver ] )"},{"type":"clause","id":"sec-reflect.setprototypeof","aoid":null,"title":"Reflect.setPrototypeOf ( target, proto )","titleHTML":"Reflect.setPrototypeOf ( <var>target</var>, <var>proto</var> )","number":"26.1.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflect.setPrototypeOf ( target, proto )"},{"type":"clause","id":"sec-reflect-object","aoid":null,"title":"The Reflect Object","titleHTML":"The Reflect Object","number":"26.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_103","_ref_467","_ref_1148"],"key":"The Reflect Object"},{"type":"term","term":"%Proxy%","refId":"sec-proxy-constructor","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"%Proxy%"},{"type":"clause","id":"sec-proxy-target-handler","aoid":null,"title":"Proxy ( target, handler )","titleHTML":"Proxy ( <var>target</var>, <var>handler</var> )","number":"26.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Proxy ( target, handler )"},{"type":"clause","id":"sec-proxy-constructor","aoid":null,"title":"The Proxy Constructor","titleHTML":"The Proxy Constructor","number":"26.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_100","_ref_447","_ref_1142"],"key":"The Proxy Constructor"},{"type":"clause","id":"sec-proxy-revocation-functions","aoid":null,"title":"Proxy Revocation Functions","titleHTML":"Proxy Revocation Functions","number":"26.2.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_721"],"key":"Proxy Revocation Functions"},{"type":"clause","id":"sec-proxy.revocable","aoid":null,"title":"Proxy.revocable ( target, handler )","titleHTML":"Proxy.revocable ( <var>target</var>, <var>handler</var> )","number":"26.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Proxy.revocable ( target, handler )"},{"type":"clause","id":"sec-properties-of-the-proxy-constructor","aoid":null,"title":"Properties of the Proxy Constructor","titleHTML":"Properties of the Proxy Constructor","number":"26.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of the Proxy Constructor"},{"type":"clause","id":"sec-proxy-objects","aoid":null,"title":"Proxy Objects","titleHTML":"Proxy Objects","number":"26.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Proxy Objects"},{"type":"clause","id":"sec-@@tostringtag","aoid":null,"title":"@@toStringTag","titleHTML":"@@toStringTag","number":"26.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"@@toStringTag"},{"type":"clause","id":"sec-module-namespace-objects","aoid":null,"title":"Module Namespace Objects","titleHTML":"Module Namespace Objects","number":"26.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_244","_ref_370"],"key":"Module Namespace Objects"},{"type":"clause","id":"sec-reflection","aoid":null,"title":"Reflection","titleHTML":"Reflection","number":"26","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Reflection"},{"type":"term","term":"memory model","refId":"sec-memory-model","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"memory model"},{"type":"term","term":"Shared Data Block event","refId":"sec-memory-model-fundamentals","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Shared Data Block event"},{"type":"term","term":"ReadSharedMemory","refId":"sec-memory-model-fundamentals","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ReadSharedMemory"},{"type":"term","term":"WriteSharedMemory","refId":"sec-memory-model-fundamentals","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"WriteSharedMemory"},{"type":"term","term":"ReadModifyWriteSharedMemory","refId":"sec-memory-model-fundamentals","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"ReadModifyWriteSharedMemory"},{"type":"table","id":"table-readsharedmemory-fields","number":77,"caption":"Table 77: ReadSharedMemory Event Fields","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 77: ReadSharedMemory Event Fields"},{"type":"table","id":"table-writesharedmemory-fields","number":78,"caption":"Table 78: WriteSharedMemory Event Fields","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 78: WriteSharedMemory Event Fields"},{"type":"table","id":"table-rmwsharedmemory-fields","number":79,"caption":"Table 79: ReadModifyWriteSharedMemory Event Fields","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 79: ReadModifyWriteSharedMemory Event Fields"},{"type":"term","term":"Synchronize","refId":"sec-memory-model-fundamentals","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Synchronize"},{"type":"term","term":"Synchronize event","refId":"sec-memory-model-fundamentals","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Synchronize event"},{"type":"clause","id":"sec-memory-model-fundamentals","aoid":null,"title":"Memory Model Fundamentals","titleHTML":"Memory Model Fundamentals","number":"27.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1407","_ref_1420","_ref_1423","_ref_2253","_ref_2254","_ref_7392","_ref_7415","_ref_7431","_ref_7638","_ref_8396","_ref_8399","_ref_8404","_ref_8420","_ref_8421","_ref_8424","_ref_8425","_ref_8426","_ref_8435","_ref_8436","_ref_8454","_ref_8455","_ref_8456","_ref_8459","_ref_8465","_ref_8466","_ref_8470","_ref_8472","_ref_8474","_ref_8477","_ref_8478","_ref_8480","_ref_8481","_ref_8483","_ref_8484","_ref_8487","_ref_8488","_ref_8501","_ref_8502","_ref_8505","_ref_8506","_ref_8525","_ref_8526","_ref_8530","_ref_8531","_ref_8534","_ref_8535","_ref_8537","_ref_8538","_ref_8544","_ref_8545","_ref_8547","_ref_8548","_ref_8550","_ref_8551","_ref_8562","_ref_8563"],"key":"Memory Model Fundamentals"},{"type":"term","term":"Agent Events Record","refId":"sec-agent-event-records","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Agent Events Record"},{"type":"table","id":"table-agent-events-records","number":80,"caption":"Table 80: Agent Events Record Fields","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 80: Agent Events Record Fields"},{"type":"clause","id":"sec-agent-event-records","aoid":null,"title":"Agent Events Records","titleHTML":"Agent Events Records","number":"27.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_2287","_ref_7636","_ref_8416","_ref_8451","_ref_8493"],"key":"Agent Events Records"},{"type":"term","term":"Chosen Value Record","refId":"sec-chosen-value-records","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Chosen Value Record"},{"type":"table","id":"table-chosen-value-records","number":81,"caption":"Table 81: Chosen Value Record Fields","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 81: Chosen Value Record Fields"},{"type":"clause","id":"sec-chosen-value-records","aoid":null,"title":"Chosen Value Records","titleHTML":"Chosen Value Records","number":"27.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1421","_ref_7393","_ref_7432","_ref_8423"],"key":"Chosen Value Records"},{"type":"term","term":"candidate execution","refId":"sec-candidate-executions","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"candidate execution"},{"type":"table","id":"table-candidate-execution-records","number":82,"caption":"Table 82: Candidate Execution Record Fields","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 82: Candidate Execution Record Fields"},{"type":"term","term":"empty candidate execution","refId":"sec-candidate-executions","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"empty candidate execution"},{"type":"clause","id":"sec-candidate-executions","aoid":null,"title":"Candidate Executions","titleHTML":"Candidate Executions","number":"27.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_1393","_ref_2248","_ref_2282","_ref_2283","_ref_2284","_ref_2289","_ref_2291","_ref_8450","_ref_8452","_ref_8457","_ref_8460","_ref_8463","_ref_8479","_ref_8490","_ref_8498","_ref_8507","_ref_8510","_ref_8514","_ref_8519","_ref_8524","_ref_8529","_ref_8536","_ref_8541","_ref_8553","_ref_8557"],"key":"Candidate Executions"},{"type":"op","aoid":"EventSet","refId":"sec-event-set","location":"","referencingIds":[],"key":"EventSet"},{"type":"clause","id":"sec-event-set","aoid":"EventSet","title":"EventSet ( execution )","titleHTML":"EventSet ( <var>execution</var> )","number":"27.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8453","_ref_8458","_ref_8461","_ref_8492","_ref_8522","_ref_8543","_ref_8554"],"key":"EventSet ( execution )"},{"type":"op","aoid":"SharedDataBlockEventSet","refId":"sec-sharedatablockeventset","location":"","referencingIds":[],"key":"SharedDataBlockEventSet"},{"type":"clause","id":"sec-sharedatablockeventset","aoid":"SharedDataBlockEventSet","title":"SharedDataBlockEventSet ( execution )","titleHTML":"SharedDataBlockEventSet ( <var>execution</var> )","number":"27.5.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8462","_ref_8499","_ref_8500","_ref_8503","_ref_8509","_ref_8521","_ref_8527","_ref_8532","_ref_8539","_ref_8546","_ref_8549","_ref_8552","_ref_8561","_ref_8564","_ref_8565"],"key":"SharedDataBlockEventSet ( execution )"},{"type":"op","aoid":"SynchronizeEventSet","refId":"sec-synchronizeeventset","location":"","referencingIds":[],"key":"SynchronizeEventSet"},{"type":"clause","id":"sec-synchronizeeventset","aoid":"SynchronizeEventSet","title":"SynchronizeEventSet ( execution )","titleHTML":"SynchronizeEventSet ( <var>execution</var> )","number":"27.5.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"SynchronizeEventSet ( execution )"},{"type":"op","aoid":"HostEventSet","refId":"sec-hosteventset","location":"","referencingIds":[],"key":"HostEventSet"},{"type":"clause","id":"sec-hosteventset","aoid":"HostEventSet","title":"HostEventSet ( execution )","titleHTML":"HostEventSet ( <var>execution</var> )","number":"27.5.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8512"],"key":"HostEventSet ( execution )"},{"type":"op","aoid":"ComposeWriteEventBytes","refId":"sec-composewriteeventbytes","location":"","referencingIds":[],"key":"ComposeWriteEventBytes"},{"type":"clause","id":"sec-composewriteeventbytes","aoid":"ComposeWriteEventBytes","title":"ComposeWriteEventBytes ( execution, byteIndex, Ws )","titleHTML":"ComposeWriteEventBytes ( <var>execution</var>, <var>byteIndex</var>, <var>Ws</var> )","number":"27.5.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8489"],"key":"ComposeWriteEventBytes ( execution, byteIndex, Ws )"},{"type":"op","aoid":"ValueOfReadEvent","refId":"sec-valueofreadevent","location":"","referencingIds":[],"key":"ValueOfReadEvent"},{"type":"clause","id":"sec-valueofreadevent","aoid":"ValueOfReadEvent","title":"ValueOfReadEvent ( execution, R )","titleHTML":"ValueOfReadEvent ( <var>execution</var>, <var>R</var> )","number":"27.5.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8473","_ref_8528","_ref_8579"],"key":"ValueOfReadEvent ( execution, R )"},{"type":"clause","id":"sec-abstract-operations-for-the-memory-model","aoid":null,"title":"Abstract Operations for the Memory Model","titleHTML":"Abstract Operations for the Memory Model","number":"27.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Abstract Operations for the Memory Model"},{"type":"op","aoid":"agent-order","refId":"sec-agent-order","location":"","referencingIds":[],"key":"agent-order"},{"type":"clause","id":"sec-agent-order","aoid":"agent-order","title":"agent-order","titleHTML":"agent-order","number":"27.6.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8414","_ref_8438","_ref_8523","_ref_8576","_ref_8577","_ref_8580"],"key":"agent-order"},{"type":"op","aoid":"reads-bytes-from","refId":"sec-reads-bytes-from","location":"","referencingIds":[],"key":"reads-bytes-from"},{"type":"clause","id":"sec-reads-bytes-from","aoid":"reads-bytes-from","title":"reads-bytes-from","titleHTML":"reads-bytes-from","number":"27.6.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8440"],"key":"reads-bytes-from"},{"type":"op","aoid":"reads-from","refId":"sec-reads-from","location":"","referencingIds":[],"key":"reads-from"},{"type":"clause","id":"sec-reads-from","aoid":"reads-from","title":"reads-from","titleHTML":"reads-from","number":"27.6.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8441","_ref_8516","_ref_8518"],"key":"reads-from"},{"type":"op","aoid":"host-synchronizes-with","refId":"sec-host-synchronizes-with","location":"","referencingIds":[],"key":"host-synchronizes-with"},{"type":"clause","id":"sec-host-synchronizes-with","aoid":"host-synchronizes-with","title":"host-synchronizes-with","titleHTML":"host-synchronizes-with","number":"27.6.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8443","_ref_8558"],"key":"host-synchronizes-with"},{"type":"op","aoid":"synchronizes-with","refId":"sec-synchronizes-with","location":"","referencingIds":[],"key":"synchronizes-with"},{"type":"clause","id":"sec-synchronizes-with","aoid":"synchronizes-with","title":"synchronizes-with","titleHTML":"synchronizes-with","number":"27.6.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8445","_ref_8556"],"key":"synchronizes-with"},{"type":"op","aoid":"happens-before","refId":"sec-happens-before","location":"","referencingIds":[],"key":"happens-before"},{"type":"clause","id":"sec-happens-before","aoid":"happens-before","title":"happens-before","titleHTML":"happens-before","number":"27.6.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8447","_ref_8513","_ref_8555"],"key":"happens-before"},{"type":"clause","id":"sec-relations-of-candidate-executions","aoid":null,"title":"Relations of Candidate Executions","titleHTML":"Relations of Candidate Executions","number":"27.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Relations of Candidate Executions"},{"type":"clause","id":"sec-valid-chosen-reads","aoid":null,"title":"Valid Chosen Reads","titleHTML":"Valid Chosen Reads","number":"27.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Valid Chosen Reads"},{"type":"clause","id":"sec-coherent-reads","aoid":null,"title":"Coherent Reads","titleHTML":"Coherent Reads","number":"27.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Coherent Reads"},{"type":"clause","id":"sec-tear-free-aligned-reads","aoid":null,"title":"Tear Free Reads","titleHTML":"Tear Free Reads","number":"27.7.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Tear Free Reads"},{"type":"op","aoid":"memory-order","refId":"sec-memory-order","location":"","referencingIds":[],"key":"memory-order"},{"type":"clause","id":"sec-memory-order","aoid":"memory-order","title":"Sequentially Consistent Atomics","titleHTML":"Sequentially Consistent Atomics","number":"27.7.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8581","_ref_8583"],"key":"Sequentially Consistent Atomics"},{"type":"clause","id":"sec-valid-executions","aoid":null,"title":"Valid Executions","titleHTML":"Valid Executions","number":"27.7.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Valid Executions"},{"type":"clause","id":"sec-properties-of-valid-executions","aoid":null,"title":"Properties of Valid Executions","titleHTML":"Properties of Valid Executions","number":"27.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Properties of Valid Executions"},{"type":"clause","id":"sec-races","aoid":null,"title":"Races","titleHTML":"Races","number":"27.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Races"},{"type":"clause","id":"sec-data-races","aoid":null,"title":"Data Races","titleHTML":"Data Races","number":"27.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Data Races"},{"type":"clause","id":"sec-data-race-freedom","aoid":null,"title":"Data Race Freedom","titleHTML":"Data Race Freedom","number":"27.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Data Race Freedom"},{"type":"term","term":"agent-order slice","refId":"sec-shared-memory-guidelines","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"agent-order slice"},{"type":"term","term":"possible read values","refId":"sec-shared-memory-guidelines","referencingIds":[],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"possible read values"},{"type":"clause","id":"sec-shared-memory-guidelines","aoid":null,"title":"Shared Memory Guidelines","titleHTML":"Shared Memory Guidelines","number":"27.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Shared Memory Guidelines"},{"type":"clause","id":"sec-memory-model","aoid":null,"title":"Memory Model","titleHTML":"Memory Model","number":"27","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_855","_ref_1213","_ref_1390","_ref_1392","_ref_1394","_ref_1395","_ref_1396","_ref_1419","_ref_2250","_ref_2292","_ref_2304","_ref_7391","_ref_7430","_ref_7570","_ref_7571","_ref_8397","_ref_8400","_ref_8566","_ref_8568","_ref_8574","_ref_8575","_ref_8585","_ref_8586","_ref_8587","_ref_8588"],"key":"Memory Model"},{"type":"clause","id":"sec-lexical-grammar","aoid":null,"title":"Lexical Grammar","titleHTML":"Lexical Grammar","number":"A.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Lexical Grammar"},{"type":"clause","id":"sec-expressions","aoid":null,"title":"Expressions","titleHTML":"Expressions","number":"A.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Expressions"},{"type":"clause","id":"sec-statements","aoid":null,"title":"Statements","titleHTML":"Statements","number":"A.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Statements"},{"type":"clause","id":"sec-functions-and-classes","aoid":null,"title":"Functions and Classes","titleHTML":"Functions and Classes","number":"A.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Functions and Classes"},{"type":"clause","id":"sec-scripts-and-modules","aoid":null,"title":"Scripts and Modules","titleHTML":"Scripts and Modules","number":"A.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Scripts and Modules"},{"type":"clause","id":"sec-number-conversions","aoid":null,"title":"Number Conversions","titleHTML":"Number Conversions","number":"A.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Number Conversions"},{"type":"clause","id":"sec-universal-resource-identifier-character-classes","aoid":null,"title":"Universal Resource Identifier Character Classes","titleHTML":"Universal Resource Identifier Character Classes","number":"A.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Universal Resource Identifier Character Classes"},{"type":"clause","id":"sec-regular-expressions","aoid":null,"title":"Regular Expressions","titleHTML":"Regular Expressions","number":"A.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Regular Expressions"},{"type":"clause","id":"sec-grammar-summary","aoid":null,"title":"Grammar Summary","titleHTML":"Grammar Summary","number":"A","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Grammar Summary"},{"type":"clause","id":"sec-additional-syntax-numeric-literals-status-semantics","aoid":null,"title":"Static Semantics","titleHTML":"Static Semantics","number":"B.1.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics"},{"type":"clause","id":"sec-additional-syntax-numeric-literals","aoid":null,"title":"Numeric Literals","titleHTML":"Numeric Literals","number":"B.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_283","_ref_390","_ref_777"],"key":"Numeric Literals"},{"type":"clause","id":"sec-additional-syntax-string-literals-static-semantics","aoid":null,"title":"Static Semantics","titleHTML":"Static Semantics","number":"B.1.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics"},{"type":"clause","id":"sec-additional-syntax-string-literals","aoid":null,"title":"String Literals","titleHTML":"String Literals","number":"B.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_289","_ref_298","_ref_392","_ref_731","_ref_778"],"key":"String Literals"},{"type":"clause","id":"sec-html-like-comments","aoid":null,"title":"HTML-like Comments","titleHTML":"HTML-like Comments","number":"B.1.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_397"],"key":"HTML-like Comments"},{"type":"clause","id":"sec-patterns-static-semantics-early-errors-annexb","aoid":null,"title":"Static Semantics: Early Errors","titleHTML":"Static Semantics: Early Errors","number":"B.1.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: Early Errors"},{"type":"clause","id":"sec-patterns-static-semantics-is-character-class-annexb","aoid":null,"title":"Static Semantics: IsCharacterClass","titleHTML":"Static Semantics: IsCharacterClass","number":"B.1.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: IsCharacterClass"},{"type":"clause","id":"sec-patterns-static-semantics-character-value-annexb","aoid":null,"title":"Static Semantics: CharacterValue","titleHTML":"Static Semantics: CharacterValue","number":"B.1.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Static Semantics: CharacterValue"},{"type":"op","aoid":"CharacterRangeOrUnion","refId":"sec-runtime-semantics-characterrangeorunion-abstract-operation","location":"","referencingIds":[],"key":"CharacterRangeOrUnion"},{"type":"clause","id":"sec-runtime-semantics-characterrangeorunion-abstract-operation","aoid":"CharacterRangeOrUnion","title":"Runtime Semantics: CharacterRangeOrUnion ( A, B )","titleHTML":"Runtime Semantics: CharacterRangeOrUnion ( <var>A</var>, <var>B</var> )","number":"B.1.4.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8640","_ref_8641"],"key":"Runtime Semantics: CharacterRangeOrUnion ( A, B )"},{"type":"clause","id":"sec-regular-expression-patterns-semantics","aoid":null,"title":"Pattern Semantics","titleHTML":"Pattern Semantics","number":"B.1.4.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Pattern Semantics"},{"type":"clause","id":"sec-regular-expressions-patterns","aoid":null,"title":"Regular Expressions Patterns","titleHTML":"Regular Expressions Patterns","number":"B.1.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_387"],"key":"Regular Expressions Patterns"},{"type":"clause","id":"sec-additional-syntax","aoid":null,"title":"Additional Syntax","titleHTML":"Additional Syntax","number":"B.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Additional Syntax"},{"type":"table","id":"table-60","number":83,"caption":"Table 83: Additional Well-known Intrinsic Objects","referencingIds":["_ref_743"],"namespace":"https://tc39.github.io/ecma262/","location":"","key":"Table 83: Additional Well-known Intrinsic Objects"},{"type":"clause","id":"sec-escape-string","aoid":null,"title":"escape ( string )","titleHTML":"escape ( <var>string</var> )","number":"B.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_745","_ref_8643"],"key":"escape ( string )"},{"type":"clause","id":"sec-unescape-string","aoid":null,"title":"unescape ( string )","titleHTML":"unescape ( <var>string</var> )","number":"B.2.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_746","_ref_8644"],"key":"unescape ( string )"},{"type":"clause","id":"sec-additional-properties-of-the-global-object","aoid":null,"title":"Additional Properties of the Global Object","titleHTML":"Additional Properties of the Global Object","number":"B.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Additional Properties of the Global Object"},{"type":"clause","id":"sec-get-object.prototype.__proto__","aoid":null,"title":"get Object.prototype.__proto__","titleHTML":"get Object.prototype.__proto__","number":"B.2.2.1.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"get Object.prototype.__proto__"},{"type":"clause","id":"sec-set-object.prototype.__proto__","aoid":null,"title":"set Object.prototype.__proto__","titleHTML":"set Object.prototype.__proto__","number":"B.2.2.1.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"set Object.prototype.__proto__"},{"type":"clause","id":"sec-object.prototype.__proto__","aoid":null,"title":"Object.prototype.__proto__","titleHTML":"Object.prototype.__proto__","number":"B.2.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype.__proto__"},{"type":"clause","id":"sec-object.prototype.__defineGetter__","aoid":null,"title":"Object.prototype.__defineGetter__ ( P, getter )","titleHTML":"Object.prototype.__defineGetter__ ( <var>P</var>, <var>getter</var> )","number":"B.2.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype.__defineGetter__ ( P, getter )"},{"type":"clause","id":"sec-object.prototype.__defineSetter__","aoid":null,"title":"Object.prototype.__defineSetter__ ( P, setter )","titleHTML":"Object.prototype.__defineSetter__ ( <var>P</var>, <var>setter</var> )","number":"B.2.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype.__defineSetter__ ( P, setter )"},{"type":"clause","id":"sec-object.prototype.__lookupGetter__","aoid":null,"title":"Object.prototype.__lookupGetter__ ( P )","titleHTML":"Object.prototype.__lookupGetter__ ( <var>P</var> )","number":"B.2.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype.__lookupGetter__ ( P )"},{"type":"clause","id":"sec-object.prototype.__lookupSetter__","aoid":null,"title":"Object.prototype.__lookupSetter__ ( P )","titleHTML":"Object.prototype.__lookupSetter__ ( <var>P</var> )","number":"B.2.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Object.prototype.__lookupSetter__ ( P )"},{"type":"clause","id":"sec-additional-properties-of-the-object.prototype-object","aoid":null,"title":"Additional Properties of the Object.prototype Object","titleHTML":"Additional Properties of the Object.prototype Object","number":"B.2.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Additional Properties of the Object.prototype Object"},{"type":"clause","id":"sec-string.prototype.substr","aoid":null,"title":"String.prototype.substr ( start, length )","titleHTML":"String.prototype.substr ( <var>start</var>, <var>length</var> )","number":"B.2.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.substr ( start, length )"},{"type":"op","aoid":"CreateHTML","refId":"sec-createhtml","location":"","referencingIds":[],"key":"CreateHTML"},{"type":"clause","id":"sec-createhtml","aoid":"CreateHTML","title":"Runtime Semantics: CreateHTML ( string, tag, attribute, value )","titleHTML":"Runtime Semantics: CreateHTML ( <var>string</var>, <var>tag</var>, <var>attribute</var>, <var>value</var> )","number":"B.2.3.2.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8679","_ref_8688","_ref_8689","_ref_8690","_ref_8691","_ref_8692","_ref_8693","_ref_8694","_ref_8695","_ref_8696","_ref_8697","_ref_8698","_ref_8699"],"key":"Runtime Semantics: CreateHTML ( string, tag, attribute, value )"},{"type":"clause","id":"sec-string.prototype.anchor","aoid":null,"title":"String.prototype.anchor ( name )","titleHTML":"String.prototype.anchor ( <var>name</var> )","number":"B.2.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.anchor ( name )"},{"type":"clause","id":"sec-string.prototype.big","aoid":null,"title":"String.prototype.big ( )","titleHTML":"String.prototype.big ( )","number":"B.2.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.big ( )"},{"type":"clause","id":"sec-string.prototype.blink","aoid":null,"title":"String.prototype.blink ( )","titleHTML":"String.prototype.blink ( )","number":"B.2.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.blink ( )"},{"type":"clause","id":"sec-string.prototype.bold","aoid":null,"title":"String.prototype.bold ( )","titleHTML":"String.prototype.bold ( )","number":"B.2.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.bold ( )"},{"type":"clause","id":"sec-string.prototype.fixed","aoid":null,"title":"String.prototype.fixed ( )","titleHTML":"String.prototype.fixed ( )","number":"B.2.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.fixed ( )"},{"type":"clause","id":"sec-string.prototype.fontcolor","aoid":null,"title":"String.prototype.fontcolor ( color )","titleHTML":"String.prototype.fontcolor ( <var>color</var> )","number":"B.2.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.fontcolor ( color )"},{"type":"clause","id":"sec-string.prototype.fontsize","aoid":null,"title":"String.prototype.fontsize ( size )","titleHTML":"String.prototype.fontsize ( <var>size</var> )","number":"B.2.3.8","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.fontsize ( size )"},{"type":"clause","id":"sec-string.prototype.italics","aoid":null,"title":"String.prototype.italics ( )","titleHTML":"String.prototype.italics ( )","number":"B.2.3.9","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.italics ( )"},{"type":"clause","id":"sec-string.prototype.link","aoid":null,"title":"String.prototype.link ( url )","titleHTML":"String.prototype.link ( <var>url</var> )","number":"B.2.3.10","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.link ( url )"},{"type":"clause","id":"sec-string.prototype.small","aoid":null,"title":"String.prototype.small ( )","titleHTML":"String.prototype.small ( )","number":"B.2.3.11","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.small ( )"},{"type":"clause","id":"sec-string.prototype.strike","aoid":null,"title":"String.prototype.strike ( )","titleHTML":"String.prototype.strike ( )","number":"B.2.3.12","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.strike ( )"},{"type":"clause","id":"sec-string.prototype.sub","aoid":null,"title":"String.prototype.sub ( )","titleHTML":"String.prototype.sub ( )","number":"B.2.3.13","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.sub ( )"},{"type":"clause","id":"sec-string.prototype.sup","aoid":null,"title":"String.prototype.sup ( )","titleHTML":"String.prototype.sup ( )","number":"B.2.3.14","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.sup ( )"},{"type":"clause","id":"String.prototype.trimleft","aoid":null,"title":"String.prototype.trimLeft ( )","titleHTML":"String.prototype.trimLeft ( )","number":"B.2.3.15","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.trimLeft ( )"},{"type":"clause","id":"String.prototype.trimright","aoid":null,"title":"String.prototype.trimRight ( )","titleHTML":"String.prototype.trimRight ( )","number":"B.2.3.16","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"String.prototype.trimRight ( )"},{"type":"clause","id":"sec-additional-properties-of-the-string.prototype-object","aoid":null,"title":"Additional Properties of the String.prototype Object","titleHTML":"Additional Properties of the String.prototype Object","number":"B.2.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Additional Properties of the String.prototype Object"},{"type":"clause","id":"sec-date.prototype.getyear","aoid":null,"title":"Date.prototype.getYear ( )","titleHTML":"Date.prototype.getYear ( )","number":"B.2.4.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.getYear ( )"},{"type":"clause","id":"sec-date.prototype.setyear","aoid":null,"title":"Date.prototype.setYear ( year )","titleHTML":"Date.prototype.setYear ( <var>year</var> )","number":"B.2.4.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.setYear ( year )"},{"type":"clause","id":"sec-date.prototype.togmtstring","aoid":null,"title":"Date.prototype.toGMTString ( )","titleHTML":"Date.prototype.toGMTString ( )","number":"B.2.4.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Date.prototype.toGMTString ( )"},{"type":"clause","id":"sec-additional-properties-of-the-date.prototype-object","aoid":null,"title":"Additional Properties of the Date.prototype Object","titleHTML":"Additional Properties of the Date.prototype Object","number":"B.2.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Additional Properties of the Date.prototype Object"},{"type":"clause","id":"sec-regexp.prototype.compile","aoid":null,"title":"RegExp.prototype.compile ( pattern, flags )","titleHTML":"RegExp.prototype.compile ( <var>pattern</var>, <var>flags</var> )","number":"B.2.5.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"RegExp.prototype.compile ( pattern, flags )"},{"type":"clause","id":"sec-additional-properties-of-the-regexp.prototype-object","aoid":null,"title":"Additional Properties of the RegExp.prototype Object","titleHTML":"Additional Properties of the RegExp.prototype Object","number":"B.2.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Additional Properties of the RegExp.prototype Object"},{"type":"clause","id":"sec-additional-built-in-properties","aoid":null,"title":"Additional Built-in Properties","titleHTML":"Additional Built-in Properties","number":"B.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_403","_ref_404"],"key":"Additional Built-in Properties"},{"type":"clause","id":"sec-__proto__-property-names-in-object-initializers","aoid":null,"title":"__proto__ Property Names in Object Initializers","titleHTML":"__proto__ Property Names in Object Initializers","number":"B.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_309","_ref_673"],"key":"__proto__ Property Names in Object Initializers"},{"type":"clause","id":"sec-labelled-function-declarations","aoid":null,"title":"Labelled Function Declarations","titleHTML":"Labelled Function Declarations","number":"B.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_338","_ref_340","_ref_350","_ref_351","_ref_393"],"key":"Labelled Function Declarations"},{"type":"clause","id":"sec-web-compat-functiondeclarationinstantiation","aoid":null,"title":"Changes to FunctionDeclarationInstantiation","titleHTML":"Changes to FunctionDeclarationInstantiation","number":"B.3.3.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_194"],"key":"Changes to FunctionDeclarationInstantiation"},{"type":"clause","id":"sec-web-compat-globaldeclarationinstantiation","aoid":null,"title":"Changes to GlobalDeclarationInstantiation","titleHTML":"Changes to GlobalDeclarationInstantiation","number":"B.3.3.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_364"],"key":"Changes to GlobalDeclarationInstantiation"},{"type":"clause","id":"sec-web-compat-evaldeclarationinstantiation","aoid":null,"title":"Changes to EvalDeclarationInstantiation","titleHTML":"Changes to EvalDeclarationInstantiation","number":"B.3.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_415"],"key":"Changes to EvalDeclarationInstantiation"},{"type":"clause","id":"sec-block-duplicates-allowed-static-semantics","aoid":null,"title":"Changes to Block Static Semantics: Early Errors","titleHTML":"Changes to Block Static Semantics: Early Errors","number":"B.3.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Changes to Block Static Semantics: Early Errors"},{"type":"clause","id":"sec-switch-duplicates-allowed-static-semantics","aoid":null,"title":"Changes to switch Statement Static Semantics: Early Errors","titleHTML":"Changes to <code>switch</code> Statement Static Semantics: Early Errors","number":"B.3.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Changes to switch Statement Static Semantics: Early Errors"},{"type":"clause","id":"sec-web-compat-blockdeclarationinstantiation","aoid":null,"title":"Changes to BlockDeclarationInstantiation","titleHTML":"Changes to BlockDeclarationInstantiation","number":"B.3.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Changes to BlockDeclarationInstantiation"},{"type":"clause","id":"sec-block-level-function-declarations-web-legacy-compatibility-semantics","aoid":null,"title":"Block-Level Function Declarations Web Legacy Compatibility Semantics","titleHTML":"Block-Level Function Declarations Web Legacy Compatibility Semantics","number":"B.3.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_195","_ref_355","_ref_394","_ref_758"],"key":"Block-Level Function Declarations Web Legacy Compatibility Semantics"},{"type":"clause","id":"sec-functiondeclarations-in-ifstatement-statement-clauses","aoid":null,"title":"FunctionDeclarations in IfStatement Statement Clauses","titleHTML":"FunctionDeclarations in IfStatement Statement Clauses","number":"B.3.4","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_395"],"key":"FunctionDeclarations in IfStatement Statement Clauses"},{"type":"clause","id":"sec-variablestatements-in-catch-blocks","aoid":null,"title":"VariableStatements in Catch Blocks","titleHTML":"VariableStatements in Catch Blocks","number":"B.3.5","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_352","_ref_414","_ref_416"],"key":"VariableStatements in Catch Blocks"},{"type":"clause","id":"sec-initializers-in-forin-statement-heads","aoid":null,"title":"Initializers in ForIn Statement Heads","titleHTML":"Initializers in ForIn Statement Heads","number":"B.3.6","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_339","_ref_341","_ref_342","_ref_343","_ref_344","_ref_345","_ref_346","_ref_348","_ref_396"],"key":"Initializers in ForIn Statement Heads"},{"type":"clause","id":"sec-IsHTMLDDA-internal-slot-to-boolean","aoid":null,"title":"Changes to ToBoolean","titleHTML":"Changes to ToBoolean","number":"B.3.7.1","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Changes to ToBoolean"},{"type":"clause","id":"sec-IsHTMLDDA-internal-slot-aec","aoid":null,"title":"Changes to Abstract Equality Comparison","titleHTML":"Changes to Abstract Equality Comparison","number":"B.3.7.2","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Changes to Abstract Equality Comparison"},{"type":"clause","id":"sec-IsHTMLDDA-internal-slot-typeof","aoid":null,"title":"Changes to the typeof Operator","titleHTML":"Changes to the <code>typeof</code> Operator","number":"B.3.7.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Changes to the typeof Operator"},{"type":"clause","id":"sec-IsHTMLDDA-internal-slot","aoid":null,"title":"The [[IsHTMLDDA]] Internal Slot","titleHTML":"The [[IsHTMLDDA]] Internal Slot","number":"B.3.7","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_8789","_ref_8791","_ref_8793","_ref_8794"],"key":"The [[IsHTMLDDA]] Internal Slot"},{"type":"clause","id":"sec-other-additional-features","aoid":null,"title":"Other Additional Features","titleHTML":"Other Additional Features","number":"B.3","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Other Additional Features"},{"type":"clause","id":"sec-additional-ecmascript-features-for-web-browsers","aoid":null,"title":"Additional ECMAScript Features for Web Browsers","titleHTML":"Additional ECMAScript Features for Web Browsers","number":"B","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Additional ECMAScript Features for Web Browsers"},{"type":"clause","id":"sec-strict-mode-of-ecmascript","aoid":null,"title":"The Strict Mode of ECMAScript","titleHTML":"The Strict Mode of ECMAScript","number":"C","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"The Strict Mode of ECMAScript"},{"type":"clause","id":"sec-corrections-and-clarifications-in-ecmascript-2015-with-possible-compatibility-impact","aoid":null,"title":"Corrections and Clarifications in ECMAScript 2015 with Possible Compatibility Impact","titleHTML":"Corrections and Clarifications in ECMAScript 2015 with Possible Compatibility Impact","number":"D","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Corrections and Clarifications in ECMAScript 2015 with Possible Compatibility Impact"},{"type":"clause","id":"sec-additions-and-changes-that-introduce-incompatibilities-with-prior-editions","aoid":null,"title":"Additions and Changes That Introduce Incompatibilities with Prior Editions","titleHTML":"Additions and Changes That Introduce Incompatibilities with Prior Editions","number":"E","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Additions and Changes That Introduce Incompatibilities with Prior Editions"},{"type":"clause","id":"sec-colophon","aoid":null,"title":"Colophon","titleHTML":"Colophon","number":"F","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":["_ref_0"],"key":"Colophon"},{"type":"clause","id":"sec-bibliography","aoid":null,"title":"Bibliography","titleHTML":"Bibliography","number":"G","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Bibliography"},{"type":"clause","id":"sec-copyright-and-software-license","aoid":null,"title":"Copyright & Software License","titleHTML":"Copyright & Software License","number":"H","namespace":"https://tc39.github.io/ecma262/","location":"","referencingIds":[],"key":"Copyright & Software License"},{"type":"production","id":"prod-grammar-notation-WhileStatement","name":"WhileStatement","referencingIds":["_ref_8817"],"namespace":"grammar-notation","location":"","key":"WhileStatement"},{"type":"production","id":"prod-grammar-notation-ArgumentList","name":"ArgumentList","referencingIds":["_ref_8823","_ref_8825","_ref_8827","_ref_8829","_ref_8830"],"namespace":"grammar-notation","location":"","key":"ArgumentList"},{"type":"production","id":"prod-grammar-notation-VariableDeclaration","name":"VariableDeclaration","referencingIds":[],"namespace":"grammar-notation","location":"","key":"VariableDeclaration"},{"type":"production","id":"prod-grammar-notation-IterationStatement","name":"IterationStatement","referencingIds":["_ref_8860"],"namespace":"grammar-notation","location":"","key":"IterationStatement"},{"type":"production","id":"prod-grammar-notation-StatementList","name":"StatementList","referencingIds":[],"namespace":"grammar-notation","location":"","key":"StatementList"},{"type":"production","id":"prod-grammar-notation-StatementList_Return","name":"StatementList_Return","referencingIds":[],"namespace":"grammar-notation","location":"","key":"StatementList_Return"},{"type":"production","id":"prod-grammar-notation-StatementList_In","name":"StatementList_In","referencingIds":[],"namespace":"grammar-notation","location":"","key":"StatementList_In"},{"type":"production","id":"prod-grammar-notation-StatementList_Return_In","name":"StatementList_Return_In","referencingIds":[],"namespace":"grammar-notation","location":"","key":"StatementList_Return_In"},{"type":"production","id":"prod-grammar-notation-VariableDeclaration_In","name":"VariableDeclaration_In","referencingIds":[],"namespace":"grammar-notation","location":"","key":"VariableDeclaration_In"},{"type":"production","id":"prod-grammar-notation-NonZeroDigit","name":"NonZeroDigit","referencingIds":[],"namespace":"grammar-notation","location":"","key":"NonZeroDigit"},{"type":"production","id":"prod-grammar-notation-DecimalDigit","name":"DecimalDigit","referencingIds":["_ref_8903","_ref_8905","_ref_8907","_ref_8908"],"namespace":"grammar-notation","location":"","key":"DecimalDigit"},{"type":"production","id":"prod-grammar-notation-DecimalDigits","name":"DecimalDigits","referencingIds":["_ref_8904","_ref_8906"],"namespace":"grammar-notation","location":"","key":"DecimalDigits"},{"type":"production","id":"prod-grammar-notation-LookaheadExample","name":"LookaheadExample","referencingIds":[],"namespace":"grammar-notation","location":"","key":"LookaheadExample"},{"type":"production","id":"prod-grammar-notation-ThrowStatement","name":"ThrowStatement","referencingIds":[],"namespace":"grammar-notation","location":"","key":"ThrowStatement"},{"type":"production","id":"prod-grammar-notation-Identifier","name":"Identifier","referencingIds":["_ref_8919"],"namespace":"grammar-notation","location":"","key":"Identifier"},{"type":"production","id":"prod-grammar-notation-SourceCharacter","name":"SourceCharacter","referencingIds":[],"namespace":"grammar-notation","location":"","key":"SourceCharacter"},{"type":"term","term":"syntax-directed operation","refId":"sec-algorithm-conventions-syntax-directed-operations","referencingIds":[],"namespace":"algorithm-conventions","location":"","key":"syntax-directed operation"},{"type":"term","term":"source text matched by","refId":"sec-algorithm-conventions-syntax-directed-operations","referencingIds":[],"namespace":"algorithm-conventions","location":"","key":"source text matched by"},{"type":"production","id":"prod-algorithm-conventions-Block","name":"Block","referencingIds":["_ref_8922"],"namespace":"algorithm-conventions","location":"","key":"Block"},{"type":"production","id":"prod-asi-rules-UpdateExpression","name":"UpdateExpression","referencingIds":[],"namespace":"asi-rules","location":"","key":"UpdateExpression"},{"type":"production","id":"prod-asi-rules-ContinueStatement","name":"ContinueStatement","referencingIds":[],"namespace":"asi-rules","location":"","key":"ContinueStatement"},{"type":"production","id":"prod-asi-rules-BreakStatement","name":"BreakStatement","referencingIds":[],"namespace":"asi-rules","location":"","key":"BreakStatement"},{"type":"production","id":"prod-asi-rules-ReturnStatement","name":"ReturnStatement","referencingIds":[],"namespace":"asi-rules","location":"","key":"ReturnStatement"},{"type":"production","id":"prod-asi-rules-ThrowStatement","name":"ThrowStatement","referencingIds":[],"namespace":"asi-rules","location":"","key":"ThrowStatement"},{"type":"production","id":"prod-asi-rules-ArrowFunction","name":"ArrowFunction","referencingIds":[],"namespace":"asi-rules","location":"","key":"ArrowFunction"},{"type":"production","id":"prod-asi-rules-YieldExpression","name":"YieldExpression","referencingIds":[],"namespace":"asi-rules","location":"","key":"YieldExpression"},{"type":"production","id":"prod-annexB-NumericLiteral","name":"NumericLiteral","referencingIds":[],"namespace":"annexB","location":"","key":"NumericLiteral"},{"type":"production","id":"prod-annexB-LegacyOctalIntegerLiteral","name":"LegacyOctalIntegerLiteral","referencingIds":["_ref_284","_ref_388","_ref_14835","_ref_14837","_ref_14852","_ref_14854"],"namespace":"annexB","location":"","key":"LegacyOctalIntegerLiteral"},{"type":"production","id":"prod-annexB-DecimalIntegerLiteral","name":"DecimalIntegerLiteral","referencingIds":[],"namespace":"annexB","location":"","key":"DecimalIntegerLiteral"},{"type":"production","id":"prod-annexB-NonOctalDecimalIntegerLiteral","name":"NonOctalDecimalIntegerLiteral","referencingIds":["_ref_285","_ref_389","_ref_14841","_ref_14845","_ref_14856","_ref_14857","_ref_14864","_ref_14866"],"namespace":"annexB","location":"","key":"NonOctalDecimalIntegerLiteral"},{"type":"production","id":"prod-annexB-LegacyOctalLikeDecimalIntegerLiteral","name":"LegacyOctalLikeDecimalIntegerLiteral","referencingIds":["_ref_14843","_ref_14848","_ref_14860","_ref_14862","_ref_14870","_ref_14872"],"namespace":"annexB","location":"","key":"LegacyOctalLikeDecimalIntegerLiteral"},{"type":"production","id":"prod-annexB-NonOctalDigit","name":"NonOctalDigit","referencingIds":["_ref_14842","_ref_14844","_ref_14858","_ref_14859","_ref_14861","_ref_14863"],"namespace":"annexB","location":"","key":"NonOctalDigit"},{"type":"production","id":"prod-annexB-EscapeSequence","name":"EscapeSequence","referencingIds":["_ref_14888"],"namespace":"annexB","location":"","key":"EscapeSequence"},{"type":"production","id":"prod-annexB-LegacyOctalEscapeSequence","name":"LegacyOctalEscapeSequence","referencingIds":["_ref_288","_ref_391","_ref_14875","_ref_14890","_ref_14891","_ref_14983","_ref_15008","_ref_15009","_ref_15045"],"namespace":"annexB","location":"","key":"LegacyOctalEscapeSequence"},{"type":"production","id":"prod-annexB-ZeroToThree","name":"ZeroToThree","referencingIds":["_ref_14880","_ref_14885","_ref_14894","_ref_14896","_ref_14902","_ref_14905"],"namespace":"annexB","location":"","key":"ZeroToThree"},{"type":"production","id":"prod-annexB-FourToSeven","name":"FourToSeven","referencingIds":["_ref_14883","_ref_14898","_ref_14900"],"namespace":"annexB","location":"","key":"FourToSeven"},{"type":"production","id":"prod-annexB-Comment","name":"Comment","referencingIds":[],"namespace":"annexB","location":"","key":"Comment"},{"type":"production","id":"prod-annexB-MultiLineComment","name":"MultiLineComment","referencingIds":["_ref_14909","_ref_14941"],"namespace":"annexB","location":"","key":"MultiLineComment"},{"type":"production","id":"prod-annexB-FirstCommentLine","name":"FirstCommentLine","referencingIds":["_ref_14914"],"namespace":"annexB","location":"","key":"FirstCommentLine"},{"type":"production","id":"prod-annexB-SingleLineHTMLOpenComment","name":"SingleLineHTMLOpenComment","referencingIds":["_ref_14911"],"namespace":"annexB","location":"","key":"SingleLineHTMLOpenComment"},{"type":"production","id":"prod-annexB-SingleLineHTMLCloseComment","name":"SingleLineHTMLCloseComment","referencingIds":["_ref_14912","_ref_14942"],"namespace":"annexB","location":"","key":"SingleLineHTMLCloseComment"},{"type":"production","id":"prod-annexB-SingleLineDelimitedComment","name":"SingleLineDelimitedComment","referencingIds":["_ref_14913","_ref_14938"],"namespace":"annexB","location":"","key":"SingleLineDelimitedComment"},{"type":"production","id":"prod-annexB-HTMLCloseComment","name":"HTMLCloseComment","referencingIds":["_ref_14917","_ref_14921"],"namespace":"annexB","location":"","key":"HTMLCloseComment"},{"type":"production","id":"prod-annexB-SingleLineDelimitedCommentChars","name":"SingleLineDelimitedCommentChars","referencingIds":["_ref_14918","_ref_14922","_ref_14927","_ref_14932"],"namespace":"annexB","location":"","key":"SingleLineDelimitedCommentChars"},{"type":"production","id":"prod-annexB-SingleLineNotAsteriskChar","name":"SingleLineNotAsteriskChar","referencingIds":["_ref_14926"],"namespace":"annexB","location":"","key":"SingleLineNotAsteriskChar"},{"type":"production","id":"prod-annexB-SingleLinePostAsteriskCommentChars","name":"SingleLinePostAsteriskCommentChars","referencingIds":["_ref_14928","_ref_14933"],"namespace":"annexB","location":"","key":"SingleLinePostAsteriskCommentChars"},{"type":"production","id":"prod-annexB-SingleLineNotForwardSlashOrAsteriskChar","name":"SingleLineNotForwardSlashOrAsteriskChar","referencingIds":["_ref_14931"],"namespace":"annexB","location":"","key":"SingleLineNotForwardSlashOrAsteriskChar"},{"type":"production","id":"prod-annexB-WhiteSpaceSequence","name":"WhiteSpaceSequence","referencingIds":["_ref_14923","_ref_14937","_ref_14939"],"namespace":"annexB","location":"","key":"WhiteSpaceSequence"},{"type":"production","id":"prod-annexB-SingleLineDelimitedCommentSequence","name":"SingleLineDelimitedCommentSequence","referencingIds":["_ref_14924","_ref_14940"],"namespace":"annexB","location":"","key":"SingleLineDelimitedCommentSequence"},{"type":"production","id":"prod-annexB-Term","name":"Term","referencingIds":[],"namespace":"annexB","location":"","key":"Term"},{"type":"production","id":"prod-annexB-Assertion","name":"Assertion","referencingIds":["_ref_14944","_ref_14950","_ref_15037"],"namespace":"annexB","location":"","key":"Assertion"},{"type":"production","id":"prod-annexB-QuantifiableAssertion","name":"QuantifiableAssertion","referencingIds":["_ref_14948","_ref_14956","_ref_15015","_ref_15019","_ref_15031","_ref_15032","_ref_15035","_ref_15036"],"namespace":"annexB","location":"","key":"QuantifiableAssertion"},{"type":"production","id":"prod-annexB-ExtendedAtom","name":"ExtendedAtom","referencingIds":["_ref_14951","_ref_14953","_ref_15021","_ref_15025","_ref_15027","_ref_15029","_ref_15040","_ref_15041"],"namespace":"annexB","location":"","key":"ExtendedAtom"},{"type":"production","id":"prod-annexB-InvalidBracedQuantifier","name":"InvalidBracedQuantifier","referencingIds":["_ref_14965","_ref_14995"],"namespace":"annexB","location":"","key":"InvalidBracedQuantifier"},{"type":"production","id":"prod-annexB-ExtendedPatternCharacter","name":"ExtendedPatternCharacter","referencingIds":["_ref_14966","_ref_15043","_ref_15044"],"namespace":"annexB","location":"","key":"ExtendedPatternCharacter"},{"type":"production","id":"prod-annexB-AtomEscape","name":"AtomEscape","referencingIds":["_ref_14961"],"namespace":"annexB","location":"","key":"AtomEscape"},{"type":"production","id":"prod-annexB-CharacterEscape","name":"CharacterEscape","referencingIds":["_ref_14976","_ref_14993","_ref_15046"],"namespace":"annexB","location":"","key":"CharacterEscape"},{"type":"production","id":"prod-annexB-IdentityEscape","name":"IdentityEscape","referencingIds":["_ref_14984"],"namespace":"annexB","location":"","key":"IdentityEscape"},{"type":"production","id":"prod-annexB-SourceCharacterIdentityEscape","name":"SourceCharacterIdentityEscape","referencingIds":["_ref_14986"],"namespace":"annexB","location":"","key":"SourceCharacterIdentityEscape"},{"type":"production","id":"prod-annexB-ClassAtomNoDash","name":"ClassAtomNoDash","referencingIds":["_ref_15001","_ref_15004","_ref_15053","_ref_15056"],"namespace":"annexB","location":"","key":"ClassAtomNoDash"},{"type":"production","id":"prod-annexB-ClassEscape","name":"ClassEscape","referencingIds":["_ref_14990","_ref_15060"],"namespace":"annexB","location":"","key":"ClassEscape"},{"type":"production","id":"prod-annexB-ClassControlLetter","name":"ClassControlLetter","referencingIds":["_ref_14991","_ref_15006","_ref_15007","_ref_15059"],"namespace":"annexB","location":"","key":"ClassControlLetter"},{"type":"production","id":"prod-annexB-NonemptyClassRanges","name":"NonemptyClassRanges","referencingIds":[],"namespace":"annexB","location":"","key":"NonemptyClassRanges"},{"type":"production","id":"prod-annexB-NonemptyClassRangesNoDash","name":"NonemptyClassRangesNoDash","referencingIds":[],"namespace":"annexB","location":"","key":"NonemptyClassRangesNoDash"},{"type":"production","id":"prod-annexB-Atom","name":"Atom","referencingIds":["_ref_14945","_ref_14946","_ref_15017","_ref_15020","_ref_15023","_ref_15026","_ref_15028","_ref_15030","_ref_15038","_ref_15042"],"namespace":"annexB","location":"","key":"Atom"},{"type":"term","term":"%escape%","refId":"sec-escape-string","referencingIds":[],"namespace":"annexB","location":"","key":"%escape%"},{"type":"term","term":"%unescape%","refId":"sec-unescape-string","referencingIds":[],"namespace":"annexB","location":"","key":"%unescape%"},{"type":"production","id":"prod-annexB-ObjectLiteral","name":"ObjectLiteral","referencingIds":["_ref_15061"],"namespace":"annexB","location":"","key":"ObjectLiteral"},{"type":"production","id":"prod-annexB-PropertyDefinition","name":"PropertyDefinition","referencingIds":[],"namespace":"annexB","location":"","key":"PropertyDefinition"},{"type":"production","id":"prod-annexB-LabelledItem","name":"LabelledItem","referencingIds":["_ref_15085"],"namespace":"annexB","location":"","key":"LabelledItem"},{"type":"production","id":"prod-annexB-Block","name":"Block","referencingIds":["_ref_15092","_ref_15095","_ref_15098","_ref_15101","_ref_15102","_ref_15103","_ref_15106","_ref_15109","_ref_15113","_ref_15116","_ref_15118","_ref_15119","_ref_15123","_ref_15136","_ref_15149","_ref_15182","_ref_15185","_ref_15187","_ref_15190","_ref_15195"],"namespace":"annexB","location":"","key":"Block"},{"type":"production","id":"prod-annexB-SwitchStatement","name":"SwitchStatement","referencingIds":[],"namespace":"annexB","location":"","key":"SwitchStatement"},{"type":"production","id":"prod-annexB-IfStatement","name":"IfStatement","referencingIds":["_ref_15088","_ref_15165"],"namespace":"annexB","location":"","key":"IfStatement"},{"type":"production","id":"prod-annexB-Catch","name":"Catch","referencingIds":["_ref_15191","_ref_15196","_ref_15197","_ref_15198"],"namespace":"annexB","location":"","key":"Catch"},{"type":"production","id":"prod-annexB-CatchParameter","name":"CatchParameter","referencingIds":["_ref_15181","_ref_15183","_ref_15184","_ref_15186","_ref_15188","_ref_15192","_ref_15193"],"namespace":"annexB","location":"","key":"CatchParameter"},{"type":"production","id":"prod-annexB-IterationStatement","name":"IterationStatement","referencingIds":["_ref_15089","_ref_15199"],"namespace":"annexB","location":"","key":"IterationStatement"},{"type":"production","id":"prod-annexB-BindingIdentifier","name":"BindingIdentifier","referencingIds":["_ref_15097","_ref_15105","_ref_15112","_ref_15126","_ref_15130","_ref_15139","_ref_15143","_ref_15152","_ref_15156","_ref_15189","_ref_15200","_ref_15204","_ref_15209","_ref_15214","_ref_15220","_ref_15224","_ref_15226","_ref_15230","_ref_15232","_ref_15236","_ref_15241"],"namespace":"annexB","location":"","key":"BindingIdentifier"},{"type":"term","term":"[[IsHTMLDDA]] internal slot","refId":"sec-IsHTMLDDA-internal-slot","referencingIds":[],"namespace":"annexB","location":"","key":"[[IsHTMLDDA]] internal slot"}]</script></head><body><div id="menu-toggle">☰</div><div id="menu-spacer"></div><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</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="#sec-scope" title="Scope"><span class="secnum">1</span> Scope</a></li><li><span class="item-toggle-none"></span><a href="#sec-conformance" title="Conformance"><span class="secnum">2</span> Conformance</a></li><li><span class="item-toggle-none"></span><a href="#sec-normative-references" title="Normative References"><span class="secnum">3</span> Normative References</a></li><li><span class="item-toggle">◢</span><a href="#sec-overview" title="Overview"><span class="secnum">4</span> Overview</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-web-scripting" title="Web Scripting"><span class="secnum">4.1</span> Web Scripting</a></li><li><span class="item-toggle">◢</span><a href="#sec-ecmascript-overview" title="ECMAScript Overview"><span class="secnum">4.2</span> ECMAScript Overview</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-objects" title="Objects"><span class="secnum">4.2.1</span> Objects</a></li><li><span class="item-toggle-none"></span><a href="#sec-strict-variant-of-ecmascript" title="The Strict Variant of ECMAScript"><span class="secnum">4.2.2</span> The Strict Variant of ECMAScript</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-terms-and-definitions" title="Terms and Definitions"><span class="secnum">4.3</span> Terms and Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-type" title="type"><span class="secnum">4.3.1</span> type</a></li><li><span class="item-toggle-none"></span><a href="#sec-primitive-value" title="primitive value"><span class="secnum">4.3.2</span> primitive value</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-object" title="object"><span class="secnum">4.3.3</span> object</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor" title="constructor"><span class="secnum">4.3.4</span> constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-prototype" title="prototype"><span class="secnum">4.3.5</span> prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-ordinary-object" title="ordinary object"><span class="secnum">4.3.6</span> ordinary object</a></li><li><span class="item-toggle-none"></span><a href="#sec-exotic-object" title="exotic object"><span class="secnum">4.3.7</span> exotic object</a></li><li><span class="item-toggle-none"></span><a href="#sec-standard-object" title="standard object"><span class="secnum">4.3.8</span> standard object</a></li><li><span class="item-toggle-none"></span><a href="#sec-built-in-object" title="built-in object"><span class="secnum">4.3.9</span> built-in object</a></li><li><span class="item-toggle-none"></span><a href="#sec-undefined-value" title="undefined value"><span class="secnum">4.3.10</span> undefined value</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-undefined-type" title="Undefined type"><span class="secnum">4.3.11</span> Undefined type</a></li><li><span class="item-toggle-none"></span><a href="#sec-null-value" title="null value"><span class="secnum">4.3.12</span> null value</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-null-type" title="Null type"><span class="secnum">4.3.13</span> Null type</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-boolean-value" title="Boolean value"><span class="secnum">4.3.14</span> Boolean value</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-boolean-type" title="Boolean type"><span class="secnum">4.3.15</span> Boolean type</a></li><li><span class="item-toggle-none"></span><a href="#sec-boolean-object" title="Boolean object"><span class="secnum">4.3.16</span> Boolean object</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-string-value" title="String value"><span class="secnum">4.3.17</span> String value</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-string-type" title="String type"><span class="secnum">4.3.18</span> String type</a></li><li><span class="item-toggle-none"></span><a href="#sec-string-object" title="String object"><span class="secnum">4.3.19</span> String object</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-number-value" title="Number value"><span class="secnum">4.3.20</span> Number value</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-number-type" title="Number type"><span class="secnum">4.3.21</span> Number type</a></li><li><span class="item-toggle-none"></span><a href="#sec-number-object" title="Number object"><span class="secnum">4.3.22</span> Number object</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-infinity" title="Infinity"><span class="secnum">4.3.23</span> Infinity</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-nan" title="NaN"><span class="secnum">4.3.24</span> NaN</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol-value" title="Symbol value"><span class="secnum">4.3.25</span> Symbol value</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-symbol-type" title="Symbol type"><span class="secnum">4.3.26</span> Symbol type</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol-object" title="Symbol object"><span class="secnum">4.3.27</span> Symbol object</a></li><li><span class="item-toggle-none"></span><a href="#sec-terms-and-definitions-function" title="function"><span class="secnum">4.3.28</span> function</a></li><li><span class="item-toggle-none"></span><a href="#sec-built-in-function" title="built-in function"><span class="secnum">4.3.29</span> built-in function</a></li><li><span class="item-toggle-none"></span><a href="#sec-property" title="property"><span class="secnum">4.3.30</span> property</a></li><li><span class="item-toggle-none"></span><a href="#sec-method" title="method"><span class="secnum">4.3.31</span> method</a></li><li><span class="item-toggle-none"></span><a href="#sec-built-in-method" title="built-in method"><span class="secnum">4.3.32</span> built-in method</a></li><li><span class="item-toggle-none"></span><a href="#sec-attribute" title="attribute"><span class="secnum">4.3.33</span> attribute</a></li><li><span class="item-toggle-none"></span><a href="#sec-own-property" title="own property"><span class="secnum">4.3.34</span> own property</a></li><li><span class="item-toggle-none"></span><a href="#sec-inherited-property" title="inherited property"><span class="secnum">4.3.35</span> inherited property</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-organization-of-this-specification" title="Organization of This Specification"><span class="secnum">4.4</span> Organization of This Specification</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#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="#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="#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="#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="#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="#sec-syntactic-grammar" title="The Syntactic Grammar"><span class="secnum">5.1.4</span> The Syntactic Grammar</a></li><li><span class="item-toggle-none"></span><a href="#sec-grammar-notation" title="Grammar Notation"><span class="secnum">5.1.5</span> Grammar Notation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#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="#sec-algorithm-conventions-abstract-operations" title="Abstract Operations"><span class="secnum">5.2.1</span> Abstract Operations</a></li><li><span class="item-toggle-none"></span><a href="#sec-algorithm-conventions-syntax-directed-operations" title="Syntax-Directed Operations"><span class="secnum">5.2.2</span> Syntax-Directed Operations</a></li><li><span class="item-toggle">◢</span><a href="#sec-runtime-semantics" title="Runtime Semantics"><span class="secnum">5.2.3</span> Runtime Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-implicit-completion-values" title="Implicit Completion Values"><span class="secnum">5.2.3.1</span> Implicit Completion Values</a></li><li><span class="item-toggle-none"></span><a href="#sec-throw-an-exception" title="Throw an Exception"><span class="secnum">5.2.3.2</span> Throw an Exception</a></li><li><span class="item-toggle-none"></span><a href="#sec-returnifabrupt" title="ReturnIfAbrupt"><span class="secnum">5.2.3.3</span> ReturnIfAbrupt</a></li><li><span class="item-toggle-none"></span><a href="#sec-returnifabrupt-shorthands" title="ReturnIfAbrupt Shorthands"><span class="secnum">5.2.3.4</span> ReturnIfAbrupt Shorthands</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantic-rules" title="Static Semantics"><span class="secnum">5.2.4</span> Static Semantics</a></li><li><span class="item-toggle-none"></span><a href="#sec-mathematical-operations" title="Mathematical Operations"><span class="secnum">5.2.5</span> Mathematical Operations</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#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="#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="#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="#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="#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-none"></span><a href="#sec-ecmascript-language-types-string-type" title="The String Type"><span class="secnum">6.1.4</span> The String Type</a></li><li><span class="item-toggle">◢</span><a href="#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="#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-none"></span><a href="#sec-ecmascript-language-types-number-type" title="The Number Type"><span class="secnum">6.1.6</span> The Number Type</a></li><li><span class="item-toggle">◢</span><a href="#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="#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="#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="#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="#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="#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="#sec-list-and-record-specification-type" title="The List and Record Specification Types"><span class="secnum">6.2.1</span> The List and Record Specification Types</a></li><li><span class="item-toggle-none"></span><a href="#sec-set-and-relation-specification-type" title="The Set and Relation Specification Types"><span class="secnum">6.2.2</span> The Set and Relation Specification Types</a></li><li><span class="item-toggle">◢</span><a href="#sec-completion-record-specification-type" title="The Completion Record Specification Type"><span class="secnum">6.2.3</span> The Completion Record Specification Type</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#await" title="Await"><span class="secnum">6.2.3.1</span> Await</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#await-fulfilled" title="Await Fulfilled Functions"><span class="secnum">6.2.3.1.1</span> Await Fulfilled Functions</a></li><li><span class="item-toggle-none"></span><a href="#await-rejected" title="Await Rejected Functions"><span class="secnum">6.2.3.1.2</span> Await Rejected Functions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-normalcompletion" title="NormalCompletion"><span class="secnum">6.2.3.2</span> NormalCompletion</a></li><li><span class="item-toggle-none"></span><a href="#sec-throwcompletion" title="ThrowCompletion"><span class="secnum">6.2.3.3</span> ThrowCompletion</a></li><li><span class="item-toggle-none"></span><a href="#sec-updateempty" title="UpdateEmpty ( completionRecord, value )"><span class="secnum">6.2.3.4</span> UpdateEmpty ( <var>completionRecord</var>, <var>value</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-reference-specification-type" title="The Reference Specification Type"><span class="secnum">6.2.4</span> The Reference Specification Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-getbase" title="GetBase ( V )"><span class="secnum">6.2.4.1</span> GetBase ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getreferencedname" title="GetReferencedName ( V )"><span class="secnum">6.2.4.2</span> GetReferencedName ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-isstrictreference" title="IsStrictReference ( V )"><span class="secnum">6.2.4.3</span> IsStrictReference ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-hasprimitivebase" title="HasPrimitiveBase ( V )"><span class="secnum">6.2.4.4</span> HasPrimitiveBase ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-ispropertyreference" title="IsPropertyReference ( V )"><span class="secnum">6.2.4.5</span> IsPropertyReference ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-isunresolvablereference" title="IsUnresolvableReference ( V )"><span class="secnum">6.2.4.6</span> IsUnresolvableReference ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-issuperreference" title="IsSuperReference ( V )"><span class="secnum">6.2.4.7</span> IsSuperReference ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getvalue" title="GetValue ( V )"><span class="secnum">6.2.4.8</span> GetValue ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-putvalue" title="PutValue ( V, W )"><span class="secnum">6.2.4.9</span> PutValue ( <var>V</var>, <var>W</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getthisvalue" title="GetThisValue ( V )"><span class="secnum">6.2.4.10</span> GetThisValue ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-initializereferencedbinding" title="InitializeReferencedBinding ( V, W )"><span class="secnum">6.2.4.11</span> InitializeReferencedBinding ( <var>V</var>, <var>W</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-property-descriptor-specification-type" title="The Property Descriptor Specification Type"><span class="secnum">6.2.5</span> The Property Descriptor Specification Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-isaccessordescriptor" title="IsAccessorDescriptor ( Desc )"><span class="secnum">6.2.5.1</span> IsAccessorDescriptor ( <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-isdatadescriptor" title="IsDataDescriptor ( Desc )"><span class="secnum">6.2.5.2</span> IsDataDescriptor ( <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-isgenericdescriptor" title="IsGenericDescriptor ( Desc )"><span class="secnum">6.2.5.3</span> IsGenericDescriptor ( <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-frompropertydescriptor" title="FromPropertyDescriptor ( Desc )"><span class="secnum">6.2.5.4</span> FromPropertyDescriptor ( <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-topropertydescriptor" title="ToPropertyDescriptor ( Obj )"><span class="secnum">6.2.5.5</span> ToPropertyDescriptor ( <var>Obj</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-completepropertydescriptor" title="CompletePropertyDescriptor ( Desc )"><span class="secnum">6.2.5.6</span> CompletePropertyDescriptor ( <var>Desc</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-lexical-environment-and-environment-record-specification-types" title="The Lexical Environment and Environment Record Specification Types"><span class="secnum">6.2.6</span> The Lexical Environment and Environment Record Specification Types</a></li><li><span class="item-toggle">◢</span><a href="#sec-data-blocks" title="Data Blocks"><span class="secnum">6.2.7</span> Data Blocks</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-createbytedatablock" title="CreateByteDataBlock ( size )"><span class="secnum">6.2.7.1</span> CreateByteDataBlock ( <var>size</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createsharedbytedatablock" title="CreateSharedByteDataBlock ( size )"><span class="secnum">6.2.7.2</span> CreateSharedByteDataBlock ( <var>size</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-copydatablockbytes" title="CopyDataBlockBytes ( toBlock, toIndex, fromBlock, fromIndex, count )"><span class="secnum">6.2.7.3</span> CopyDataBlockBytes ( <var>toBlock</var>, <var>toIndex</var>, <var>fromBlock</var>, <var>fromIndex</var>, <var>count</var> )</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#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="#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="#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="#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="#sec-toboolean" title="ToBoolean ( argument )"><span class="secnum">7.1.2</span> ToBoolean ( <var>argument</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-tonumber" title="ToNumber ( argument )"><span class="secnum">7.1.3</span> ToNumber ( <var>argument</var> )</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-tonumber-applied-to-the-string-type" title="ToNumber Applied to the String Type"><span class="secnum">7.1.3.1</span> ToNumber Applied to the String Type</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-mv-s" title="Runtime Semantics: MV"><span class="secnum">7.1.3.1.1</span> RS: MV</a></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-tointeger" title="ToInteger ( argument )"><span class="secnum">7.1.4</span> ToInteger ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-toint32" title="ToInt32 ( argument )"><span class="secnum">7.1.5</span> ToInt32 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-touint32" title="ToUint32 ( argument )"><span class="secnum">7.1.6</span> ToUint32 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-toint16" title="ToInt16 ( argument )"><span class="secnum">7.1.7</span> ToInt16 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-touint16" title="ToUint16 ( argument )"><span class="secnum">7.1.8</span> ToUint16 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-toint8" title="ToInt8 ( argument )"><span class="secnum">7.1.9</span> ToInt8 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-touint8" title="ToUint8 ( argument )"><span class="secnum">7.1.10</span> ToUint8 ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-touint8clamp" title="ToUint8Clamp ( argument )"><span class="secnum">7.1.11</span> ToUint8Clamp ( <var>argument</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-tostring" title="ToString ( argument )"><span class="secnum">7.1.12</span> ToString ( <var>argument</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-tostring-applied-to-the-number-type" title="NumberToString ( m )"><span class="secnum">7.1.12.1</span> NumberToString ( <var>m</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-toobject" title="ToObject ( argument )"><span class="secnum">7.1.13</span> ToObject ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-topropertykey" title="ToPropertyKey ( argument )"><span class="secnum">7.1.14</span> ToPropertyKey ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-tolength" title="ToLength ( argument )"><span class="secnum">7.1.15</span> ToLength ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-canonicalnumericindexstring" title="CanonicalNumericIndexString ( argument )"><span class="secnum">7.1.16</span> CanonicalNumericIndexString ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-toindex" title="ToIndex ( value )"><span class="secnum">7.1.17</span> ToIndex ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#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="#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="#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="#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="#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="#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="#sec-isinteger" title="IsInteger ( argument )"><span class="secnum">7.2.6</span> IsInteger ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-ispropertykey" title="IsPropertyKey ( argument )"><span class="secnum">7.2.7</span> IsPropertyKey ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-isregexp" title="IsRegExp ( argument )"><span class="secnum">7.2.8</span> IsRegExp ( <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-isstringprefix" title="IsStringPrefix ( p, q )"><span class="secnum">7.2.9</span> IsStringPrefix ( <var>p</var>, <var>q</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-samevalue" title="SameValue ( x, y )"><span class="secnum">7.2.10</span> SameValue ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-samevaluezero" title="SameValueZero ( x, y )"><span class="secnum">7.2.11</span> SameValueZero ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-samevaluenonnumber" title="SameValueNonNumber ( x, y )"><span class="secnum">7.2.12</span> SameValueNonNumber ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-abstract-relational-comparison" title="Abstract Relational Comparison"><span class="secnum">7.2.13</span> Abstract Relational Comparison</a></li><li><span class="item-toggle-none"></span><a href="#sec-abstract-equality-comparison" title="Abstract Equality Comparison"><span class="secnum">7.2.14</span> Abstract Equality Comparison</a></li><li><span class="item-toggle-none"></span><a href="#sec-strict-equality-comparison" title="Strict Equality Comparison"><span class="secnum">7.2.15</span> Strict Equality Comparison</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#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="#sec-get-o-p" title="Get ( O, P )"><span class="secnum">7.3.1</span> Get ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getv" title="GetV ( V, P )"><span class="secnum">7.3.2</span> GetV ( <var>V</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set-o-p-v-throw" title="Set ( O, P, V, Throw )"><span class="secnum">7.3.3</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="#sec-createdataproperty" title="CreateDataProperty ( O, P, V )"><span class="secnum">7.3.4</span> CreateDataProperty ( <var>O</var>, <var>P</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createmethodproperty" title="CreateMethodProperty ( O, P, V )"><span class="secnum">7.3.5</span> CreateMethodProperty ( <var>O</var>, <var>P</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#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="#sec-definepropertyorthrow" title="DefinePropertyOrThrow ( O, P, desc )"><span class="secnum">7.3.7</span> DefinePropertyOrThrow ( <var>O</var>, <var>P</var>, <var>desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-deletepropertyorthrow" title="DeletePropertyOrThrow ( O, P )"><span class="secnum">7.3.8</span> DeletePropertyOrThrow ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getmethod" title="GetMethod ( V, P )"><span class="secnum">7.3.9</span> GetMethod ( <var>V</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-hasproperty" title="HasProperty ( O, P )"><span class="secnum">7.3.10</span> HasProperty ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-hasownproperty" title="HasOwnProperty ( O, P )"><span class="secnum">7.3.11</span> HasOwnProperty ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-call" title="Call ( F, V [ , argumentsList ] )"><span class="secnum">7.3.12</span> Call ( <var>F</var>, <var>V</var> [ , <var>argumentsList</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-construct" title="Construct ( F [ , argumentsList [ , newTarget ] ] )"><span class="secnum">7.3.13</span> Construct ( <var>F</var> [ , <var>argumentsList</var> [ , <var>newTarget</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-setintegritylevel" title="SetIntegrityLevel ( O, level )"><span class="secnum">7.3.14</span> SetIntegrityLevel ( <var>O</var>, <var>level</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-testintegritylevel" title="TestIntegrityLevel ( O, level )"><span class="secnum">7.3.15</span> TestIntegrityLevel ( <var>O</var>, <var>level</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createarrayfromlist" title="CreateArrayFromList ( elements )"><span class="secnum">7.3.16</span> CreateArrayFromList ( <var>elements</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createlistfromarraylike" title="CreateListFromArrayLike ( obj [ , elementTypes ] )"><span class="secnum">7.3.17</span> CreateListFromArrayLike ( <var>obj</var> [ , <var>elementTypes</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-invoke" title="Invoke ( V, P [ , argumentsList ] )"><span class="secnum">7.3.18</span> Invoke ( <var>V</var>, <var>P</var> [ , <var>argumentsList</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-ordinaryhasinstance" title="OrdinaryHasInstance ( C, O )"><span class="secnum">7.3.19</span> OrdinaryHasInstance ( <var>C</var>, <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-speciesconstructor" title="SpeciesConstructor ( O, defaultConstructor )"><span class="secnum">7.3.20</span> SpeciesConstructor ( <var>O</var>, <var>defaultConstructor</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-enumerableownpropertynames" title="EnumerableOwnPropertyNames ( O, kind )"><span class="secnum">7.3.21</span> EnumerableOwnPropertyNames ( <var>O</var>, <var>kind</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getfunctionrealm" title="GetFunctionRealm ( obj )"><span class="secnum">7.3.22</span> GetFunctionRealm ( <var>obj</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-copydataproperties" title="CopyDataProperties ( target, source, excludedItems )"><span class="secnum">7.3.23</span> CopyDataProperties ( <var>target</var>, <var>source</var>, <var>excludedItems</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#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="#sec-getiterator" title="GetIterator ( obj [ , hint [ , method ] ] )"><span class="secnum">7.4.1</span> GetIterator ( <var>obj</var> [ , <var>hint</var> [ , <var>method</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-iteratornext" title="IteratorNext ( iteratorRecord [ , value ] )"><span class="secnum">7.4.2</span> IteratorNext ( <var>iteratorRecord</var> [ , <var>value</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-iteratorcomplete" title="IteratorComplete ( iterResult )"><span class="secnum">7.4.3</span> IteratorComplete ( <var>iterResult</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-iteratorvalue" title="IteratorValue ( iterResult )"><span class="secnum">7.4.4</span> IteratorValue ( <var>iterResult</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-iteratorstep" title="IteratorStep ( iteratorRecord )"><span class="secnum">7.4.5</span> IteratorStep ( <var>iteratorRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-iteratorclose" title="IteratorClose ( iteratorRecord, completion )"><span class="secnum">7.4.6</span> IteratorClose ( <var>iteratorRecord</var>, <var>completion</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-asynciteratorclose" title="AsyncIteratorClose ( iteratorRecord, completion )"><span class="secnum">7.4.7</span> AsyncIteratorClose ( <var>iteratorRecord</var>, <var>completion</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createiterresultobject" title="CreateIterResultObject ( value, done )"><span class="secnum">7.4.8</span> CreateIterResultObject ( <var>value</var>, <var>done</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-createlistiteratorRecord" title="CreateListIteratorRecord ( list )"><span class="secnum">7.4.9</span> CreateListIteratorRecord ( <var>list</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-listiterator-next" title="ListIterator next ( )"><span class="secnum">7.4.9.1</span> ListIterator next ( )</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-executable-code-and-execution-contexts" title="Executable Code and Execution Contexts"><span class="secnum">8</span> Executable Code and Execution Contexts</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-lexical-environments" title="Lexical Environments"><span class="secnum">8.1</span> Lexical Environments</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-environment-records" title="Environment Records"><span class="secnum">8.1.1</span> Environment Records</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-declarative-environment-records" title="Declarative Environment Records"><span class="secnum">8.1.1.1</span> Declarative Environment Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-declarative-environment-records-hasbinding-n" title="HasBinding ( N )"><span class="secnum">8.1.1.1.1</span> HasBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-declarative-environment-records-createmutablebinding-n-d" title="CreateMutableBinding ( N, D )"><span class="secnum">8.1.1.1.2</span> CreateMutableBinding ( <var>N</var>, <var>D</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-declarative-environment-records-createimmutablebinding-n-s" title="CreateImmutableBinding ( N, S )"><span class="secnum">8.1.1.1.3</span> CreateImmutableBinding ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-declarative-environment-records-initializebinding-n-v" title="InitializeBinding ( N, V )"><span class="secnum">8.1.1.1.4</span> InitializeBinding ( <var>N</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-declarative-environment-records-setmutablebinding-n-v-s" title="SetMutableBinding ( N, V, S )"><span class="secnum">8.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="#sec-declarative-environment-records-getbindingvalue-n-s" title="GetBindingValue ( N, S )"><span class="secnum">8.1.1.1.6</span> GetBindingValue ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-declarative-environment-records-deletebinding-n" title="DeleteBinding ( N )"><span class="secnum">8.1.1.1.7</span> DeleteBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-declarative-environment-records-hasthisbinding" title="HasThisBinding ( )"><span class="secnum">8.1.1.1.8</span> HasThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-declarative-environment-records-hassuperbinding" title="HasSuperBinding ( )"><span class="secnum">8.1.1.1.9</span> HasSuperBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-declarative-environment-records-withbaseobject" title="WithBaseObject ( )"><span class="secnum">8.1.1.1.10</span> WithBaseObject ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-object-environment-records" title="Object Environment Records"><span class="secnum">8.1.1.2</span> Object Environment Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-object-environment-records-hasbinding-n" title="HasBinding ( N )"><span class="secnum">8.1.1.2.1</span> HasBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-environment-records-createmutablebinding-n-d" title="CreateMutableBinding ( N, D )"><span class="secnum">8.1.1.2.2</span> CreateMutableBinding ( <var>N</var>, <var>D</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-environment-records-createimmutablebinding-n-s" title="CreateImmutableBinding ( N, S )"><span class="secnum">8.1.1.2.3</span> CreateImmutableBinding ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-environment-records-initializebinding-n-v" title="InitializeBinding ( N, V )"><span class="secnum">8.1.1.2.4</span> InitializeBinding ( <var>N</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-environment-records-setmutablebinding-n-v-s" title="SetMutableBinding ( N, V, S )"><span class="secnum">8.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="#sec-object-environment-records-getbindingvalue-n-s" title="GetBindingValue ( N, S )"><span class="secnum">8.1.1.2.6</span> GetBindingValue ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-environment-records-deletebinding-n" title="DeleteBinding ( N )"><span class="secnum">8.1.1.2.7</span> DeleteBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-environment-records-hasthisbinding" title="HasThisBinding ( )"><span class="secnum">8.1.1.2.8</span> HasThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-environment-records-hassuperbinding" title="HasSuperBinding ( )"><span class="secnum">8.1.1.2.9</span> HasSuperBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-environment-records-withbaseobject" title="WithBaseObject ( )"><span class="secnum">8.1.1.2.10</span> WithBaseObject ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-function-environment-records" title="Function Environment Records"><span class="secnum">8.1.1.3</span> Function Environment Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-bindthisvalue" title="BindThisValue ( V )"><span class="secnum">8.1.1.3.1</span> BindThisValue ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-environment-records-hasthisbinding" title="HasThisBinding ( )"><span class="secnum">8.1.1.3.2</span> HasThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-environment-records-hassuperbinding" title="HasSuperBinding ( )"><span class="secnum">8.1.1.3.3</span> HasSuperBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-environment-records-getthisbinding" title="GetThisBinding ( )"><span class="secnum">8.1.1.3.4</span> GetThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getsuperbase" title="GetSuperBase ( )"><span class="secnum">8.1.1.3.5</span> GetSuperBase ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-global-environment-records" title="Global Environment Records"><span class="secnum">8.1.1.4</span> Global Environment Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-global-environment-records-hasbinding-n" title="HasBinding ( N )"><span class="secnum">8.1.1.4.1</span> HasBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-global-environment-records-createmutablebinding-n-d" title="CreateMutableBinding ( N, D )"><span class="secnum">8.1.1.4.2</span> CreateMutableBinding ( <var>N</var>, <var>D</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-global-environment-records-createimmutablebinding-n-s" title="CreateImmutableBinding ( N, S )"><span class="secnum">8.1.1.4.3</span> CreateImmutableBinding ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-global-environment-records-initializebinding-n-v" title="InitializeBinding ( N, V )"><span class="secnum">8.1.1.4.4</span> InitializeBinding ( <var>N</var>, <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-global-environment-records-setmutablebinding-n-v-s" title="SetMutableBinding ( N, V, S )"><span class="secnum">8.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="#sec-global-environment-records-getbindingvalue-n-s" title="GetBindingValue ( N, S )"><span class="secnum">8.1.1.4.6</span> GetBindingValue ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-global-environment-records-deletebinding-n" title="DeleteBinding ( N )"><span class="secnum">8.1.1.4.7</span> DeleteBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-global-environment-records-hasthisbinding" title="HasThisBinding ( )"><span class="secnum">8.1.1.4.8</span> HasThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-global-environment-records-hassuperbinding" title="HasSuperBinding ( )"><span class="secnum">8.1.1.4.9</span> HasSuperBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-global-environment-records-withbaseobject" title="WithBaseObject ( )"><span class="secnum">8.1.1.4.10</span> WithBaseObject ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-global-environment-records-getthisbinding" title="GetThisBinding ( )"><span class="secnum">8.1.1.4.11</span> GetThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-hasvardeclaration" title="HasVarDeclaration ( N )"><span class="secnum">8.1.1.4.12</span> HasVarDeclaration ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-haslexicaldeclaration" title="HasLexicalDeclaration ( N )"><span class="secnum">8.1.1.4.13</span> HasLexicalDeclaration ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-hasrestrictedglobalproperty" title="HasRestrictedGlobalProperty ( N )"><span class="secnum">8.1.1.4.14</span> HasRestrictedGlobalProperty ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-candeclareglobalvar" title="CanDeclareGlobalVar ( N )"><span class="secnum">8.1.1.4.15</span> CanDeclareGlobalVar ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-candeclareglobalfunction" title="CanDeclareGlobalFunction ( N )"><span class="secnum">8.1.1.4.16</span> CanDeclareGlobalFunction ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createglobalvarbinding" title="CreateGlobalVarBinding ( N, D )"><span class="secnum">8.1.1.4.17</span> CreateGlobalVarBinding ( <var>N</var>, <var>D</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createglobalfunctionbinding" title="CreateGlobalFunctionBinding ( N, V, D )"><span class="secnum">8.1.1.4.18</span> CreateGlobalFunctionBinding ( <var>N</var>, <var>V</var>, <var>D</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-module-environment-records" title="Module Environment Records"><span class="secnum">8.1.1.5</span> Module Environment Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-module-environment-records-getbindingvalue-n-s" title="GetBindingValue ( N, S )"><span class="secnum">8.1.1.5.1</span> GetBindingValue ( <var>N</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-environment-records-deletebinding-n" title="DeleteBinding ( N )"><span class="secnum">8.1.1.5.2</span> DeleteBinding ( <var>N</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-environment-records-hasthisbinding" title="HasThisBinding ( )"><span class="secnum">8.1.1.5.3</span> HasThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-environment-records-getthisbinding" title="GetThisBinding ( )"><span class="secnum">8.1.1.5.4</span> GetThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createimportbinding" title="CreateImportBinding ( N, M, N2 )"><span class="secnum">8.1.1.5.5</span> CreateImportBinding ( <var>N</var>, <var>M</var>, <var>N2</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-lexical-environment-operations" title="Lexical Environment Operations"><span class="secnum">8.1.2</span> Lexical Environment Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-getidentifierreference" title="GetIdentifierReference ( lex, name, strict )"><span class="secnum">8.1.2.1</span> GetIdentifierReference ( <var>lex</var>, <var>name</var>, <var>strict</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-newdeclarativeenvironment" title="NewDeclarativeEnvironment ( E )"><span class="secnum">8.1.2.2</span> NewDeclarativeEnvironment ( <var>E</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-newobjectenvironment" title="NewObjectEnvironment ( O, E )"><span class="secnum">8.1.2.3</span> NewObjectEnvironment ( <var>O</var>, <var>E</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-newfunctionenvironment" title="NewFunctionEnvironment ( F, newTarget )"><span class="secnum">8.1.2.4</span> NewFunctionEnvironment ( <var>F</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-newglobalenvironment" title="NewGlobalEnvironment ( G, thisValue )"><span class="secnum">8.1.2.5</span> NewGlobalEnvironment ( <var>G</var>, <var>thisValue</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-newmoduleenvironment" title="NewModuleEnvironment ( E )"><span class="secnum">8.1.2.6</span> NewModuleEnvironment ( <var>E</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-code-realms" title="Realms"><span class="secnum">8.2</span> Realms</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-createrealm" title="CreateRealm ( )"><span class="secnum">8.2.1</span> CreateRealm ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createintrinsics" title="CreateIntrinsics ( realmRec )"><span class="secnum">8.2.2</span> CreateIntrinsics ( <var>realmRec</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-setrealmglobalobject" title="SetRealmGlobalObject ( realmRec, globalObj, thisValue )"><span class="secnum">8.2.3</span> SetRealmGlobalObject ( <var>realmRec</var>, <var>globalObj</var>, <var>thisValue</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-setdefaultglobalbindings" title="SetDefaultGlobalBindings ( realmRec )"><span class="secnum">8.2.4</span> SetDefaultGlobalBindings ( <var>realmRec</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-execution-contexts" title="Execution Contexts"><span class="secnum">8.3</span> Execution Contexts</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-getactivescriptormodule" title="GetActiveScriptOrModule ( )"><span class="secnum">8.3.1</span> GetActiveScriptOrModule ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-resolvebinding" title="ResolveBinding ( name [ , env ] )"><span class="secnum">8.3.2</span> ResolveBinding ( <var>name</var> [ , <var>env</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getthisenvironment" title="GetThisEnvironment ( )"><span class="secnum">8.3.3</span> GetThisEnvironment ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-resolvethisbinding" title="ResolveThisBinding ( )"><span class="secnum">8.3.4</span> ResolveThisBinding ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getnewtarget" title="GetNewTarget ( )"><span class="secnum">8.3.5</span> GetNewTarget ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getglobalobject" title="GetGlobalObject ( )"><span class="secnum">8.3.6</span> GetGlobalObject ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-jobs-and-job-queues" title="Jobs and Job Queues"><span class="secnum">8.4</span> Jobs and Job Queues</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-enqueuejob" title="EnqueueJob ( queueName, job, arguments )"><span class="secnum">8.4.1</span> EnqueueJob ( <var>queueName</var>, <var>job</var>, <var>arguments</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-initializehostdefinedrealm" title="InitializeHostDefinedRealm ( )"><span class="secnum">8.5</span> InitializeHostDefinedRealm ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-runjobs" title="RunJobs ( )"><span class="secnum">8.6</span> RunJobs ( )</a></li><li><span class="item-toggle">◢</span><a href="#sec-agents" title="Agents"><span class="secnum">8.7</span> Agents</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-agentsignifier" title="AgentSignifier ( )"><span class="secnum">8.7.1</span> AgentSignifier ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-agentcansuspend" title="AgentCanSuspend ( )"><span class="secnum">8.7.2</span> AgentCanSuspend ( )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-agent-clusters" title="Agent Clusters"><span class="secnum">8.8</span> Agent Clusters</a></li><li><span class="item-toggle-none"></span><a href="#sec-forward-progress" title="Forward Progress"><span class="secnum">8.9</span> Forward Progress</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ordinary-and-exotic-objects-behaviours" title="Ordinary and Exotic Objects Behaviours"><span class="secnum">9</span> Ordinary and Exotic Objects Behaviours</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-ordinary-object-internal-methods-and-internal-slots" title="Ordinary Object Internal Methods and Internal Slots"><span class="secnum">9.1</span> Ordinary Object Internal Methods and Internal Slots</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-ordinary-object-internal-methods-and-internal-slots-getprototypeof" title="[[GetPrototypeOf]] ( )"><span class="secnum">9.1.1</span> [[GetPrototypeOf]] ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinarygetprototypeof" title="OrdinaryGetPrototypeOf ( O )"><span class="secnum">9.1.1.1</span> OrdinaryGetPrototypeOf ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ordinary-object-internal-methods-and-internal-slots-setprototypeof-v" title="[[SetPrototypeOf]] ( V )"><span class="secnum">9.1.2</span> [[SetPrototypeOf]] ( <var>V</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinarysetprototypeof" title="OrdinarySetPrototypeOf ( O, V )"><span class="secnum">9.1.2.1</span> OrdinarySetPrototypeOf ( <var>O</var>, <var>V</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ordinary-object-internal-methods-and-internal-slots-isextensible" title="[[IsExtensible]] ( )"><span class="secnum">9.1.3</span> [[IsExtensible]] ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinaryisextensible" title="OrdinaryIsExtensible ( O )"><span class="secnum">9.1.3.1</span> OrdinaryIsExtensible ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ordinary-object-internal-methods-and-internal-slots-preventextensions" title="[[PreventExtensions]] ( )"><span class="secnum">9.1.4</span> [[PreventExtensions]] ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinarypreventextensions" title="OrdinaryPreventExtensions ( O )"><span class="secnum">9.1.4.1</span> OrdinaryPreventExtensions ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ordinary-object-internal-methods-and-internal-slots-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">9.1.5</span> [[GetOwnProperty]] ( <var>P</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinarygetownproperty" title="OrdinaryGetOwnProperty ( O, P )"><span class="secnum">9.1.5.1</span> OrdinaryGetOwnProperty ( <var>O</var>, <var>P</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ordinary-object-internal-methods-and-internal-slots-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">9.1.6</span> [[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinarydefineownproperty" title="OrdinaryDefineOwnProperty ( O, P, Desc )"><span class="secnum">9.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="#sec-iscompatiblepropertydescriptor" title="IsCompatiblePropertyDescriptor ( Extensible, Desc, Current )"><span class="secnum">9.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="#sec-validateandapplypropertydescriptor" title="ValidateAndApplyPropertyDescriptor ( O, P, extensible, Desc, current )"><span class="secnum">9.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="#sec-ordinary-object-internal-methods-and-internal-slots-hasproperty-p" title="[[HasProperty]] ( P )"><span class="secnum">9.1.7</span> [[HasProperty]] ( <var>P</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinaryhasproperty" title="OrdinaryHasProperty ( O, P )"><span class="secnum">9.1.7.1</span> OrdinaryHasProperty ( <var>O</var>, <var>P</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ordinary-object-internal-methods-and-internal-slots-get-p-receiver" title="[[Get]] ( P, Receiver )"><span class="secnum">9.1.8</span> [[Get]] ( <var>P</var>, <var>Receiver</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinaryget" title="OrdinaryGet ( O, P, Receiver )"><span class="secnum">9.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="#sec-ordinary-object-internal-methods-and-internal-slots-set-p-v-receiver" title="[[Set]] ( P, V, Receiver )"><span class="secnum">9.1.9</span> [[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinaryset" title="OrdinarySet ( O, P, V, Receiver )"><span class="secnum">9.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="#sec-ordinarysetwithowndescriptor" title="OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )"><span class="secnum">9.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="#sec-ordinary-object-internal-methods-and-internal-slots-delete-p" title="[[Delete]] ( P )"><span class="secnum">9.1.10</span> [[Delete]] ( <var>P</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinarydelete" title="OrdinaryDelete ( O, P )"><span class="secnum">9.1.10.1</span> OrdinaryDelete ( <var>O</var>, <var>P</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ordinary-object-internal-methods-and-internal-slots-ownpropertykeys" title="[[OwnPropertyKeys]] ( )"><span class="secnum">9.1.11</span> [[OwnPropertyKeys]] ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ordinaryownpropertykeys" title="OrdinaryOwnPropertyKeys ( O )"><span class="secnum">9.1.11.1</span> OrdinaryOwnPropertyKeys ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-objectcreate" title="ObjectCreate ( proto [ , internalSlotsList ] )"><span class="secnum">9.1.12</span> ObjectCreate ( <var>proto</var> [ , <var>internalSlotsList</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-ordinarycreatefromconstructor" title="OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )"><span class="secnum">9.1.13</span> OrdinaryCreateFromConstructor ( <var>constructor</var>, <var>intrinsicDefaultProto</var> [ , <var>internalSlotsList</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getprototypefromconstructor" title="GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )"><span class="secnum">9.1.14</span> GetPrototypeFromConstructor ( <var>constructor</var>, <var>intrinsicDefaultProto</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ecmascript-function-objects" title="ECMAScript Function Objects"><span class="secnum">9.2</span> ECMAScript Function Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-ecmascript-function-objects-call-thisargument-argumentslist" title="[[Call]] ( thisArgument, argumentsList )"><span class="secnum">9.2.1</span> [[Call]] ( <var>thisArgument</var>, <var>argumentsList</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-prepareforordinarycall" title="PrepareForOrdinaryCall ( F, newTarget )"><span class="secnum">9.2.1.1</span> PrepareForOrdinaryCall ( <var>F</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-ordinarycallbindthis" title="OrdinaryCallBindThis ( F, calleeContext, thisArgument )"><span class="secnum">9.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="#sec-ordinarycallevaluatebody" title="OrdinaryCallEvaluateBody ( F, argumentsList )"><span class="secnum">9.2.1.3</span> OrdinaryCallEvaluateBody ( <var>F</var>, <var>argumentsList</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-ecmascript-function-objects-construct-argumentslist-newtarget" title="[[Construct]] ( argumentsList, newTarget )"><span class="secnum">9.2.2</span> [[Construct]] ( <var>argumentsList</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-functionallocate" title="FunctionAllocate ( functionPrototype, strict, functionKind )"><span class="secnum">9.2.3</span> FunctionAllocate ( <var>functionPrototype</var>, <var>strict</var>, <var>functionKind</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-functioninitialize" title="FunctionInitialize ( F, kind, ParameterList, Body, Scope )"><span class="secnum">9.2.4</span> FunctionInitialize ( <var>F</var>, <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-functioncreate" title="FunctionCreate ( kind, ParameterList, Body, Scope, Strict [ , prototype ] )"><span class="secnum">9.2.5</span> FunctionCreate ( <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>, <var>Strict</var> [ , <var>prototype</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-generatorfunctioncreate" title="GeneratorFunctionCreate ( kind, ParameterList, Body, Scope, Strict )"><span class="secnum">9.2.6</span> GeneratorFunctionCreate ( <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>, <var>Strict</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorfunctioncreate" title="AsyncGeneratorFunctionCreate ( kind, ParameterList, Body, Scope, Strict )"><span class="secnum">9.2.7</span> AsyncGeneratorFunctionCreate ( <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>, <var>Strict</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-functions-abstract-operations-async-function-create" title="AsyncFunctionCreate ( kind, parameters, body, Scope, Strict )"><span class="secnum">9.2.8</span> AsyncFunctionCreate ( <var>kind</var>, <var>parameters</var>, <var>body</var>, <var>Scope</var>, <var>Strict</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-addrestrictedfunctionproperties" title="AddRestrictedFunctionProperties ( F, realm )"><span class="secnum">9.2.9</span> AddRestrictedFunctionProperties ( <var>F</var>, <var>realm</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-%throwtypeerror%" title="%ThrowTypeError% ( )"><span class="secnum">9.2.9.1</span> %ThrowTypeError% ( )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-makeconstructor" title="MakeConstructor ( F [ , writablePrototype [ , prototype ] ] )"><span class="secnum">9.2.10</span> MakeConstructor ( <var>F</var> [ , <var>writablePrototype</var> [ , <var>prototype</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-makeclassconstructor" title="MakeClassConstructor ( F )"><span class="secnum">9.2.11</span> MakeClassConstructor ( <var>F</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-makemethod" title="MakeMethod ( F, homeObject )"><span class="secnum">9.2.12</span> MakeMethod ( <var>F</var>, <var>homeObject</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-setfunctionname" title="SetFunctionName ( F, name [ , prefix ] )"><span class="secnum">9.2.13</span> SetFunctionName ( <var>F</var>, <var>name</var> [ , <var>prefix</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-setfunctionlength" title="SetFunctionLength ( F, length )"><span class="secnum">9.2.14</span> SetFunctionLength ( <var>F</var>, <var>length</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-functiondeclarationinstantiation" title="FunctionDeclarationInstantiation ( func, argumentsList )"><span class="secnum">9.2.15</span> FunctionDeclarationInstantiation ( <var>func</var>, <var>argumentsList</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-built-in-function-objects" title="Built-in Function Objects"><span class="secnum">9.3</span> Built-in Function Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-built-in-function-objects-call-thisargument-argumentslist" title="[[Call]] ( thisArgument, argumentsList )"><span class="secnum">9.3.1</span> [[Call]] ( <var>thisArgument</var>, <var>argumentsList</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-built-in-function-objects-construct-argumentslist-newtarget" title="[[Construct]] ( argumentsList, newTarget )"><span class="secnum">9.3.2</span> [[Construct]] ( <var>argumentsList</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createbuiltinfunction" title="CreateBuiltinFunction ( steps, internalSlotsList [ , realm [ , prototype ] ] )"><span class="secnum">9.3.3</span> CreateBuiltinFunction ( <var>steps</var>, <var>internalSlotsList</var> [ , <var>realm</var> [ , <var>prototype</var> ] ] )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-built-in-exotic-object-internal-methods-and-slots" title="Built-in Exotic Object Internal Methods and Slots"><span class="secnum">9.4</span> Built-in Exotic Object Internal Methods and Slots</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-bound-function-exotic-objects" title="Bound Function Exotic Objects"><span class="secnum">9.4.1</span> Bound Function Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-bound-function-exotic-objects-call-thisargument-argumentslist" title="[[Call]] ( thisArgument, argumentsList )"><span class="secnum">9.4.1.1</span> [[Call]] ( <var>thisArgument</var>, <var>argumentsList</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-bound-function-exotic-objects-construct-argumentslist-newtarget" title="[[Construct]] ( argumentsList, newTarget )"><span class="secnum">9.4.1.2</span> [[Construct]] ( <var>argumentsList</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-boundfunctioncreate" title="BoundFunctionCreate ( targetFunction, boundThis, boundArgs )"><span class="secnum">9.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="#sec-array-exotic-objects" title="Array Exotic Objects"><span class="secnum">9.4.2</span> Array Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-array-exotic-objects-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">9.4.2.1</span> [[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-arraycreate" title="ArrayCreate ( length [ , proto ] )"><span class="secnum">9.4.2.2</span> ArrayCreate ( <var>length</var> [ , <var>proto</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrayspeciescreate" title="ArraySpeciesCreate ( originalArray, length )"><span class="secnum">9.4.2.3</span> ArraySpeciesCreate ( <var>originalArray</var>, <var>length</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-arraysetlength" title="ArraySetLength ( A, Desc )"><span class="secnum">9.4.2.4</span> ArraySetLength ( <var>A</var>, <var>Desc</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-string-exotic-objects" title="String Exotic Objects"><span class="secnum">9.4.3</span> String Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-string-exotic-objects-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">9.4.3.1</span> [[GetOwnProperty]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string-exotic-objects-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">9.4.3.2</span> [[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string-exotic-objects-ownpropertykeys" title="[[OwnPropertyKeys]] ( )"><span class="secnum">9.4.3.3</span> [[OwnPropertyKeys]] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-stringcreate" title="StringCreate ( value, prototype )"><span class="secnum">9.4.3.4</span> StringCreate ( <var>value</var>, <var>prototype</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-stringgetownproperty" title="StringGetOwnProperty ( S, P )"><span class="secnum">9.4.3.5</span> StringGetOwnProperty ( <var>S</var>, <var>P</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-arguments-exotic-objects" title="Arguments Exotic Objects"><span class="secnum">9.4.4</span> Arguments Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-arguments-exotic-objects-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">9.4.4.1</span> [[GetOwnProperty]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-arguments-exotic-objects-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">9.4.4.2</span> [[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-arguments-exotic-objects-get-p-receiver" title="[[Get]] ( P, Receiver )"><span class="secnum">9.4.4.3</span> [[Get]] ( <var>P</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-arguments-exotic-objects-set-p-v-receiver" title="[[Set]] ( P, V, Receiver )"><span class="secnum">9.4.4.4</span> [[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-arguments-exotic-objects-delete-p" title="[[Delete]] ( P )"><span class="secnum">9.4.4.5</span> [[Delete]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createunmappedargumentsobject" title="CreateUnmappedArgumentsObject ( argumentsList )"><span class="secnum">9.4.4.6</span> CreateUnmappedArgumentsObject ( <var>argumentsList</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-createmappedargumentsobject" title="CreateMappedArgumentsObject ( func, formals, argumentsList, env )"><span class="secnum">9.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="#sec-makearggetter" title="MakeArgGetter ( name, env )"><span class="secnum">9.4.4.7.1</span> MakeArgGetter ( <var>name</var>, <var>env</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-makeargsetter" title="MakeArgSetter ( name, env )"><span class="secnum">9.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="#sec-integer-indexed-exotic-objects" title="Integer-Indexed Exotic Objects"><span class="secnum">9.4.5</span> Integer-Indexed Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-integer-indexed-exotic-objects-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">9.4.5.1</span> [[GetOwnProperty]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-integer-indexed-exotic-objects-hasproperty-p" title="[[HasProperty]] ( P )"><span class="secnum">9.4.5.2</span> [[HasProperty]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-integer-indexed-exotic-objects-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">9.4.5.3</span> [[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-integer-indexed-exotic-objects-get-p-receiver" title="[[Get]] ( P, Receiver )"><span class="secnum">9.4.5.4</span> [[Get]] ( <var>P</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-integer-indexed-exotic-objects-set-p-v-receiver" title="[[Set]] ( P, V, Receiver )"><span class="secnum">9.4.5.5</span> [[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-integer-indexed-exotic-objects-ownpropertykeys" title="[[OwnPropertyKeys]] ( )"><span class="secnum">9.4.5.6</span> [[OwnPropertyKeys]] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-integerindexedobjectcreate" title="IntegerIndexedObjectCreate ( prototype, internalSlotsList )"><span class="secnum">9.4.5.7</span> IntegerIndexedObjectCreate ( <var>prototype</var>, <var>internalSlotsList</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-integerindexedelementget" title="IntegerIndexedElementGet ( O, index )"><span class="secnum">9.4.5.8</span> IntegerIndexedElementGet ( <var>O</var>, <var>index</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-integerindexedelementset" title="IntegerIndexedElementSet ( O, index, value )"><span class="secnum">9.4.5.9</span> IntegerIndexedElementSet ( <var>O</var>, <var>index</var>, <var>value</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-module-namespace-exotic-objects" title="Module Namespace Exotic Objects"><span class="secnum">9.4.6</span> Module Namespace Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-module-namespace-exotic-objects-setprototypeof-v" title="[[SetPrototypeOf]] ( V )"><span class="secnum">9.4.6.1</span> [[SetPrototypeOf]] ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-namespace-exotic-objects-isextensible" title="[[IsExtensible]] ( )"><span class="secnum">9.4.6.2</span> [[IsExtensible]] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-namespace-exotic-objects-preventextensions" title="[[PreventExtensions]] ( )"><span class="secnum">9.4.6.3</span> [[PreventExtensions]] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-namespace-exotic-objects-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">9.4.6.4</span> [[GetOwnProperty]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-namespace-exotic-objects-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">9.4.6.5</span> [[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-namespace-exotic-objects-hasproperty-p" title="[[HasProperty]] ( P )"><span class="secnum">9.4.6.6</span> [[HasProperty]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-namespace-exotic-objects-get-p-receiver" title="[[Get]] ( P, Receiver )"><span class="secnum">9.4.6.7</span> [[Get]] ( <var>P</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-namespace-exotic-objects-set-p-v-receiver" title="[[Set]] ( P, V, Receiver )"><span class="secnum">9.4.6.8</span> [[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-namespace-exotic-objects-delete-p" title="[[Delete]] ( P )"><span class="secnum">9.4.6.9</span> [[Delete]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-namespace-exotic-objects-ownpropertykeys" title="[[OwnPropertyKeys]] ( )"><span class="secnum">9.4.6.10</span> [[OwnPropertyKeys]] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-modulenamespacecreate" title="ModuleNamespaceCreate ( module, exports )"><span class="secnum">9.4.6.11</span> ModuleNamespaceCreate ( <var>module</var>, <var>exports</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-immutable-prototype-exotic-objects" title="Immutable Prototype Exotic Objects"><span class="secnum">9.4.7</span> Immutable Prototype Exotic Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-immutable-prototype-exotic-objects-setprototypeof-v" title="[[SetPrototypeOf]] ( V )"><span class="secnum">9.4.7.1</span> [[SetPrototypeOf]] ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set-immutable-prototype" title="SetImmutablePrototype ( O, V )"><span class="secnum">9.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="#sec-proxy-object-internal-methods-and-internal-slots" title="Proxy Object Internal Methods and Internal Slots"><span class="secnum">9.5</span> Proxy Object Internal Methods and Internal Slots</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-getprototypeof" title="[[GetPrototypeOf]] ( )"><span class="secnum">9.5.1</span> [[GetPrototypeOf]] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-setprototypeof-v" title="[[SetPrototypeOf]] ( V )"><span class="secnum">9.5.2</span> [[SetPrototypeOf]] ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-isextensible" title="[[IsExtensible]] ( )"><span class="secnum">9.5.3</span> [[IsExtensible]] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-preventextensions" title="[[PreventExtensions]] ( )"><span class="secnum">9.5.4</span> [[PreventExtensions]] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-getownproperty-p" title="[[GetOwnProperty]] ( P )"><span class="secnum">9.5.5</span> [[GetOwnProperty]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-defineownproperty-p-desc" title="[[DefineOwnProperty]] ( P, Desc )"><span class="secnum">9.5.6</span> [[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-hasproperty-p" title="[[HasProperty]] ( P )"><span class="secnum">9.5.7</span> [[HasProperty]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver" title="[[Get]] ( P, Receiver )"><span class="secnum">9.5.8</span> [[Get]] ( <var>P</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver" title="[[Set]] ( P, V, Receiver )"><span class="secnum">9.5.9</span> [[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-delete-p" title="[[Delete]] ( P )"><span class="secnum">9.5.10</span> [[Delete]] ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys" title="[[OwnPropertyKeys]] ( )"><span class="secnum">9.5.11</span> [[OwnPropertyKeys]] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist" title="[[Call]] ( thisArgument, argumentsList )"><span class="secnum">9.5.12</span> [[Call]] ( <var>thisArgument</var>, <var>argumentsList</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget" title="[[Construct]] ( argumentsList, newTarget )"><span class="secnum">9.5.13</span> [[Construct]] ( <var>argumentsList</var>, <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-proxycreate" title="ProxyCreate ( target, handler )"><span class="secnum">9.5.14</span> ProxyCreate ( <var>target</var>, <var>handler</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ecmascript-language-source-code" title="ECMAScript Language: Source Code"><span class="secnum">10</span> ECMAScript Language: Source Code</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-source-text" title="Source Text"><span class="secnum">10.1</span> Source Text</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-utf16encoding" title="Static Semantics: UTF16Encoding ( cp )"><span class="secnum">10.1.1</span> SS: UTF16Encoding ( <var>cp</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-utf16decode" title="Static Semantics: UTF16Decode ( lead, trail )"><span class="secnum">10.1.2</span> SS: UTF16Decode ( <var>lead</var>, <var>trail</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-types-of-source-code" title="Types of Source Code"><span class="secnum">10.2</span> Types of Source Code</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-strict-mode-code" title="Strict Mode Code"><span class="secnum">10.2.1</span> Strict Mode Code</a></li><li><span class="item-toggle-none"></span><a href="#sec-non-ecmascript-functions" title="Non-ECMAScript Functions"><span class="secnum">10.2.2</span> Non-ECMAScript Functions</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ecmascript-language-lexical-grammar" title="ECMAScript Language: Lexical Grammar"><span class="secnum">11</span> ECMAScript Language: Lexical Grammar</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-unicode-format-control-characters" title="Unicode Format-Control Characters"><span class="secnum">11.1</span> Unicode Format-Control Characters</a></li><li><span class="item-toggle-none"></span><a href="#sec-white-space" title="White Space"><span class="secnum">11.2</span> White Space</a></li><li><span class="item-toggle-none"></span><a href="#sec-line-terminators" title="Line Terminators"><span class="secnum">11.3</span> Line Terminators</a></li><li><span class="item-toggle-none"></span><a href="#sec-comments" title="Comments"><span class="secnum">11.4</span> Comments</a></li><li><span class="item-toggle-none"></span><a href="#sec-tokens" title="Tokens"><span class="secnum">11.5</span> Tokens</a></li><li><span class="item-toggle">◢</span><a href="#sec-names-and-keywords" title="Names and Keywords"><span class="secnum">11.6</span> Names and Keywords</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-identifier-names" title="Identifier Names"><span class="secnum">11.6.1</span> Identifier Names</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-identifier-names-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">11.6.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-identifier-names-static-semantics-stringvalue" title="Static Semantics: StringValue"><span class="secnum">11.6.1.2</span> SS: StringValue</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-reserved-words" title="Reserved Words"><span class="secnum">11.6.2</span> Reserved Words</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-keywords" title="Keywords"><span class="secnum">11.6.2.1</span> Keywords</a></li><li><span class="item-toggle-none"></span><a href="#sec-future-reserved-words" title="Future Reserved Words"><span class="secnum">11.6.2.2</span> Future Reserved Words</a></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-punctuators" title="Punctuators"><span class="secnum">11.7</span> Punctuators</a></li><li><span class="item-toggle">◢</span><a href="#sec-ecmascript-language-lexical-grammar-literals" title="Literals"><span class="secnum">11.8</span> Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-null-literals" title="Null Literals"><span class="secnum">11.8.1</span> Null Literals</a></li><li><span class="item-toggle-none"></span><a href="#sec-boolean-literals" title="Boolean Literals"><span class="secnum">11.8.2</span> Boolean Literals</a></li><li><span class="item-toggle">◢</span><a href="#sec-literals-numeric-literals" title="Numeric Literals"><span class="secnum">11.8.3</span> Numeric Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-mv" title="Static Semantics: MV"><span class="secnum">11.8.3.1</span> SS: MV</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-literals-string-literals" title="String Literals"><span class="secnum">11.8.4</span> String Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-string-literals-static-semantics-stringvalue" title="Static Semantics: StringValue"><span class="secnum">11.8.4.1</span> SS: StringValue</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-sv" title="Static Semantics: SV"><span class="secnum">11.8.4.2</span> SS: SV</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-literals-regular-expression-literals" title="Regular Expression Literals"><span class="secnum">11.8.5</span> Regular Expression Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-literals-regular-expression-literals-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">11.8.5.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-bodytext" title="Static Semantics: BodyText"><span class="secnum">11.8.5.2</span> SS: BodyText</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-flagtext" title="Static Semantics: FlagText"><span class="secnum">11.8.5.3</span> SS: FlagText</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-template-literal-lexical-components" title="Template Literal Lexical Components"><span class="secnum">11.8.6</span> Template Literal Lexical Components</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-tv-and-trv" title="Static Semantics: TV and TRV"><span class="secnum">11.8.6.1</span> SS: TV and TRV</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-automatic-semicolon-insertion" title="Automatic Semicolon Insertion"><span class="secnum">11.9</span> Automatic Semicolon Insertion</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-rules-of-automatic-semicolon-insertion" title="Rules of Automatic Semicolon Insertion"><span class="secnum">11.9.1</span> Rules of Automatic Semicolon Insertion</a></li><li><span class="item-toggle-none"></span><a href="#sec-examples-of-automatic-semicolon-insertion" title="Examples of Automatic Semicolon Insertion"><span class="secnum">11.9.2</span> Examples of Automatic Semicolon Insertion</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ecmascript-language-expressions" title="ECMAScript Language: Expressions"><span class="secnum">12</span> ECMAScript Language: Expressions</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-identifiers" title="Identifiers"><span class="secnum">12.1</span> Identifiers</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-identifiers-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-identifiers-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">12.1.2</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-identifiers-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.1.3</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="#sec-identifiers-static-semantics-stringvalue" title="Static Semantics: StringValue"><span class="secnum">12.1.4</span> SS: StringValue</a></li><li><span class="item-toggle">◢</span><a href="#sec-identifiers-runtime-semantics-bindinginitialization" title="Runtime Semantics: BindingInitialization"><span class="secnum">12.1.5</span> RS: BindingInitialization</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-initializeboundname" title="Runtime Semantics: InitializeBoundName ( name, value, environment )"><span class="secnum">12.1.5.1</span> RS: InitializeBoundName ( <var>name</var>, <var>value</var>, <var>environment</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-identifiers-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.1.6</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-primary-expression" title="Primary Expression"><span class="secnum">12.2</span> Primary Expression</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-primary-expression-semantics" title="Semantics"><span class="secnum">12.2.1</span> Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-coveredparenthesizedexpression" title="Static Semantics: CoveredParenthesizedExpression"><span class="secnum">12.2.1.1</span> SS: CoveredParenthesizedExpression</a></li><li><span class="item-toggle-none"></span><a href="#sec-semantics-static-semantics-hasname" title="Static Semantics: HasName"><span class="secnum">12.2.1.2</span> SS: HasName</a></li><li><span class="item-toggle-none"></span><a href="#sec-semantics-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.2.1.3</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-semantics-static-semantics-isidentifierref" title="Static Semantics: IsIdentifierRef"><span class="secnum">12.2.1.4</span> SS: IsIdentifierRef</a></li><li><span class="item-toggle-none"></span><a href="#sec-semantics-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.2.1.5</span> SS: AssignmentTargetType</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-this-keyword" title="The this Keyword"><span class="secnum">12.2.2</span> The <code>this</code> Keyword</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-this-keyword-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.2.2.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-identifier-reference" title="Identifier Reference"><span class="secnum">12.2.3</span> Identifier Reference</a></li><li><span class="item-toggle">◢</span><a href="#sec-primary-expression-literals" title="Literals"><span class="secnum">12.2.4</span> Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-literals-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.2.4.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-array-initializer" title="Array Initializer"><span class="secnum">12.2.5</span> Array Initializer</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-elisionwidth" title="Static Semantics: ElisionWidth"><span class="secnum">12.2.5.1</span> SS: ElisionWidth</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-arrayaccumulation" title="Runtime Semantics: ArrayAccumulation"><span class="secnum">12.2.5.2</span> RS: ArrayAccumulation</a></li><li><span class="item-toggle-none"></span><a href="#sec-array-initializer-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.2.5.3</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-object-initializer" title="Object Initializer"><span class="secnum">12.2.6</span> Object Initializer</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-object-initializer-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.2.6.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-initializer-static-semantics-computedpropertycontains" title="Static Semantics: ComputedPropertyContains"><span class="secnum">12.2.6.2</span> SS: ComputedPropertyContains</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-initializer-static-semantics-contains" title="Static Semantics: Contains"><span class="secnum">12.2.6.3</span> SS: Contains</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-iscomputedpropertykey" title="Static Semantics: IsComputedPropertyKey"><span class="secnum">12.2.6.4</span> SS: IsComputedPropertyKey</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-initializer-static-semantics-propname" title="Static Semantics: PropName"><span class="secnum">12.2.6.5</span> SS: PropName</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-propertynamelist" title="Static Semantics: PropertyNameList"><span class="secnum">12.2.6.6</span> SS: PropertyNameList</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-initializer-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.2.6.7</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-object-initializer-runtime-semantics-propertydefinitionevaluation" title="Runtime Semantics: PropertyDefinitionEvaluation"><span class="secnum">12.2.6.8</span> RS: PropertyDefinitionEvaluation</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-function-defining-expressions" title="Function Defining Expressions"><span class="secnum">12.2.7</span> Function Defining Expressions</a></li><li><span class="item-toggle">◢</span><a href="#sec-primary-expression-regular-expression-literals" title="Regular Expression Literals"><span class="secnum">12.2.8</span> Regular Expression Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-primary-expression-regular-expression-literals-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.2.8.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-regular-expression-literals-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.2.8.2</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-template-literals" title="Template Literals"><span class="secnum">12.2.9</span> Template Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-template-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.2.9.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-templatestrings" title="Static Semantics: TemplateStrings"><span class="secnum">12.2.9.2</span> SS: TemplateStrings</a></li><li><span class="item-toggle-none"></span><a href="#sec-template-literals-runtime-semantics-argumentlistevaluation" title="Runtime Semantics: ArgumentListEvaluation"><span class="secnum">12.2.9.3</span> RS: ArgumentListEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-gettemplateobject" title="Runtime Semantics: GetTemplateObject ( templateLiteral )"><span class="secnum">12.2.9.4</span> RS: GetTemplateObject ( <var>templateLiteral</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-substitutionevaluation" title="Runtime Semantics: SubstitutionEvaluation"><span class="secnum">12.2.9.5</span> RS: SubstitutionEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-template-literals-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.2.9.6</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-grouping-operator" title="The Grouping Operator"><span class="secnum">12.2.10</span> The Grouping Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-grouping-operator-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.2.10.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-grouping-operator-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.2.10.2</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-grouping-operator-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.2.10.3</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="#sec-grouping-operator-runtime-semantics-namedevaluation" title="Runtime Semantics: NamedEvaluation"><span class="secnum">12.2.10.4</span> RS: NamedEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-grouping-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.2.10.5</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-left-hand-side-expressions" title="Left-Hand-Side Expressions"><span class="secnum">12.3</span> Left-Hand-Side Expressions</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-static-semantics" title="Static Semantics"><span class="secnum">12.3.1</span> Static Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-left-hand-side-expressions-static-semantics-coveredcallexpression" title="Static Semantics: CoveredCallExpression"><span class="secnum">12.3.1.1</span> SS: CoveredCallExpression</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-static-semantics-contains" title="Static Semantics: Contains"><span class="secnum">12.3.1.2</span> SS: Contains</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.3.1.3</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-static-semantics-isdestructuring" title="Static Semantics: IsDestructuring"><span class="secnum">12.3.1.4</span> SS: IsDestructuring</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-static-semantics-isidentifierref" title="Static Semantics: IsIdentifierRef"><span class="secnum">12.3.1.5</span> SS: IsIdentifierRef</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.3.1.6</span> SS: AssignmentTargetType</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-property-accessors" title="Property Accessors"><span class="secnum">12.3.2</span> Property Accessors</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-property-accessors-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.3.2.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-new-operator" title="The new Operator"><span class="secnum">12.3.3</span> The <code>new</code> Operator</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-new-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.3.3.1</span> RS: Evaluation</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-evaluatenew" title="Runtime Semantics: EvaluateNew ( constructExpr, arguments )"><span class="secnum">12.3.3.1.1</span> RS: EvaluateNew ( <var>constructExpr</var>, <var>arguments</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-function-calls" title="Function Calls"><span class="secnum">12.3.4</span> Function Calls</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-function-calls-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.3.4.1</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-evaluatecall" title="Runtime Semantics: EvaluateCall ( func, ref, arguments, tailPosition )"><span class="secnum">12.3.4.2</span> RS: 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="#sec-super-keyword" title="The super Keyword"><span class="secnum">12.3.5</span> The <code>super</code> Keyword</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-super-keyword-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.3.5.1</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-getsuperconstructor" title="Runtime Semantics: GetSuperConstructor ( )"><span class="secnum">12.3.5.2</span> RS: GetSuperConstructor ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-makesuperpropertyreference" title="Runtime Semantics: MakeSuperPropertyReference ( actualThis, propertyKey, strict )"><span class="secnum">12.3.5.3</span> RS: MakeSuperPropertyReference ( <var>actualThis</var>, <var>propertyKey</var>, <var>strict</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-argument-lists" title="Argument Lists"><span class="secnum">12.3.6</span> Argument Lists</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-argument-lists-runtime-semantics-argumentlistevaluation" title="Runtime Semantics: ArgumentListEvaluation"><span class="secnum">12.3.6.1</span> RS: ArgumentListEvaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-tagged-templates" title="Tagged Templates"><span class="secnum">12.3.7</span> Tagged Templates</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-tagged-templates-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.3.7.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-meta-properties" title="Meta Properties"><span class="secnum">12.3.8</span> Meta Properties</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-meta-properties-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.3.8.1</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-update-expressions" title="Update Expressions"><span class="secnum">12.4</span> Update Expressions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-update-expressions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.4.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-update-expressions-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.4.2</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-update-expressions-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.4.3</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle">◢</span><a href="#sec-postfix-increment-operator" title="Postfix Increment Operator"><span class="secnum">12.4.4</span> Postfix Increment Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-postfix-increment-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.4.4.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-postfix-decrement-operator" title="Postfix Decrement Operator"><span class="secnum">12.4.5</span> Postfix Decrement Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-postfix-decrement-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.4.5.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-prefix-increment-operator" title="Prefix Increment Operator"><span class="secnum">12.4.6</span> Prefix Increment Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-prefix-increment-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.4.6.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-prefix-decrement-operator" title="Prefix Decrement Operator"><span class="secnum">12.4.7</span> Prefix Decrement Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-prefix-decrement-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.4.7.1</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-unary-operators" title="Unary Operators"><span class="secnum">12.5</span> Unary Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-unary-operators-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.5.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-unary-operators-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.5.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle">◢</span><a href="#sec-delete-operator" title="The delete Operator"><span class="secnum">12.5.3</span> The <code>delete</code> Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-delete-operator-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.5.3.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-delete-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.5.3.2</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-void-operator" title="The void Operator"><span class="secnum">12.5.4</span> The <code>void</code> Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-void-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.5.4.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-typeof-operator" title="The typeof Operator"><span class="secnum">12.5.5</span> The <code>typeof</code> Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-typeof-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.5.5.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-unary-plus-operator" title="Unary + Operator"><span class="secnum">12.5.6</span> Unary <code>+</code> Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-unary-plus-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.5.6.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-unary-minus-operator" title="Unary - Operator"><span class="secnum">12.5.7</span> Unary <code>-</code> Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-unary-minus-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.5.7.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-bitwise-not-operator" title="Bitwise NOT Operator ( ~ )"><span class="secnum">12.5.8</span> Bitwise NOT Operator ( <code>~</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-bitwise-not-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.5.8.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-logical-not-operator" title="Logical NOT Operator ( ! )"><span class="secnum">12.5.9</span> Logical NOT Operator ( <code>!</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-logical-not-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.5.9.1</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-exp-operator" title="Exponentiation Operator"><span class="secnum">12.6</span> Exponentiation Operator</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-exp-operator-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.6.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-exp-operator-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.6.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="#sec-exp-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.6.3</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-applying-the-exp-operator" title="Applying the ** Operator"><span class="secnum">12.6.4</span> Applying the <code>**</code> Operator</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-multiplicative-operators" title="Multiplicative Operators"><span class="secnum">12.7</span> Multiplicative Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-multiplicative-operators-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.7.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-multiplicative-operators-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.7.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle">◢</span><a href="#sec-multiplicative-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.7.3</span> RS: Evaluation</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-applying-the-mul-operator" title="Applying the * Operator"><span class="secnum">12.7.3.1</span> Applying the <code>*</code> Operator</a></li><li><span class="item-toggle-none"></span><a href="#sec-applying-the-div-operator" title="Applying the / Operator"><span class="secnum">12.7.3.2</span> Applying the <code>/</code> Operator</a></li><li><span class="item-toggle-none"></span><a href="#sec-applying-the-mod-operator" title="Applying the % Operator"><span class="secnum">12.7.3.3</span> Applying the <code>%</code> Operator</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-additive-operators" title="Additive Operators"><span class="secnum">12.8</span> Additive Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-additive-operators-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.8.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-additive-operators-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.8.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle">◢</span><a href="#sec-addition-operator-plus" title="The Addition Operator ( + )"><span class="secnum">12.8.3</span> The Addition Operator ( <code>+</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-addition-operator-plus-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.8.3.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-subtraction-operator-minus" title="The Subtraction Operator ( - )"><span class="secnum">12.8.4</span> The Subtraction Operator ( <code>-</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-subtraction-operator-minus-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.8.4.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-applying-the-additive-operators-to-numbers" title="Applying the Additive Operators to Numbers"><span class="secnum">12.8.5</span> Applying the Additive Operators to Numbers</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-bitwise-shift-operators" title="Bitwise Shift Operators"><span class="secnum">12.9</span> Bitwise Shift Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-bitwise-shift-operators-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.9.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-bitwise-shift-operators-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.9.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle">◢</span><a href="#sec-left-shift-operator" title="The Left Shift Operator ( << )"><span class="secnum">12.9.3</span> The Left Shift Operator ( <code><<</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-left-shift-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.9.3.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-signed-right-shift-operator" title="The Signed Right Shift Operator ( >> )"><span class="secnum">12.9.4</span> The Signed Right Shift Operator ( <code>>></code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-signed-right-shift-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.9.4.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-unsigned-right-shift-operator" title="The Unsigned Right Shift Operator ( >>> )"><span class="secnum">12.9.5</span> The Unsigned Right Shift Operator ( <code>>>></code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-unsigned-right-shift-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.9.5.1</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-relational-operators" title="Relational Operators"><span class="secnum">12.10</span> Relational Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-relational-operators-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.10.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-relational-operators-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.10.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="#sec-relational-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.10.3</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-instanceofoperator" title="Runtime Semantics: InstanceofOperator ( V, target )"><span class="secnum">12.10.4</span> RS: InstanceofOperator ( <var>V</var>, <var>target</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-equality-operators" title="Equality Operators"><span class="secnum">12.11</span> Equality Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-equality-operators-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.11.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-equality-operators-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.11.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="#sec-equality-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.11.3</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-binary-bitwise-operators" title="Binary Bitwise Operators"><span class="secnum">12.12</span> Binary Bitwise Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-binary-bitwise-operators-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.12.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-binary-bitwise-operators-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.12.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="#sec-binary-bitwise-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.12.3</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-binary-logical-operators" title="Binary Logical Operators"><span class="secnum">12.13</span> Binary Logical Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-binary-logical-operators-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.13.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-binary-logical-operators-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.13.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="#sec-binary-logical-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.13.3</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-conditional-operator" title="Conditional Operator ( ? : )"><span class="secnum">12.14</span> Conditional Operator ( <code>? :</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-conditional-operator-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.14.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-conditional-operator-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.14.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="#sec-conditional-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.14.3</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-assignment-operators" title="Assignment Operators"><span class="secnum">12.15</span> Assignment Operators</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-assignment-operators-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.15.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-assignment-operators-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.15.2</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-assignment-operators-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.15.3</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="#sec-assignment-operators-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.15.4</span> RS: Evaluation</a></li><li><span class="item-toggle">◢</span><a href="#sec-destructuring-assignment" title="Destructuring Assignment"><span class="secnum">12.15.5</span> Destructuring Assignment</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-destructuring-assignment-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">12.15.5.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-destructuringassignmentevaluation" title="Runtime Semantics: DestructuringAssignmentEvaluation"><span class="secnum">12.15.5.2</span> RS: DestructuringAssignmentEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-propertydestructuringassignmentevaluation" title="Runtime Semantics: PropertyDestructuringAssignmentEvaluation"><span class="secnum">12.15.5.3</span> RS: PropertyDestructuringAssignmentEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-restdestructuringassignmentevaluation" title="Runtime Semantics: RestDestructuringAssignmentEvaluation"><span class="secnum">12.15.5.4</span> RS: RestDestructuringAssignmentEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-iteratordestructuringassignmentevaluation" title="Runtime Semantics: IteratorDestructuringAssignmentEvaluation"><span class="secnum">12.15.5.5</span> RS: IteratorDestructuringAssignmentEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-keyeddestructuringassignmentevaluation" title="Runtime Semantics: KeyedDestructuringAssignmentEvaluation"><span class="secnum">12.15.5.6</span> RS: KeyedDestructuringAssignmentEvaluation</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-comma-operator" title="Comma Operator ( , )"><span class="secnum">12.16</span> Comma Operator ( <code>,</code> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-comma-operator-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">12.16.1</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-comma-operator-static-semantics-assignmenttargettype" title="Static Semantics: AssignmentTargetType"><span class="secnum">12.16.2</span> SS: AssignmentTargetType</a></li><li><span class="item-toggle-none"></span><a href="#sec-comma-operator-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">12.16.3</span> RS: Evaluation</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ecmascript-language-statements-and-declarations" title="ECMAScript Language: Statements and Declarations"><span class="secnum">13</span> ECMAScript Language: Statements and Declarations</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-statement-semantics" title="Statement Semantics"><span class="secnum">13.1</span> Statement Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-statement-semantics-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.1.1</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-statement-semantics-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.1.2</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-statement-semantics-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.1.3</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-declarationpart" title="Static Semantics: DeclarationPart"><span class="secnum">13.1.4</span> SS: DeclarationPart</a></li><li><span class="item-toggle-none"></span><a href="#sec-statement-semantics-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.1.5</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-statement-semantics-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.1.6</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-statement-semantics-runtime-semantics-labelledevaluation" title="Runtime Semantics: LabelledEvaluation"><span class="secnum">13.1.7</span> RS: LabelledEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-statement-semantics-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.1.8</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-block" title="Block"><span class="secnum">13.2</span> Block</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.2.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.2.2</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.2.3</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.2.4</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-lexicallydeclarednames" title="Static Semantics: LexicallyDeclaredNames"><span class="secnum">13.2.5</span> SS: LexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-lexicallyscopeddeclarations" title="Static Semantics: LexicallyScopedDeclarations"><span class="secnum">13.2.6</span> SS: LexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-toplevellexicallydeclarednames" title="Static Semantics: TopLevelLexicallyDeclaredNames"><span class="secnum">13.2.7</span> SS: TopLevelLexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-toplevellexicallyscopeddeclarations" title="Static Semantics: TopLevelLexicallyScopedDeclarations"><span class="secnum">13.2.8</span> SS: TopLevelLexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-toplevelvardeclarednames" title="Static Semantics: TopLevelVarDeclaredNames"><span class="secnum">13.2.9</span> SS: TopLevelVarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-toplevelvarscopeddeclarations" title="Static Semantics: TopLevelVarScopedDeclarations"><span class="secnum">13.2.10</span> SS: TopLevelVarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.2.11</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.2.12</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.2.13</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-blockdeclarationinstantiation" title="Runtime Semantics: BlockDeclarationInstantiation ( code, env )"><span class="secnum">13.2.14</span> RS: BlockDeclarationInstantiation ( <var>code</var>, <var>env</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-declarations-and-the-variable-statement" title="Declarations and the Variable Statement"><span class="secnum">13.3</span> Declarations and the Variable Statement</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-let-and-const-declarations" title="Let and Const Declarations"><span class="secnum">13.3.1</span> Let and Const Declarations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-let-and-const-declarations-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.3.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-let-and-const-declarations-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">13.3.1.2</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-let-and-const-declarations-static-semantics-isconstantdeclaration" title="Static Semantics: IsConstantDeclaration"><span class="secnum">13.3.1.3</span> SS: IsConstantDeclaration</a></li><li><span class="item-toggle-none"></span><a href="#sec-let-and-const-declarations-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.3.1.4</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-variable-statement" title="Variable Statement"><span class="secnum">13.3.2</span> Variable Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-variable-statement-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">13.3.2.1</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-variable-statement-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.3.2.2</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-variable-statement-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.3.2.3</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-variable-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.3.2.4</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-destructuring-binding-patterns" title="Destructuring Binding Patterns"><span class="secnum">13.3.3</span> Destructuring Binding Patterns</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-destructuring-binding-patterns-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">13.3.3.1</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-destructuring-binding-patterns-static-semantics-containsexpression" title="Static Semantics: ContainsExpression"><span class="secnum">13.3.3.2</span> SS: ContainsExpression</a></li><li><span class="item-toggle-none"></span><a href="#sec-destructuring-binding-patterns-static-semantics-hasinitializer" title="Static Semantics: HasInitializer"><span class="secnum">13.3.3.3</span> SS: HasInitializer</a></li><li><span class="item-toggle-none"></span><a href="#sec-destructuring-binding-patterns-static-semantics-issimpleparameterlist" title="Static Semantics: IsSimpleParameterList"><span class="secnum">13.3.3.4</span> SS: IsSimpleParameterList</a></li><li><span class="item-toggle-none"></span><a href="#sec-destructuring-binding-patterns-runtime-semantics-bindinginitialization" title="Runtime Semantics: BindingInitialization"><span class="secnum">13.3.3.5</span> RS: BindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="#sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization" title="Runtime Semantics: PropertyBindingInitialization"><span class="secnum">13.3.3.6</span> RS: PropertyBindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="#sec-destructuring-binding-patterns-runtime-semantics-restbindinginitialization" title="Runtime Semantics: RestBindingInitialization"><span class="secnum">13.3.3.7</span> RS: RestBindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="#sec-destructuring-binding-patterns-runtime-semantics-iteratorbindinginitialization" title="Runtime Semantics: IteratorBindingInitialization"><span class="secnum">13.3.3.8</span> RS: IteratorBindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-keyedbindinginitialization" title="Runtime Semantics: KeyedBindingInitialization"><span class="secnum">13.3.3.9</span> RS: KeyedBindingInitialization</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-empty-statement" title="Empty Statement"><span class="secnum">13.4</span> Empty Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-empty-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.4.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-expression-statement" title="Expression Statement"><span class="secnum">13.5</span> Expression Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-expression-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.5.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-if-statement" title="The if Statement"><span class="secnum">13.6</span> The <code>if</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-if-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.6.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-if-statement-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.6.2</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-if-statement-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.6.3</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-if-statement-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.6.4</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-if-statement-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.6.5</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-if-statement-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.6.6</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-if-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.6.7</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-iteration-statements" title="Iteration Statements"><span class="secnum">13.7</span> Iteration Statements</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-iteration-statements-semantics" title="Semantics"><span class="secnum">13.7.1</span> Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-semantics-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.7.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-loopcontinues" title="Runtime Semantics: LoopContinues ( completion, labelSet )"><span class="secnum">13.7.1.2</span> RS: LoopContinues ( <var>completion</var>, <var>labelSet</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-do-while-statement" title="The do-while Statement"><span class="secnum">13.7.2</span> The <code>do</code>-<code>while</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-do-while-statement-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.7.2.1</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-do-while-statement-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.7.2.2</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-do-while-statement-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.7.2.3</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-do-while-statement-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.7.2.4</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-do-while-statement-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.7.2.5</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-do-while-statement-runtime-semantics-labelledevaluation" title="Runtime Semantics: LabelledEvaluation"><span class="secnum">13.7.2.6</span> RS: LabelledEvaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-while-statement" title="The while Statement"><span class="secnum">13.7.3</span> The <code>while</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-while-statement-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.7.3.1</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-while-statement-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.7.3.2</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-while-statement-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.7.3.3</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-while-statement-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.7.3.4</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-while-statement-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.7.3.5</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-while-statement-runtime-semantics-labelledevaluation" title="Runtime Semantics: LabelledEvaluation"><span class="secnum">13.7.3.6</span> RS: LabelledEvaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-for-statement" title="The for Statement"><span class="secnum">13.7.4</span> The <code>for</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-for-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.7.4.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-statement-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.7.4.2</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-statement-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.7.4.3</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-statement-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.7.4.4</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-statement-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.7.4.5</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-statement-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.7.4.6</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-statement-runtime-semantics-labelledevaluation" title="Runtime Semantics: LabelledEvaluation"><span class="secnum">13.7.4.7</span> RS: LabelledEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-forbodyevaluation" title="Runtime Semantics: ForBodyEvaluation ( test, increment, stmt, perIterationBindings, labelSet )"><span class="secnum">13.7.4.8</span> RS: 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="#sec-createperiterationenvironment" title="Runtime Semantics: CreatePerIterationEnvironment ( perIterationBindings )"><span class="secnum">13.7.4.9</span> RS: CreatePerIterationEnvironment ( <var>perIterationBindings</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-for-in-and-for-of-statements" title="The for-in, for-of, and for-await-of Statements"><span class="secnum">13.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="#sec-for-in-and-for-of-statements-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.7.5.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-in-and-for-of-statements-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">13.7.5.2</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-in-and-for-of-statements-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.7.5.3</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-in-and-for-of-statements-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.7.5.4</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-in-and-for-of-statements-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.7.5.5</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-in-and-for-of-statements-static-semantics-isdestructuring" title="Static Semantics: IsDestructuring"><span class="secnum">13.7.5.6</span> SS: IsDestructuring</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-in-and-for-of-statements-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.7.5.7</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-in-and-for-of-statements-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.7.5.8</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-in-and-for-of-statements-runtime-semantics-bindinginitialization" title="Runtime Semantics: BindingInitialization"><span class="secnum">13.7.5.9</span> RS: BindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-bindinginstantiation" title="Runtime Semantics: BindingInstantiation"><span class="secnum">13.7.5.10</span> RS: BindingInstantiation</a></li><li><span class="item-toggle-none"></span><a href="#sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation" title="Runtime Semantics: LabelledEvaluation"><span class="secnum">13.7.5.11</span> RS: LabelledEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind" title="Runtime Semantics: ForIn/OfHeadEvaluation ( TDZnames, expr, iterationKind )"><span class="secnum">13.7.5.12</span> RS: ForIn/OfHeadEvaluation ( <var>TDZnames</var>, <var>expr</var>, <var>iterationKind</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset" title="Runtime Semantics: ForIn/OfBodyEvaluation ( lhs, stmt, iteratorRecord, iterationKind, lhsKind, labelSet [ , iteratorKind ] )"><span class="secnum">13.7.5.13</span> RS: 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="#sec-for-in-and-for-of-statements-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.7.5.14</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-enumerate-object-properties" title="EnumerateObjectProperties ( O )"><span class="secnum">13.7.5.15</span> EnumerateObjectProperties ( <var>O</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-continue-statement" title="The continue Statement"><span class="secnum">13.8</span> The <code>continue</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-continue-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.8.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-continue-statement-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.8.2</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-continue-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.8.3</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-break-statement" title="The break Statement"><span class="secnum">13.9</span> The <code>break</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-break-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.9.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-break-statement-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.9.2</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-break-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.9.3</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-return-statement" title="The return Statement"><span class="secnum">13.10</span> The <code>return</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-return-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.10.1</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-with-statement" title="The with Statement"><span class="secnum">13.11</span> The <code>with</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-with-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.11.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-with-statement-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.11.2</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-with-statement-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.11.3</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-with-statement-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.11.4</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-with-statement-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.11.5</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-with-statement-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.11.6</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-with-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.11.7</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-switch-statement" title="The switch Statement"><span class="secnum">13.12</span> The <code>switch</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-switch-statement-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.12.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-switch-statement-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.12.2</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-switch-statement-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.12.3</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-switch-statement-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.12.4</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-switch-statement-static-semantics-lexicallydeclarednames" title="Static Semantics: LexicallyDeclaredNames"><span class="secnum">13.12.5</span> SS: LexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-switch-statement-static-semantics-lexicallyscopeddeclarations" title="Static Semantics: LexicallyScopedDeclarations"><span class="secnum">13.12.6</span> SS: LexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-switch-statement-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.12.7</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-switch-statement-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.12.8</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-caseblockevaluation" title="Runtime Semantics: CaseBlockEvaluation"><span class="secnum">13.12.9</span> RS: CaseBlockEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-caseclauseisselected" title="Runtime Semantics: CaseClauseIsSelected ( C, input )"><span class="secnum">13.12.10</span> RS: CaseClauseIsSelected ( <var>C</var>, <var>input</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-switch-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.12.11</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-labelled-statements" title="Labelled Statements"><span class="secnum">13.13</span> Labelled Statements</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">13.13.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.13.2</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.13.3</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.13.4</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-islabelledfunction" title="Static Semantics: IsLabelledFunction ( stmt )"><span class="secnum">13.13.5</span> SS: IsLabelledFunction ( <var>stmt</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-lexicallydeclarednames" title="Static Semantics: LexicallyDeclaredNames"><span class="secnum">13.13.6</span> SS: LexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-lexicallyscopeddeclarations" title="Static Semantics: LexicallyScopedDeclarations"><span class="secnum">13.13.7</span> SS: LexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-toplevellexicallydeclarednames" title="Static Semantics: TopLevelLexicallyDeclaredNames"><span class="secnum">13.13.8</span> SS: TopLevelLexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-toplevellexicallyscopeddeclarations" title="Static Semantics: TopLevelLexicallyScopedDeclarations"><span class="secnum">13.13.9</span> SS: TopLevelLexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-toplevelvardeclarednames" title="Static Semantics: TopLevelVarDeclaredNames"><span class="secnum">13.13.10</span> SS: TopLevelVarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-toplevelvarscopeddeclarations" title="Static Semantics: TopLevelVarScopedDeclarations"><span class="secnum">13.13.11</span> SS: TopLevelVarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.13.12</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.13.13</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-runtime-semantics-labelledevaluation" title="Runtime Semantics: LabelledEvaluation"><span class="secnum">13.13.14</span> RS: LabelledEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-statements-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.13.15</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-throw-statement" title="The throw Statement"><span class="secnum">13.14</span> The <code>throw</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-throw-statement-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="#sec-try-statement" title="The try Statement"><span class="secnum">13.15</span> The <code>try</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-try-statement-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="#sec-try-statement-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">13.15.2</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-try-statement-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">13.15.3</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-try-statement-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">13.15.4</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-try-statement-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">13.15.5</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-try-statement-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">13.15.6</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-catchclauseevaluation" title="Runtime Semantics: CatchClauseEvaluation"><span class="secnum">13.15.7</span> RS: CatchClauseEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-try-statement-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">13.15.8</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-debugger-statement" title="The debugger Statement"><span class="secnum">13.16</span> The <code>debugger</code> Statement</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-debugger-statement-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="#sec-ecmascript-language-functions-and-classes" title="ECMAScript Language: Functions and Classes"><span class="secnum">14</span> ECMAScript Language: Functions and Classes</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-function-definitions" title="Function Definitions"><span class="secnum">14.1</span> Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-directive-prologues-and-the-use-strict-directive" title="Directive Prologues and the Use Strict Directive"><span class="secnum">14.1.1</span> Directive Prologues and the Use Strict Directive</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.1.2</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">14.1.3</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-contains" title="Static Semantics: Contains"><span class="secnum">14.1.4</span> SS: Contains</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-containsexpression" title="Static Semantics: ContainsExpression"><span class="secnum">14.1.5</span> SS: ContainsExpression</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-containsusestrict" title="Static Semantics: ContainsUseStrict"><span class="secnum">14.1.6</span> SS: ContainsUseStrict</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-expectedargumentcount" title="Static Semantics: ExpectedArgumentCount"><span class="secnum">14.1.7</span> SS: ExpectedArgumentCount</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-hasinitializer" title="Static Semantics: HasInitializer"><span class="secnum">14.1.8</span> SS: HasInitializer</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-hasname" title="Static Semantics: HasName"><span class="secnum">14.1.9</span> SS: HasName</a></li><li><span class="item-toggle-none"></span><a href="#sec-isanonymousfunctiondefinition" title="Static Semantics: IsAnonymousFunctionDefinition ( expr )"><span class="secnum">14.1.10</span> SS: IsAnonymousFunctionDefinition ( <var>expr</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-isconstantdeclaration" title="Static Semantics: IsConstantDeclaration"><span class="secnum">14.1.11</span> SS: IsConstantDeclaration</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">14.1.12</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-issimpleparameterlist" title="Static Semantics: IsSimpleParameterList"><span class="secnum">14.1.13</span> SS: IsSimpleParameterList</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-lexicallydeclarednames" title="Static Semantics: LexicallyDeclaredNames"><span class="secnum">14.1.14</span> SS: LexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-lexicallyscopeddeclarations" title="Static Semantics: LexicallyScopedDeclarations"><span class="secnum">14.1.15</span> SS: LexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">14.1.16</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">14.1.17</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-runtime-semantics-evaluatebody" title="Runtime Semantics: EvaluateBody"><span class="secnum">14.1.18</span> RS: EvaluateBody</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-runtime-semantics-iteratorbindinginitialization" title="Runtime Semantics: IteratorBindingInitialization"><span class="secnum">14.1.19</span> RS: IteratorBindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-runtime-semantics-instantiatefunctionobject" title="Runtime Semantics: InstantiateFunctionObject"><span class="secnum">14.1.20</span> RS: InstantiateFunctionObject</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-runtime-semantics-namedevaluation" title="Runtime Semantics: NamedEvaluation"><span class="secnum">14.1.21</span> RS: NamedEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.1.22</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-arrow-function-definitions" title="Arrow Function Definitions"><span class="secnum">14.2</span> Arrow Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-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="#sec-arrow-function-definitions-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">14.2.2</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-static-semantics-contains" title="Static Semantics: Contains"><span class="secnum">14.2.3</span> SS: Contains</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-static-semantics-containsexpression" title="Static Semantics: ContainsExpression"><span class="secnum">14.2.4</span> SS: ContainsExpression</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-static-semantics-containsusestrict" title="Static Semantics: ContainsUseStrict"><span class="secnum">14.2.5</span> SS: ContainsUseStrict</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-static-semantics-expectedargumentcount" title="Static Semantics: ExpectedArgumentCount"><span class="secnum">14.2.6</span> SS: ExpectedArgumentCount</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-static-semantics-hasname" title="Static Semantics: HasName"><span class="secnum">14.2.7</span> SS: HasName</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-static-semantics-issimpleparameterlist" title="Static Semantics: IsSimpleParameterList"><span class="secnum">14.2.8</span> SS: IsSimpleParameterList</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-coveredformalslist" title="Static Semantics: CoveredFormalsList"><span class="secnum">14.2.9</span> SS: CoveredFormalsList</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-static-semantics-lexicallydeclarednames" title="Static Semantics: LexicallyDeclaredNames"><span class="secnum">14.2.10</span> SS: LexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-static-semantics-lexicallyscopeddeclarations" title="Static Semantics: LexicallyScopedDeclarations"><span class="secnum">14.2.11</span> SS: LexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">14.2.12</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">14.2.13</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-runtime-semantics-iteratorbindinginitialization" title="Runtime Semantics: IteratorBindingInitialization"><span class="secnum">14.2.14</span> RS: IteratorBindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-runtime-semantics-evaluatebody" title="Runtime Semantics: EvaluateBody"><span class="secnum">14.2.15</span> RS: EvaluateBody</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-runtime-semantics-namedevaluation" title="Runtime Semantics: NamedEvaluation"><span class="secnum">14.2.16</span> RS: NamedEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-arrow-function-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.2.17</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-method-definitions" title="Method Definitions"><span class="secnum">14.3</span> Method Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-method-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.3.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-method-definitions-static-semantics-computedpropertycontains" title="Static Semantics: ComputedPropertyContains"><span class="secnum">14.3.2</span> SS: ComputedPropertyContains</a></li><li><span class="item-toggle-none"></span><a href="#sec-method-definitions-static-semantics-expectedargumentcount" title="Static Semantics: ExpectedArgumentCount"><span class="secnum">14.3.3</span> SS: ExpectedArgumentCount</a></li><li><span class="item-toggle-none"></span><a href="#sec-method-definitions-static-semantics-hasdirectsuper" title="Static Semantics: HasDirectSuper"><span class="secnum">14.3.4</span> SS: HasDirectSuper</a></li><li><span class="item-toggle-none"></span><a href="#sec-method-definitions-static-semantics-propname" title="Static Semantics: PropName"><span class="secnum">14.3.5</span> SS: PropName</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-specialmethod" title="Static Semantics: SpecialMethod"><span class="secnum">14.3.6</span> SS: SpecialMethod</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-definemethod" title="Runtime Semantics: DefineMethod"><span class="secnum">14.3.7</span> RS: DefineMethod</a></li><li><span class="item-toggle-none"></span><a href="#sec-method-definitions-runtime-semantics-propertydefinitionevaluation" title="Runtime Semantics: PropertyDefinitionEvaluation"><span class="secnum">14.3.8</span> RS: PropertyDefinitionEvaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-generator-function-definitions" title="Generator Function Definitions"><span class="secnum">14.4</span> Generator Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.4.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">14.4.2</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-static-semantics-computedpropertycontains" title="Static Semantics: ComputedPropertyContains"><span class="secnum">14.4.3</span> SS: ComputedPropertyContains</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-static-semantics-contains" title="Static Semantics: Contains"><span class="secnum">14.4.4</span> SS: Contains</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-static-semantics-hasdirectsuper" title="Static Semantics: HasDirectSuper"><span class="secnum">14.4.5</span> SS: HasDirectSuper</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-static-semantics-hasname" title="Static Semantics: HasName"><span class="secnum">14.4.6</span> SS: HasName</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-static-semantics-isconstantdeclaration" title="Static Semantics: IsConstantDeclaration"><span class="secnum">14.4.7</span> SS: IsConstantDeclaration</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">14.4.8</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-static-semantics-propname" title="Static Semantics: PropName"><span class="secnum">14.4.9</span> SS: PropName</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-runtime-semantics-evaluatebody" title="Runtime Semantics: EvaluateBody"><span class="secnum">14.4.10</span> RS: EvaluateBody</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject" title="Runtime Semantics: InstantiateFunctionObject"><span class="secnum">14.4.11</span> RS: InstantiateFunctionObject</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation" title="Runtime Semantics: PropertyDefinitionEvaluation"><span class="secnum">14.4.12</span> RS: PropertyDefinitionEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-runtime-semantics-namedevaluation" title="Runtime Semantics: NamedEvaluation"><span class="secnum">14.4.13</span> RS: NamedEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator-function-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.4.14</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-async-generator-function-definitions" title="Async Generator Function Definitions"><span class="secnum">14.5</span> Async Generator Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-async-generator-function-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.5.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-generator-function-definitions-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">14.5.2</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-generator-function-definitions-static-semantics-computedpropertycontains" title="Static Semantics: ComputedPropertyContains"><span class="secnum">14.5.3</span> SS: ComputedPropertyContains</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-generator-function-definitions-static-semantics-contains" title="Static Semantics: Contains"><span class="secnum">14.5.4</span> SS: Contains</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-generator-function-definitions-static-semantics-hasdirectsuper" title="Static Semantics: HasDirectSuper"><span class="secnum">14.5.5</span> SS: HasDirectSuper</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-generator-function-definitions-static-semantics-hasname" title="Static Semantics: HasName"><span class="secnum">14.5.6</span> SS: HasName</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-generator-function-definitions-static-semantics-isconstantdeclaration" title="Static Semantics: IsConstantDeclaration"><span class="secnum">14.5.7</span> SS: IsConstantDeclaration</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-generator-function-definitions-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">14.5.8</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-generator-function-definitions-static-semantics-propname" title="Static Semantics: PropName"><span class="secnum">14.5.9</span> SS: PropName</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgenerator-definitions-evaluatebody" title="Runtime Semantics: EvaluateBody"><span class="secnum">14.5.10</span> RS: EvaluateBody</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgenerator-definitions-instantiatefunctionobject" title="Runtime Semantics: InstantiateFunctionObject"><span class="secnum">14.5.11</span> RS: InstantiateFunctionObject</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgenerator-definitions-propertydefinitionevaluation" title="Runtime Semantics: PropertyDefinitionEvaluation"><span class="secnum">14.5.12</span> RS: PropertyDefinitionEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgenerator-definitions-namedevaluation" title="Runtime Semantics: NamedEvaluation"><span class="secnum">14.5.13</span> RS: NamedEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgenerator-definitions-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.5.14</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-class-definitions" title="Class Definitions"><span class="secnum">14.6</span> Class Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-class-definitions-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="#sec-class-definitions-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">14.6.2</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-constructormethod" title="Static Semantics: ConstructorMethod"><span class="secnum">14.6.3</span> SS: ConstructorMethod</a></li><li><span class="item-toggle-none"></span><a href="#sec-class-definitions-static-semantics-contains" title="Static Semantics: Contains"><span class="secnum">14.6.4</span> SS: Contains</a></li><li><span class="item-toggle-none"></span><a href="#sec-class-definitions-static-semantics-computedpropertycontains" title="Static Semantics: ComputedPropertyContains"><span class="secnum">14.6.5</span> SS: ComputedPropertyContains</a></li><li><span class="item-toggle-none"></span><a href="#sec-class-definitions-static-semantics-hasname" title="Static Semantics: HasName"><span class="secnum">14.6.6</span> SS: HasName</a></li><li><span class="item-toggle-none"></span><a href="#sec-class-definitions-static-semantics-isconstantdeclaration" title="Static Semantics: IsConstantDeclaration"><span class="secnum">14.6.7</span> SS: IsConstantDeclaration</a></li><li><span class="item-toggle-none"></span><a href="#sec-class-definitions-static-semantics-isfunctiondefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">14.6.8</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-isstatic" title="Static Semantics: IsStatic"><span class="secnum">14.6.9</span> SS: IsStatic</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-nonconstructormethoddefinitions" title="Static Semantics: NonConstructorMethodDefinitions"><span class="secnum">14.6.10</span> SS: NonConstructorMethodDefinitions</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-prototypepropertynamelist" title="Static Semantics: PrototypePropertyNameList"><span class="secnum">14.6.11</span> SS: PrototypePropertyNameList</a></li><li><span class="item-toggle-none"></span><a href="#sec-class-definitions-static-semantics-propname" title="Static Semantics: PropName"><span class="secnum">14.6.12</span> SS: PropName</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-classdefinitionevaluation" title="Runtime Semantics: ClassDefinitionEvaluation"><span class="secnum">14.6.13</span> RS: ClassDefinitionEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-bindingclassdeclarationevaluation" title="Runtime Semantics: BindingClassDeclarationEvaluation"><span class="secnum">14.6.14</span> RS: BindingClassDeclarationEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-class-definitions-runtime-semantics-namedevaluation" title="Runtime Semantics: NamedEvaluation"><span class="secnum">14.6.15</span> RS: NamedEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-class-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.6.16</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-async-function-definitions" title="Async Function Definitions"><span class="secnum">14.7</span> Async Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">14.7.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-static-semantics-BoundNames" title="Static Semantics: BoundNames"><span class="secnum">14.7.2</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-static-semantics-ComputedPropertyContains" title="Static Semantics: ComputedPropertyContains"><span class="secnum">14.7.3</span> SS: ComputedPropertyContains</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-static-semantics-Contains" title="Static Semantics: Contains"><span class="secnum">14.7.4</span> SS: Contains</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-static-semantics-HasDirectSuper" title="Static Semantics: HasDirectSuper"><span class="secnum">14.7.5</span> SS: HasDirectSuper</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-static-semantics-HasName" title="Static Semantics: HasName"><span class="secnum">14.7.6</span> SS: HasName</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-static-semantics-IsConstantDeclaration" title="Static Semantics: IsConstantDeclaration"><span class="secnum">14.7.7</span> SS: IsConstantDeclaration</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-static-semantics-IsFunctionDefinition" title="Static Semantics: IsFunctionDefinition"><span class="secnum">14.7.8</span> SS: IsFunctionDefinition</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-static-semantics-PropName" title="Static Semantics: PropName"><span class="secnum">14.7.9</span> SS: PropName</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-InstantiateFunctionObject" title="Runtime Semantics: InstantiateFunctionObject"><span class="secnum">14.7.10</span> RS: InstantiateFunctionObject</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-EvaluateBody" title="Runtime Semantics: EvaluateBody"><span class="secnum">14.7.11</span> RS: EvaluateBody</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-PropertyDefinitionEvaluation" title="Runtime Semantics: PropertyDefinitionEvaluation"><span class="secnum">14.7.12</span> RS: PropertyDefinitionEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-runtime-semantics-namedevaluation" title="Runtime Semantics: NamedEvaluation"><span class="secnum">14.7.13</span> RS: NamedEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.7.14</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-async-arrow-function-definitions" title="Async Arrow Function Definitions"><span class="secnum">14.8</span> Async Arrow Function Definitions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-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="#sec-async-arrow-function-definitions-static-semantics-CoveredAsyncArrowHead" title="Static Semantics: CoveredAsyncArrowHead"><span class="secnum">14.8.2</span> SS: CoveredAsyncArrowHead</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-static-semantics-BoundNames" title="Static Semantics: BoundNames"><span class="secnum">14.8.3</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-static-semantics-Contains" title="Static Semantics: Contains"><span class="secnum">14.8.4</span> SS: Contains</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-static-semantics-ContainsExpression" title="Static Semantics: ContainsExpression"><span class="secnum">14.8.5</span> SS: ContainsExpression</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-static-semantics-ExpectedArgumentCount" title="Static Semantics: ExpectedArgumentCount"><span class="secnum">14.8.6</span> SS: ExpectedArgumentCount</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-static-semantics-HasName" title="Static Semantics: HasName"><span class="secnum">14.8.7</span> SS: HasName</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-static-semantics-IsSimpleParameterList" title="Static Semantics: IsSimpleParameterList"><span class="secnum">14.8.8</span> SS: IsSimpleParameterList</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-static-semantics-LexicallyDeclaredNames" title="Static Semantics: LexicallyDeclaredNames"><span class="secnum">14.8.9</span> SS: LexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-static-semantics-LexicallyScopedDeclarations" title="Static Semantics: LexicallyScopedDeclarations"><span class="secnum">14.8.10</span> SS: LexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-static-semantics-VarDeclaredNames" title="Static Semantics: VarDeclaredNames"><span class="secnum">14.8.11</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-static-semantics-VarScopedDeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">14.8.12</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-IteratorBindingInitialization" title="Runtime Semantics: IteratorBindingInitialization"><span class="secnum">14.8.13</span> RS: IteratorBindingInitialization</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-EvaluateBody" title="Runtime Semantics: EvaluateBody"><span class="secnum">14.8.14</span> RS: EvaluateBody</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-runtime-semantics-namedevaluation" title="Runtime Semantics: NamedEvaluation"><span class="secnum">14.8.15</span> RS: NamedEvaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-arrow-function-definitions-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">14.8.16</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-tail-position-calls" title="Tail Position Calls"><span class="secnum">14.9</span> Tail Position Calls</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-isintailposition" title="Static Semantics: IsInTailPosition ( call )"><span class="secnum">14.9.1</span> SS: IsInTailPosition ( <var>call</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-static-semantics-hascallintailposition" title="Static Semantics: HasCallInTailPosition"><span class="secnum">14.9.2</span> SS: HasCallInTailPosition</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-statement-rules" title="Statement Rules"><span class="secnum">14.9.2.1</span> Statement Rules</a></li><li><span class="item-toggle-none"></span><a href="#sec-expression-rules" title="Expression Rules"><span class="secnum">14.9.2.2</span> Expression Rules</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-preparefortailcall" title="Runtime Semantics: PrepareForTailCall ( )"><span class="secnum">14.9.3</span> RS: PrepareForTailCall ( )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-ecmascript-language-scripts-and-modules" title="ECMAScript Language: Scripts and Modules"><span class="secnum">15</span> ECMAScript Language: Scripts and Modules</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-scripts" title="Scripts"><span class="secnum">15.1</span> Scripts</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-scripts-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="#sec-static-semantics-isstrict" title="Static Semantics: IsStrict"><span class="secnum">15.1.2</span> SS: IsStrict</a></li><li><span class="item-toggle-none"></span><a href="#sec-scripts-static-semantics-lexicallydeclarednames" title="Static Semantics: LexicallyDeclaredNames"><span class="secnum">15.1.3</span> SS: LexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-scripts-static-semantics-lexicallyscopeddeclarations" title="Static Semantics: LexicallyScopedDeclarations"><span class="secnum">15.1.4</span> SS: LexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-scripts-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">15.1.5</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-scripts-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">15.1.6</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-script-semantics-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">15.1.7</span> RS: Evaluation</a></li><li><span class="item-toggle-none"></span><a href="#sec-script-records" title="Script Records"><span class="secnum">15.1.8</span> Script Records</a></li><li><span class="item-toggle-none"></span><a href="#sec-parse-script" title="ParseScript ( sourceText, realm, hostDefined )"><span class="secnum">15.1.9</span> ParseScript ( <var>sourceText</var>, <var>realm</var>, <var>hostDefined</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-scriptevaluation" title="ScriptEvaluation ( scriptRecord )"><span class="secnum">15.1.10</span> ScriptEvaluation ( <var>scriptRecord</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-globaldeclarationinstantiation" title="Runtime Semantics: GlobalDeclarationInstantiation ( script, env )"><span class="secnum">15.1.11</span> RS: GlobalDeclarationInstantiation ( <var>script</var>, <var>env</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-scriptevaluationjob" title="Runtime Semantics: ScriptEvaluationJob ( sourceText, hostDefined )"><span class="secnum">15.1.12</span> RS: ScriptEvaluationJob ( <var>sourceText</var>, <var>hostDefined</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-modules" title="Modules"><span class="secnum">15.2</span> Modules</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-module-semantics" title="Module Semantics"><span class="secnum">15.2.1</span> Module Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.2.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-containsduplicatelabels" title="Static Semantics: ContainsDuplicateLabels"><span class="secnum">15.2.1.2</span> SS: ContainsDuplicateLabels</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-containsundefinedbreaktarget" title="Static Semantics: ContainsUndefinedBreakTarget"><span class="secnum">15.2.1.3</span> SS: ContainsUndefinedBreakTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-containsundefinedcontinuetarget" title="Static Semantics: ContainsUndefinedContinueTarget"><span class="secnum">15.2.1.4</span> SS: ContainsUndefinedContinueTarget</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-exportedbindings" title="Static Semantics: ExportedBindings"><span class="secnum">15.2.1.5</span> SS: ExportedBindings</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-exportednames" title="Static Semantics: ExportedNames"><span class="secnum">15.2.1.6</span> SS: ExportedNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-exportentries" title="Static Semantics: ExportEntries"><span class="secnum">15.2.1.7</span> SS: ExportEntries</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-importentries" title="Static Semantics: ImportEntries"><span class="secnum">15.2.1.8</span> SS: ImportEntries</a></li><li><span class="item-toggle-none"></span><a href="#sec-importedlocalnames" title="Static Semantics: ImportedLocalNames ( importEntries )"><span class="secnum">15.2.1.9</span> SS: ImportedLocalNames ( <var>importEntries</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-modulerequests" title="Static Semantics: ModuleRequests"><span class="secnum">15.2.1.10</span> SS: ModuleRequests</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-lexicallydeclarednames" title="Static Semantics: LexicallyDeclaredNames"><span class="secnum">15.2.1.11</span> SS: LexicallyDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-lexicallyscopeddeclarations" title="Static Semantics: LexicallyScopedDeclarations"><span class="secnum">15.2.1.12</span> SS: LexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-vardeclarednames" title="Static Semantics: VarDeclaredNames"><span class="secnum">15.2.1.13</span> SS: VarDeclaredNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-static-semantics-varscopeddeclarations" title="Static Semantics: VarScopedDeclarations"><span class="secnum">15.2.1.14</span> SS: VarScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-abstract-module-records" title="Abstract Module Records"><span class="secnum">15.2.1.15</span> Abstract Module Records</a></li><li><span class="item-toggle">◢</span><a href="#sec-cyclic-module-records" title="Cyclic Module Records"><span class="secnum">15.2.1.16</span> Cyclic Module Records</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-moduledeclarationinstantiation" title="Instantiate ( ) Concrete Method"><span class="secnum">15.2.1.16.1</span> Instantiate ( ) Concrete Method</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-innermoduleinstantiation" title="InnerModuleInstantiation ( module, stack, index )"><span class="secnum">15.2.1.16.1.1</span> InnerModuleInstantiation ( <var>module</var>, <var>stack</var>, <var>index</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-moduleevaluation" title="Evaluate ( ) Concrete Method"><span class="secnum">15.2.1.16.2</span> Evaluate ( ) Concrete Method</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-innermoduleevaluation" title="InnerModuleEvaluation ( module, stack, index )"><span class="secnum">15.2.1.16.2.1</span> InnerModuleEvaluation ( <var>module</var>, <var>stack</var>, <var>index</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-example-cyclic-module-record-graphs" title="Example Cyclic Module Record Graphs"><span class="secnum">15.2.1.16.3</span> Example Cyclic Module Record Graphs</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-source-text-module-records" title="Source Text Module Records"><span class="secnum">15.2.1.17</span> Source Text Module Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-parsemodule" title="ParseModule ( sourceText, realm, hostDefined )"><span class="secnum">15.2.1.17.1</span> ParseModule ( <var>sourceText</var>, <var>realm</var>, <var>hostDefined</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getexportednames" title="GetExportedNames ( exportStarSet ) Concrete Method"><span class="secnum">15.2.1.17.2</span> GetExportedNames ( <var>exportStarSet</var> ) Concrete Method</a></li><li><span class="item-toggle-none"></span><a href="#sec-resolveexport" title="ResolveExport ( exportName, resolveSet ) Concrete Method"><span class="secnum">15.2.1.17.3</span> ResolveExport ( <var>exportName</var>, <var>resolveSet</var> ) Concrete Method</a></li><li><span class="item-toggle-none"></span><a href="#sec-source-text-module-record-initialize-environment" title="InitializeEnvironment ( ) Concrete Method"><span class="secnum">15.2.1.17.4</span> InitializeEnvironment ( ) Concrete Method</a></li><li><span class="item-toggle-none"></span><a href="#sec-source-text-module-record-execute-module" title="ExecuteModule ( ) Concrete Method"><span class="secnum">15.2.1.17.5</span> ExecuteModule ( ) Concrete Method</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-hostresolveimportedmodule" title="Runtime Semantics: HostResolveImportedModule ( referencingModule, specifier )"><span class="secnum">15.2.1.18</span> RS: HostResolveImportedModule ( <var>referencingModule</var>, <var>specifier</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getmodulenamespace" title="Runtime Semantics: GetModuleNamespace ( module )"><span class="secnum">15.2.1.19</span> RS: GetModuleNamespace ( <var>module</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-toplevelmoduleevaluationjob" title="Runtime Semantics: TopLevelModuleEvaluationJob ( sourceText, hostDefined )"><span class="secnum">15.2.1.20</span> RS: TopLevelModuleEvaluationJob ( <var>sourceText</var>, <var>hostDefined</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-module-semantics-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">15.2.1.21</span> RS: Evaluation</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-imports" title="Imports"><span class="secnum">15.2.2</span> Imports</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-imports-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.2.2.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-imports-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">15.2.2.2</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-imports-static-semantics-importentries" title="Static Semantics: ImportEntries"><span class="secnum">15.2.2.3</span> SS: ImportEntries</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-importentriesformodule" title="Static Semantics: ImportEntriesForModule"><span class="secnum">15.2.2.4</span> SS: ImportEntriesForModule</a></li><li><span class="item-toggle-none"></span><a href="#sec-imports-static-semantics-modulerequests" title="Static Semantics: ModuleRequests"><span class="secnum">15.2.2.5</span> SS: ModuleRequests</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-exports" title="Exports"><span class="secnum">15.2.3</span> Exports</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-exports-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">15.2.3.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-exports-static-semantics-boundnames" title="Static Semantics: BoundNames"><span class="secnum">15.2.3.2</span> SS: BoundNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-exports-static-semantics-exportedbindings" title="Static Semantics: ExportedBindings"><span class="secnum">15.2.3.3</span> SS: ExportedBindings</a></li><li><span class="item-toggle-none"></span><a href="#sec-exports-static-semantics-exportednames" title="Static Semantics: ExportedNames"><span class="secnum">15.2.3.4</span> SS: ExportedNames</a></li><li><span class="item-toggle-none"></span><a href="#sec-exports-static-semantics-exportentries" title="Static Semantics: ExportEntries"><span class="secnum">15.2.3.5</span> SS: ExportEntries</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-exportentriesformodule" title="Static Semantics: ExportEntriesForModule"><span class="secnum">15.2.3.6</span> SS: ExportEntriesForModule</a></li><li><span class="item-toggle-none"></span><a href="#sec-exports-static-semantics-isconstantdeclaration" title="Static Semantics: IsConstantDeclaration"><span class="secnum">15.2.3.7</span> SS: IsConstantDeclaration</a></li><li><span class="item-toggle-none"></span><a href="#sec-exports-static-semantics-lexicallyscopeddeclarations" title="Static Semantics: LexicallyScopedDeclarations"><span class="secnum">15.2.3.8</span> SS: LexicallyScopedDeclarations</a></li><li><span class="item-toggle-none"></span><a href="#sec-exports-static-semantics-modulerequests" title="Static Semantics: ModuleRequests"><span class="secnum">15.2.3.9</span> SS: ModuleRequests</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-referencedbindings" title="Static Semantics: ReferencedBindings"><span class="secnum">15.2.3.10</span> SS: ReferencedBindings</a></li><li><span class="item-toggle-none"></span><a href="#sec-exports-runtime-semantics-evaluation" title="Runtime Semantics: Evaluation"><span class="secnum">15.2.3.11</span> RS: Evaluation</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-error-handling-and-language-extensions" title="Error Handling and Language Extensions"><span class="secnum">16</span> Error Handling and Language Extensions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-host-report-errors" title="HostReportErrors ( errorList )"><span class="secnum">16.1</span> HostReportErrors ( <var>errorList</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-forbidden-extensions" title="Forbidden Extensions"><span class="secnum">16.2</span> Forbidden Extensions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-ecmascript-standard-built-in-objects" title="ECMAScript Standard Built-in Objects"><span class="secnum">17</span> ECMAScript Standard Built-in Objects</a></li><li><span class="item-toggle">◢</span><a href="#sec-global-object" title="The Global Object"><span class="secnum">18</span> The Global Object</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-value-properties-of-the-global-object" title="Value Properties of the Global Object"><span class="secnum">18.1</span> Value Properties of the Global Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-value-properties-of-the-global-object-infinity" title="Infinity"><span class="secnum">18.1.1</span> Infinity</a></li><li><span class="item-toggle-none"></span><a href="#sec-value-properties-of-the-global-object-nan" title="NaN"><span class="secnum">18.1.2</span> NaN</a></li><li><span class="item-toggle-none"></span><a href="#sec-undefined" title="undefined"><span class="secnum">18.1.3</span> undefined</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-function-properties-of-the-global-object" title="Function Properties of the Global Object"><span class="secnum">18.2</span> Function Properties of the Global Object</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-eval-x" title="eval ( x )"><span class="secnum">18.2.1</span> eval ( <var>x</var> )</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-performeval" title="Runtime Semantics: PerformEval ( x, evalRealm, strictCaller, direct )"><span class="secnum">18.2.1.1</span> RS: PerformEval ( <var>x</var>, <var>evalRealm</var>, <var>strictCaller</var>, <var>direct</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-performeval-rules-outside-functions" title="Additional Early Error Rules for Eval Outside Functions"><span class="secnum">18.2.1.1.1</span> Additional Early Error Rules for Eval Outside Functions</a></li><li><span class="item-toggle-none"></span><a href="#sec-performeval-rules-outside-methods" title="Additional Early Error Rules for Eval Outside Methods"><span class="secnum">18.2.1.1.2</span> Additional Early Error Rules for Eval Outside Methods</a></li><li><span class="item-toggle-none"></span><a href="#sec-performeval-rules-outside-constructors" title="Additional Early Error Rules for Eval Outside Constructor Methods"><span class="secnum">18.2.1.1.3</span> Additional Early Error Rules for Eval Outside Constructor Methods</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-hostensurecancompilestrings" title="HostEnsureCanCompileStrings ( callerRealm, calleeRealm )"><span class="secnum">18.2.1.2</span> HostEnsureCanCompileStrings ( <var>callerRealm</var>, <var>calleeRealm</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-evaldeclarationinstantiation" title="Runtime Semantics: EvalDeclarationInstantiation ( body, varEnv, lexEnv, strict )"><span class="secnum">18.2.1.3</span> RS: EvalDeclarationInstantiation ( <var>body</var>, <var>varEnv</var>, <var>lexEnv</var>, <var>strict</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-isfinite-number" title="isFinite ( number )"><span class="secnum">18.2.2</span> isFinite ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-isnan-number" title="isNaN ( number )"><span class="secnum">18.2.3</span> isNaN ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-parsefloat-string" title="parseFloat ( string )"><span class="secnum">18.2.4</span> parseFloat ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-parseint-string-radix" title="parseInt ( string, radix )"><span class="secnum">18.2.5</span> parseInt ( <var>string</var>, <var>radix</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-uri-handling-functions" title="URI Handling Functions"><span class="secnum">18.2.6</span> URI Handling Functions</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-uri-syntax-and-semantics" title="URI Syntax and Semantics"><span class="secnum">18.2.6.1</span> URI Syntax and Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-encode" title="Runtime Semantics: Encode ( string, unescapedSet )"><span class="secnum">18.2.6.1.1</span> RS: Encode ( <var>string</var>, <var>unescapedSet</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-decode" title="Runtime Semantics: Decode ( string, reservedSet )"><span class="secnum">18.2.6.1.2</span> RS: Decode ( <var>string</var>, <var>reservedSet</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-decodeuri-encodeduri" title="decodeURI ( encodedURI )"><span class="secnum">18.2.6.2</span> decodeURI ( <var>encodedURI</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-decodeuricomponent-encodeduricomponent" title="decodeURIComponent ( encodedURIComponent )"><span class="secnum">18.2.6.3</span> decodeURIComponent ( <var>encodedURIComponent</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-encodeuri-uri" title="encodeURI ( uri )"><span class="secnum">18.2.6.4</span> encodeURI ( <var>uri</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-encodeuricomponent-uricomponent" title="encodeURIComponent ( uriComponent )"><span class="secnum">18.2.6.5</span> encodeURIComponent ( <var>uriComponent</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-constructor-properties-of-the-global-object" title="Constructor Properties of the Global Object"><span class="secnum">18.3</span> Constructor Properties of the Global Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-array" title="Array ( . . . )"><span class="secnum">18.3.1</span> Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-arraybuffer" title="ArrayBuffer ( . . . )"><span class="secnum">18.3.2</span> ArrayBuffer ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-boolean" title="Boolean ( . . . )"><span class="secnum">18.3.3</span> Boolean ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-dataview" title="DataView ( . . . )"><span class="secnum">18.3.4</span> DataView ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-date" title="Date ( . . . )"><span class="secnum">18.3.5</span> Date ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-error" title="Error ( . . . )"><span class="secnum">18.3.6</span> Error ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-evalerror" title="EvalError ( . . . )"><span class="secnum">18.3.7</span> EvalError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-float32array" title="Float32Array ( . . . )"><span class="secnum">18.3.8</span> Float32Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-float64array" title="Float64Array ( . . . )"><span class="secnum">18.3.9</span> Float64Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-function" title="Function ( . . . )"><span class="secnum">18.3.10</span> Function ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-int8array" title="Int8Array ( . . . )"><span class="secnum">18.3.11</span> Int8Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-int16array" title="Int16Array ( . . . )"><span class="secnum">18.3.12</span> Int16Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-int32array" title="Int32Array ( . . . )"><span class="secnum">18.3.13</span> Int32Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-map" title="Map ( . . . )"><span class="secnum">18.3.14</span> Map ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-number" title="Number ( . . . )"><span class="secnum">18.3.15</span> Number ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-object" title="Object ( . . . )"><span class="secnum">18.3.16</span> Object ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-promise" title="Promise ( . . . )"><span class="secnum">18.3.17</span> Promise ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-proxy" title="Proxy ( . . . )"><span class="secnum">18.3.18</span> Proxy ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-rangeerror" title="RangeError ( . . . )"><span class="secnum">18.3.19</span> RangeError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-referenceerror" title="ReferenceError ( . . . )"><span class="secnum">18.3.20</span> ReferenceError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-regexp" title="RegExp ( . . . )"><span class="secnum">18.3.21</span> RegExp ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set" title="Set ( . . . )"><span class="secnum">18.3.22</span> Set ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-sharedarraybuffer" title="SharedArrayBuffer ( . . . )"><span class="secnum">18.3.23</span> SharedArrayBuffer ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-string" title="String ( . . . )"><span class="secnum">18.3.24</span> String ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-symbol" title="Symbol ( . . . )"><span class="secnum">18.3.25</span> Symbol ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-syntaxerror" title="SyntaxError ( . . . )"><span class="secnum">18.3.26</span> SyntaxError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-typeerror" title="TypeError ( . . . )"><span class="secnum">18.3.27</span> TypeError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-uint8array" title="Uint8Array ( . . . )"><span class="secnum">18.3.28</span> Uint8Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-uint8clampedarray" title="Uint8ClampedArray ( . . . )"><span class="secnum">18.3.29</span> Uint8ClampedArray ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-uint16array" title="Uint16Array ( . . . )"><span class="secnum">18.3.30</span> Uint16Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-uint32array" title="Uint32Array ( . . . )"><span class="secnum">18.3.31</span> Uint32Array ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-urierror" title="URIError ( . . . )"><span class="secnum">18.3.32</span> URIError ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-weakmap" title="WeakMap ( . . . )"><span class="secnum">18.3.33</span> WeakMap ( . . . )</a></li><li><span class="item-toggle-none"></span><a href="#sec-constructor-properties-of-the-global-object-weakset" title="WeakSet ( . . . )"><span class="secnum">18.3.34</span> WeakSet ( . . . )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-other-properties-of-the-global-object" title="Other Properties of the Global Object"><span class="secnum">18.4</span> Other Properties of the Global Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-atomics" title="Atomics"><span class="secnum">18.4.1</span> Atomics</a></li><li><span class="item-toggle-none"></span><a href="#sec-json" title="JSON"><span class="secnum">18.4.2</span> JSON</a></li><li><span class="item-toggle-none"></span><a href="#sec-math" title="Math"><span class="secnum">18.4.3</span> Math</a></li><li><span class="item-toggle-none"></span><a href="#sec-reflect" title="Reflect"><span class="secnum">18.4.4</span> Reflect</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-fundamental-objects" title="Fundamental Objects"><span class="secnum">19</span> Fundamental Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-object-objects" title="Object Objects"><span class="secnum">19.1</span> Object Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-object-constructor" title="The Object Constructor"><span class="secnum">19.1.1</span> The Object Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-object-value" title="Object ( [ value ] )"><span class="secnum">19.1.1.1</span> Object ( [ <var>value</var> ] )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-object-constructor" title="Properties of the Object Constructor"><span class="secnum">19.1.2</span> Properties of the Object Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-object.assign" title="Object.assign ( target, ...sources )"><span class="secnum">19.1.2.1</span> Object.assign ( <var>target</var>, ...<var>sources</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.create" title="Object.create ( O, Properties )"><span class="secnum">19.1.2.2</span> Object.create ( <var>O</var>, <var>Properties</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-object.defineproperties" title="Object.defineProperties ( O, Properties )"><span class="secnum">19.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="#sec-objectdefineproperties" title="Runtime Semantics: ObjectDefineProperties ( O, Properties )"><span class="secnum">19.1.2.3.1</span> RS: ObjectDefineProperties ( <var>O</var>, <var>Properties</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-object.defineproperty" title="Object.defineProperty ( O, P, Attributes )"><span class="secnum">19.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="#sec-object.entries" title="Object.entries ( O )"><span class="secnum">19.1.2.5</span> Object.entries ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.freeze" title="Object.freeze ( O )"><span class="secnum">19.1.2.6</span> Object.freeze ( <var>O</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-object.fromentries" title="Object.fromEntries ( iterable )"><span class="secnum">19.1.2.7</span> Object.fromEntries ( <var>iterable</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-create-data-property-on-object-functions" title="CreateDataPropertyOnObject Functions"><span class="secnum">19.1.2.7.1</span> CreateDataPropertyOnObject Functions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-object.getownpropertydescriptor" title="Object.getOwnPropertyDescriptor ( O, P )"><span class="secnum">19.1.2.8</span> Object.getOwnPropertyDescriptor ( <var>O</var>, <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.getownpropertydescriptors" title="Object.getOwnPropertyDescriptors ( O )"><span class="secnum">19.1.2.9</span> Object.getOwnPropertyDescriptors ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.getownpropertynames" title="Object.getOwnPropertyNames ( O )"><span class="secnum">19.1.2.10</span> Object.getOwnPropertyNames ( <var>O</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-object.getownpropertysymbols" title="Object.getOwnPropertySymbols ( O )"><span class="secnum">19.1.2.11</span> Object.getOwnPropertySymbols ( <var>O</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-getownpropertykeys" title="Runtime Semantics: GetOwnPropertyKeys ( O, type )"><span class="secnum">19.1.2.11.1</span> RS: GetOwnPropertyKeys ( <var>O</var>, <var>type</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-object.getprototypeof" title="Object.getPrototypeOf ( O )"><span class="secnum">19.1.2.12</span> Object.getPrototypeOf ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.is" title="Object.is ( value1, value2 )"><span class="secnum">19.1.2.13</span> Object.is ( <var>value1</var>, <var>value2</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.isextensible" title="Object.isExtensible ( O )"><span class="secnum">19.1.2.14</span> Object.isExtensible ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.isfrozen" title="Object.isFrozen ( O )"><span class="secnum">19.1.2.15</span> Object.isFrozen ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.issealed" title="Object.isSealed ( O )"><span class="secnum">19.1.2.16</span> Object.isSealed ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.keys" title="Object.keys ( O )"><span class="secnum">19.1.2.17</span> Object.keys ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.preventextensions" title="Object.preventExtensions ( O )"><span class="secnum">19.1.2.18</span> Object.preventExtensions ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype" title="Object.prototype"><span class="secnum">19.1.2.19</span> Object.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.seal" title="Object.seal ( O )"><span class="secnum">19.1.2.20</span> Object.seal ( <var>O</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.setprototypeof" title="Object.setPrototypeOf ( O, proto )"><span class="secnum">19.1.2.21</span> Object.setPrototypeOf ( <var>O</var>, <var>proto</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.values" title="Object.values ( O )"><span class="secnum">19.1.2.22</span> Object.values ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-object-prototype-object" title="Properties of the Object Prototype Object"><span class="secnum">19.1.3</span> Properties of the Object Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.constructor" title="Object.prototype.constructor"><span class="secnum">19.1.3.1</span> Object.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.hasownproperty" title="Object.prototype.hasOwnProperty ( V )"><span class="secnum">19.1.3.2</span> Object.prototype.hasOwnProperty ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.isprototypeof" title="Object.prototype.isPrototypeOf ( V )"><span class="secnum">19.1.3.3</span> Object.prototype.isPrototypeOf ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.propertyisenumerable" title="Object.prototype.propertyIsEnumerable ( V )"><span class="secnum">19.1.3.4</span> Object.prototype.propertyIsEnumerable ( <var>V</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.tolocalestring" title="Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">19.1.3.5</span> Object.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.tostring" title="Object.prototype.toString ( )"><span class="secnum">19.1.3.6</span> Object.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.valueof" title="Object.prototype.valueOf ( )"><span class="secnum">19.1.3.7</span> Object.prototype.valueOf ( )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-object-instances" title="Properties of Object Instances"><span class="secnum">19.1.4</span> Properties of Object Instances</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-function-objects" title="Function Objects"><span class="secnum">19.2</span> Function Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-function-constructor" title="The Function Constructor"><span class="secnum">19.2.1</span> The Function Constructor</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-function-p1-p2-pn-body" title="Function ( p1, p2, … , pn, body )"><span class="secnum">19.2.1.1</span> Function ( <var>p1</var>, <var>p2</var>, … , <var>pn</var>, <var>body</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-createdynamicfunction" title="Runtime Semantics: CreateDynamicFunction ( constructor, newTarget, kind, args )"><span class="secnum">19.2.1.1.1</span> RS: CreateDynamicFunction ( <var>constructor</var>, <var>newTarget</var>, <var>kind</var>, <var>args</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-function-constructor" title="Properties of the Function Constructor"><span class="secnum">19.2.2</span> Properties of the Function Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-function.length" title="Function.length"><span class="secnum">19.2.2.1</span> Function.length</a></li><li><span class="item-toggle-none"></span><a href="#sec-function.prototype" title="Function.prototype"><span class="secnum">19.2.2.2</span> Function.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-function-prototype-object" title="Properties of the Function Prototype Object"><span class="secnum">19.2.3</span> Properties of the Function Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-function.prototype.apply" title="Function.prototype.apply ( thisArg, argArray )"><span class="secnum">19.2.3.1</span> Function.prototype.apply ( <var>thisArg</var>, <var>argArray</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-function.prototype.bind" title="Function.prototype.bind ( thisArg, ...args )"><span class="secnum">19.2.3.2</span> Function.prototype.bind ( <var>thisArg</var>, ...<var>args</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-function.prototype.call" title="Function.prototype.call ( thisArg, ...args )"><span class="secnum">19.2.3.3</span> Function.prototype.call ( <var>thisArg</var>, ...<var>args</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-function.prototype.constructor" title="Function.prototype.constructor"><span class="secnum">19.2.3.4</span> Function.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-function.prototype.tostring" title="Function.prototype.toString ( )"><span class="secnum">19.2.3.5</span> Function.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-function.prototype-@@hasinstance" title="Function.prototype [ @@hasInstance ] ( V )"><span class="secnum">19.2.3.6</span> Function.prototype [ @@hasInstance ] ( <var>V</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-function-instances" title="Function Instances"><span class="secnum">19.2.4</span> Function Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-function-instances-length" title="length"><span class="secnum">19.2.4.1</span> length</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-instances-name" title="name"><span class="secnum">19.2.4.2</span> name</a></li><li><span class="item-toggle-none"></span><a href="#sec-function-instances-prototype" title="prototype"><span class="secnum">19.2.4.3</span> prototype</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-hosthassourcetextavailable" title="HostHasSourceTextAvailable ( func )"><span class="secnum">19.2.5</span> HostHasSourceTextAvailable ( <var>func</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-boolean-objects" title="Boolean Objects"><span class="secnum">19.3</span> Boolean Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-boolean-constructor" title="The Boolean Constructor"><span class="secnum">19.3.1</span> The Boolean Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-boolean-constructor-boolean-value" title="Boolean ( value )"><span class="secnum">19.3.1.1</span> Boolean ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-boolean-constructor" title="Properties of the Boolean Constructor"><span class="secnum">19.3.2</span> Properties of the Boolean Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-boolean.prototype" title="Boolean.prototype"><span class="secnum">19.3.2.1</span> Boolean.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-boolean-prototype-object" title="Properties of the Boolean Prototype Object"><span class="secnum">19.3.3</span> Properties of the Boolean Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-boolean.prototype.constructor" title="Boolean.prototype.constructor"><span class="secnum">19.3.3.1</span> Boolean.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-boolean.prototype.tostring" title="Boolean.prototype.toString ( )"><span class="secnum">19.3.3.2</span> Boolean.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-boolean.prototype.valueof" title="Boolean.prototype.valueOf ( )"><span class="secnum">19.3.3.3</span> Boolean.prototype.valueOf ( )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-boolean-instances" title="Properties of Boolean Instances"><span class="secnum">19.3.4</span> Properties of Boolean Instances</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-symbol-objects" title="Symbol Objects"><span class="secnum">19.4</span> Symbol Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-symbol-constructor" title="The Symbol Constructor"><span class="secnum">19.4.1</span> The Symbol Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-symbol-description" title="Symbol ( [ description ] )"><span class="secnum">19.4.1.1</span> Symbol ( [ <var>description</var> ] )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-symbol-constructor" title="Properties of the Symbol Constructor"><span class="secnum">19.4.2</span> Properties of the Symbol Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-symbol.asynciterator" title="Symbol.asyncIterator"><span class="secnum">19.4.2.1</span> Symbol.asyncIterator</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.for" title="Symbol.for ( key )"><span class="secnum">19.4.2.2</span> Symbol.for ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.hasinstance" title="Symbol.hasInstance"><span class="secnum">19.4.2.3</span> Symbol.hasInstance</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.isconcatspreadable" title="Symbol.isConcatSpreadable"><span class="secnum">19.4.2.4</span> Symbol.isConcatSpreadable</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.iterator" title="Symbol.iterator"><span class="secnum">19.4.2.5</span> Symbol.iterator</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.keyfor" title="Symbol.keyFor ( sym )"><span class="secnum">19.4.2.6</span> Symbol.keyFor ( <var>sym</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.match" title="Symbol.match"><span class="secnum">19.4.2.7</span> Symbol.match</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.prototype" title="Symbol.prototype"><span class="secnum">19.4.2.8</span> Symbol.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.replace" title="Symbol.replace"><span class="secnum">19.4.2.9</span> Symbol.replace</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.search" title="Symbol.search"><span class="secnum">19.4.2.10</span> Symbol.search</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.species" title="Symbol.species"><span class="secnum">19.4.2.11</span> Symbol.species</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.split" title="Symbol.split"><span class="secnum">19.4.2.12</span> Symbol.split</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.toprimitive" title="Symbol.toPrimitive"><span class="secnum">19.4.2.13</span> Symbol.toPrimitive</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.tostringtag" title="Symbol.toStringTag"><span class="secnum">19.4.2.14</span> Symbol.toStringTag</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.unscopables" title="Symbol.unscopables"><span class="secnum">19.4.2.15</span> Symbol.unscopables</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-symbol-prototype-object" title="Properties of the Symbol Prototype Object"><span class="secnum">19.4.3</span> Properties of the Symbol Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-symbol.prototype.constructor" title="Symbol.prototype.constructor"><span class="secnum">19.4.3.1</span> Symbol.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.prototype.description" title="get Symbol.prototype.description"><span class="secnum">19.4.3.2</span> get Symbol.prototype.description</a></li><li><span class="item-toggle">◢</span><a href="#sec-symbol.prototype.tostring" title="Symbol.prototype.toString ( )"><span class="secnum">19.4.3.3</span> Symbol.prototype.toString ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-symboldescriptivestring" title="Runtime Semantics: SymbolDescriptiveString ( sym )"><span class="secnum">19.4.3.3.1</span> RS: SymbolDescriptiveString ( <var>sym</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.prototype.valueof" title="Symbol.prototype.valueOf ( )"><span class="secnum">19.4.3.4</span> Symbol.prototype.valueOf ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.prototype-@@toprimitive" title="Symbol.prototype [ @@toPrimitive ] ( hint )"><span class="secnum">19.4.3.5</span> Symbol.prototype [ @@toPrimitive ] ( <var>hint</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-symbol.prototype-@@tostringtag" title="Symbol.prototype [ @@toStringTag ]"><span class="secnum">19.4.3.6</span> Symbol.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-symbol-instances" title="Properties of Symbol Instances"><span class="secnum">19.4.4</span> Properties of Symbol Instances</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-error-objects" title="Error Objects"><span class="secnum">19.5</span> Error Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-error-constructor" title="The Error Constructor"><span class="secnum">19.5.1</span> The Error Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-error-message" title="Error ( message )"><span class="secnum">19.5.1.1</span> Error ( <var>message</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-error-constructor" title="Properties of the Error Constructor"><span class="secnum">19.5.2</span> Properties of the Error Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-error.prototype" title="Error.prototype"><span class="secnum">19.5.2.1</span> Error.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-error-prototype-object" title="Properties of the Error Prototype Object"><span class="secnum">19.5.3</span> Properties of the Error Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-error.prototype.constructor" title="Error.prototype.constructor"><span class="secnum">19.5.3.1</span> Error.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-error.prototype.message" title="Error.prototype.message"><span class="secnum">19.5.3.2</span> Error.prototype.message</a></li><li><span class="item-toggle-none"></span><a href="#sec-error.prototype.name" title="Error.prototype.name"><span class="secnum">19.5.3.3</span> Error.prototype.name</a></li><li><span class="item-toggle-none"></span><a href="#sec-error.prototype.tostring" title="Error.prototype.toString ( )"><span class="secnum">19.5.3.4</span> Error.prototype.toString ( )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-error-instances" title="Properties of Error Instances"><span class="secnum">19.5.4</span> Properties of Error Instances</a></li><li><span class="item-toggle">◢</span><a href="#sec-native-error-types-used-in-this-standard" title="Native Error Types Used in This Standard"><span class="secnum">19.5.5</span> Native Error Types Used in This Standard</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-native-error-types-used-in-this-standard-evalerror" title="EvalError"><span class="secnum">19.5.5.1</span> EvalError</a></li><li><span class="item-toggle-none"></span><a href="#sec-native-error-types-used-in-this-standard-rangeerror" title="RangeError"><span class="secnum">19.5.5.2</span> RangeError</a></li><li><span class="item-toggle-none"></span><a href="#sec-native-error-types-used-in-this-standard-referenceerror" title="ReferenceError"><span class="secnum">19.5.5.3</span> ReferenceError</a></li><li><span class="item-toggle-none"></span><a href="#sec-native-error-types-used-in-this-standard-syntaxerror" title="SyntaxError"><span class="secnum">19.5.5.4</span> SyntaxError</a></li><li><span class="item-toggle-none"></span><a href="#sec-native-error-types-used-in-this-standard-typeerror" title="TypeError"><span class="secnum">19.5.5.5</span> TypeError</a></li><li><span class="item-toggle-none"></span><a href="#sec-native-error-types-used-in-this-standard-urierror" title="URIError"><span class="secnum">19.5.5.6</span> URIError</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-nativeerror-object-structure" title="NativeError Object Structure"><span class="secnum">19.5.6</span> <var>NativeError</var> Object Structure</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-nativeerror-constructors" title="The NativeError Constructors"><span class="secnum">19.5.6.1</span> The <var>NativeError</var> Constructors</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-nativeerror" title="NativeError ( message )"><span class="secnum">19.5.6.1.1</span> NativeError ( <var>message</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-nativeerror-constructors" title="Properties of the NativeError Constructors"><span class="secnum">19.5.6.2</span> Properties of the <var>NativeError</var> Constructors</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-nativeerror.prototype" title="NativeError.prototype"><span class="secnum">19.5.6.2.1</span> NativeError.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-nativeerror-prototype-objects" title="Properties of the NativeError Prototype Objects"><span class="secnum">19.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="#sec-nativeerror.prototype.constructor" title="NativeError.prototype.constructor"><span class="secnum">19.5.6.3.1</span> <var>NativeError</var>.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-nativeerror.prototype.message" title="NativeError.prototype.message"><span class="secnum">19.5.6.3.2</span> <var>NativeError</var>.prototype.message</a></li><li><span class="item-toggle-none"></span><a href="#sec-nativeerror.prototype.name" title="NativeError.prototype.name"><span class="secnum">19.5.6.3.3</span> <var>NativeError</var>.prototype.name</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-nativeerror-instances" title="Properties of NativeError Instances"><span class="secnum">19.5.6.4</span> Properties of <var>NativeError</var> Instances</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-numbers-and-dates" title="Numbers and Dates"><span class="secnum">20</span> Numbers and Dates</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-number-objects" title="Number Objects"><span class="secnum">20.1</span> Number Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-number-constructor" title="The Number Constructor"><span class="secnum">20.1.1</span> The Number Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-number-constructor-number-value" title="Number ( value )"><span class="secnum">20.1.1.1</span> Number ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-number-constructor" title="Properties of the Number Constructor"><span class="secnum">20.1.2</span> Properties of the Number Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-number.epsilon" title="Number.EPSILON"><span class="secnum">20.1.2.1</span> Number.EPSILON</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.isfinite" title="Number.isFinite ( number )"><span class="secnum">20.1.2.2</span> Number.isFinite ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.isinteger" title="Number.isInteger ( number )"><span class="secnum">20.1.2.3</span> Number.isInteger ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.isnan" title="Number.isNaN ( number )"><span class="secnum">20.1.2.4</span> Number.isNaN ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.issafeinteger" title="Number.isSafeInteger ( number )"><span class="secnum">20.1.2.5</span> Number.isSafeInteger ( <var>number</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.max_safe_integer" title="Number.MAX_SAFE_INTEGER"><span class="secnum">20.1.2.6</span> Number.MAX_SAFE_INTEGER</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.max_value" title="Number.MAX_VALUE"><span class="secnum">20.1.2.7</span> Number.MAX_VALUE</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.min_safe_integer" title="Number.MIN_SAFE_INTEGER"><span class="secnum">20.1.2.8</span> Number.MIN_SAFE_INTEGER</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.min_value" title="Number.MIN_VALUE"><span class="secnum">20.1.2.9</span> Number.MIN_VALUE</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.nan" title="Number.NaN"><span class="secnum">20.1.2.10</span> Number.NaN</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.negative_infinity" title="Number.NEGATIVE_INFINITY"><span class="secnum">20.1.2.11</span> Number.NEGATIVE_INFINITY</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.parsefloat" title="Number.parseFloat ( string )"><span class="secnum">20.1.2.12</span> Number.parseFloat ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.parseint" title="Number.parseInt ( string, radix )"><span class="secnum">20.1.2.13</span> Number.parseInt ( <var>string</var>, <var>radix</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.positive_infinity" title="Number.POSITIVE_INFINITY"><span class="secnum">20.1.2.14</span> Number.POSITIVE_INFINITY</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.prototype" title="Number.prototype"><span class="secnum">20.1.2.15</span> Number.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-number-prototype-object" title="Properties of the Number Prototype Object"><span class="secnum">20.1.3</span> Properties of the Number Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-number.prototype.constructor" title="Number.prototype.constructor"><span class="secnum">20.1.3.1</span> Number.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.prototype.toexponential" title="Number.prototype.toExponential ( fractionDigits )"><span class="secnum">20.1.3.2</span> Number.prototype.toExponential ( <var>fractionDigits</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.prototype.tofixed" title="Number.prototype.toFixed ( fractionDigits )"><span class="secnum">20.1.3.3</span> Number.prototype.toFixed ( <var>fractionDigits</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.prototype.tolocalestring" title="Number.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">20.1.3.4</span> Number.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.prototype.toprecision" title="Number.prototype.toPrecision ( precision )"><span class="secnum">20.1.3.5</span> Number.prototype.toPrecision ( <var>precision</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.prototype.tostring" title="Number.prototype.toString ( [ radix ] )"><span class="secnum">20.1.3.6</span> Number.prototype.toString ( [ <var>radix</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-number.prototype.valueof" title="Number.prototype.valueOf ( )"><span class="secnum">20.1.3.7</span> Number.prototype.valueOf ( )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-number-instances" title="Properties of Number Instances"><span class="secnum">20.1.4</span> Properties of Number Instances</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-math-object" title="The Math Object"><span class="secnum">20.2</span> The Math Object</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-value-properties-of-the-math-object" title="Value Properties of the Math Object"><span class="secnum">20.2.1</span> Value Properties of the Math Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-math.e" title="Math.E"><span class="secnum">20.2.1.1</span> Math.E</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.ln10" title="Math.LN10"><span class="secnum">20.2.1.2</span> Math.LN10</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.ln2" title="Math.LN2"><span class="secnum">20.2.1.3</span> Math.LN2</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.log10e" title="Math.LOG10E"><span class="secnum">20.2.1.4</span> Math.LOG10E</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.log2e" title="Math.LOG2E"><span class="secnum">20.2.1.5</span> Math.LOG2E</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.pi" title="Math.PI"><span class="secnum">20.2.1.6</span> Math.PI</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.sqrt1_2" title="Math.SQRT1_2"><span class="secnum">20.2.1.7</span> Math.SQRT1_2</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.sqrt2" title="Math.SQRT2"><span class="secnum">20.2.1.8</span> Math.SQRT2</a></li><li><span class="item-toggle-none"></span><a href="#sec-math-@@tostringtag" title="Math [ @@toStringTag ]"><span class="secnum">20.2.1.9</span> Math [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-function-properties-of-the-math-object" title="Function Properties of the Math Object"><span class="secnum">20.2.2</span> Function Properties of the Math Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-math.abs" title="Math.abs ( x )"><span class="secnum">20.2.2.1</span> Math.abs ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.acos" title="Math.acos ( x )"><span class="secnum">20.2.2.2</span> Math.acos ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.acosh" title="Math.acosh ( x )"><span class="secnum">20.2.2.3</span> Math.acosh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.asin" title="Math.asin ( x )"><span class="secnum">20.2.2.4</span> Math.asin ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.asinh" title="Math.asinh ( x )"><span class="secnum">20.2.2.5</span> Math.asinh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.atan" title="Math.atan ( x )"><span class="secnum">20.2.2.6</span> Math.atan ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.atanh" title="Math.atanh ( x )"><span class="secnum">20.2.2.7</span> Math.atanh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.atan2" title="Math.atan2 ( y, x )"><span class="secnum">20.2.2.8</span> Math.atan2 ( <var>y</var>, <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.cbrt" title="Math.cbrt ( x )"><span class="secnum">20.2.2.9</span> Math.cbrt ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.ceil" title="Math.ceil ( x )"><span class="secnum">20.2.2.10</span> Math.ceil ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.clz32" title="Math.clz32 ( x )"><span class="secnum">20.2.2.11</span> Math.clz32 ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.cos" title="Math.cos ( x )"><span class="secnum">20.2.2.12</span> Math.cos ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.cosh" title="Math.cosh ( x )"><span class="secnum">20.2.2.13</span> Math.cosh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.exp" title="Math.exp ( x )"><span class="secnum">20.2.2.14</span> Math.exp ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.expm1" title="Math.expm1 ( x )"><span class="secnum">20.2.2.15</span> Math.expm1 ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.floor" title="Math.floor ( x )"><span class="secnum">20.2.2.16</span> Math.floor ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.fround" title="Math.fround ( x )"><span class="secnum">20.2.2.17</span> Math.fround ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.hypot" title="Math.hypot ( value1, value2, ...values )"><span class="secnum">20.2.2.18</span> Math.hypot ( <var>value1</var>, <var>value2</var>, ...<var>values</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.imul" title="Math.imul ( x, y )"><span class="secnum">20.2.2.19</span> Math.imul ( <var>x</var>, <var>y</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.log" title="Math.log ( x )"><span class="secnum">20.2.2.20</span> Math.log ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.log1p" title="Math.log1p ( x )"><span class="secnum">20.2.2.21</span> Math.log1p ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.log10" title="Math.log10 ( x )"><span class="secnum">20.2.2.22</span> Math.log10 ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.log2" title="Math.log2 ( x )"><span class="secnum">20.2.2.23</span> Math.log2 ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.max" title="Math.max ( value1, value2, ...values )"><span class="secnum">20.2.2.24</span> Math.max ( <var>value1</var>, <var>value2</var>, ...<var>values</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.min" title="Math.min ( value1, value2, ...values )"><span class="secnum">20.2.2.25</span> Math.min ( <var>value1</var>, <var>value2</var>, ...<var>values</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.pow" title="Math.pow ( base, exponent )"><span class="secnum">20.2.2.26</span> Math.pow ( <var>base</var>, <var>exponent</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.random" title="Math.random ( )"><span class="secnum">20.2.2.27</span> Math.random ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.round" title="Math.round ( x )"><span class="secnum">20.2.2.28</span> Math.round ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.sign" title="Math.sign ( x )"><span class="secnum">20.2.2.29</span> Math.sign ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.sin" title="Math.sin ( x )"><span class="secnum">20.2.2.30</span> Math.sin ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.sinh" title="Math.sinh ( x )"><span class="secnum">20.2.2.31</span> Math.sinh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.sqrt" title="Math.sqrt ( x )"><span class="secnum">20.2.2.32</span> Math.sqrt ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.tan" title="Math.tan ( x )"><span class="secnum">20.2.2.33</span> Math.tan ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.tanh" title="Math.tanh ( x )"><span class="secnum">20.2.2.34</span> Math.tanh ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-math.trunc" title="Math.trunc ( x )"><span class="secnum">20.2.2.35</span> Math.trunc ( <var>x</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-date-objects" title="Date Objects"><span class="secnum">20.3</span> Date Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-overview-of-date-objects-and-definitions-of-abstract-operations" title="Overview of Date Objects and Definitions of Abstract Operations"><span class="secnum">20.3.1</span> Overview of Date Objects and Definitions of Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-time-values-and-time-range" title="Time Values and Time Range"><span class="secnum">20.3.1.1</span> Time Values and Time Range</a></li><li><span class="item-toggle-none"></span><a href="#sec-day-number-and-time-within-day" title="Day Number and Time within Day"><span class="secnum">20.3.1.2</span> Day Number and Time within Day</a></li><li><span class="item-toggle-none"></span><a href="#sec-year-number" title="Year Number"><span class="secnum">20.3.1.3</span> Year Number</a></li><li><span class="item-toggle-none"></span><a href="#sec-month-number" title="Month Number"><span class="secnum">20.3.1.4</span> Month Number</a></li><li><span class="item-toggle-none"></span><a href="#sec-date-number" title="Date Number"><span class="secnum">20.3.1.5</span> Date Number</a></li><li><span class="item-toggle-none"></span><a href="#sec-week-day" title="Week Day"><span class="secnum">20.3.1.6</span> Week Day</a></li><li><span class="item-toggle-none"></span><a href="#sec-local-time-zone-adjustment" title="LocalTZA ( t, isUTC )"><span class="secnum">20.3.1.7</span> LocalTZA ( <var>t</var>, <var>isUTC</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-localtime" title="LocalTime ( t )"><span class="secnum">20.3.1.8</span> LocalTime ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-utc-t" title="UTC ( t )"><span class="secnum">20.3.1.9</span> UTC ( <var>t</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-hours-minutes-second-and-milliseconds" title="Hours, Minutes, Second, and Milliseconds"><span class="secnum">20.3.1.10</span> Hours, Minutes, Second, and Milliseconds</a></li><li><span class="item-toggle-none"></span><a href="#sec-maketime" title="MakeTime ( hour, min, sec, ms )"><span class="secnum">20.3.1.11</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="#sec-makeday" title="MakeDay ( year, month, date )"><span class="secnum">20.3.1.12</span> MakeDay ( <var>year</var>, <var>month</var>, <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-makedate" title="MakeDate ( day, time )"><span class="secnum">20.3.1.13</span> MakeDate ( <var>day</var>, <var>time</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-timeclip" title="TimeClip ( time )"><span class="secnum">20.3.1.14</span> TimeClip ( <var>time</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-date-time-string-format" title="Date Time String Format"><span class="secnum">20.3.1.15</span> Date Time String Format</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-expanded-years" title="Expanded Years"><span class="secnum">20.3.1.15.1</span> Expanded Years</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-date-constructor" title="The Date Constructor"><span class="secnum">20.3.2</span> The Date Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-date-year-month-date-hours-minutes-seconds-ms" title="Date ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )"><span class="secnum">20.3.2.1</span> Date ( <var>year</var>, <var>month</var> [ , <var>date</var> [ , <var>hours</var> [ , <var>minutes</var> [ , <var>seconds</var> [ , <var>ms</var> ] ] ] ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date-value" title="Date ( value )"><span class="secnum">20.3.2.2</span> Date ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date-constructor-date" title="Date ( )"><span class="secnum">20.3.2.3</span> Date ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-date-constructor" title="Properties of the Date Constructor"><span class="secnum">20.3.3</span> Properties of the Date Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-date.now" title="Date.now ( )"><span class="secnum">20.3.3.1</span> Date.now ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.parse" title="Date.parse ( string )"><span class="secnum">20.3.3.2</span> Date.parse ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype" title="Date.prototype"><span class="secnum">20.3.3.3</span> Date.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.utc" title="Date.UTC ( year [ , month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] ] )"><span class="secnum">20.3.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="#sec-properties-of-the-date-prototype-object" title="Properties of the Date Prototype Object"><span class="secnum">20.3.4</span> Properties of the Date Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.constructor" title="Date.prototype.constructor"><span class="secnum">20.3.4.1</span> Date.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getdate" title="Date.prototype.getDate ( )"><span class="secnum">20.3.4.2</span> Date.prototype.getDate ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getday" title="Date.prototype.getDay ( )"><span class="secnum">20.3.4.3</span> Date.prototype.getDay ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getfullyear" title="Date.prototype.getFullYear ( )"><span class="secnum">20.3.4.4</span> Date.prototype.getFullYear ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.gethours" title="Date.prototype.getHours ( )"><span class="secnum">20.3.4.5</span> Date.prototype.getHours ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getmilliseconds" title="Date.prototype.getMilliseconds ( )"><span class="secnum">20.3.4.6</span> Date.prototype.getMilliseconds ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getminutes" title="Date.prototype.getMinutes ( )"><span class="secnum">20.3.4.7</span> Date.prototype.getMinutes ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getmonth" title="Date.prototype.getMonth ( )"><span class="secnum">20.3.4.8</span> Date.prototype.getMonth ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getseconds" title="Date.prototype.getSeconds ( )"><span class="secnum">20.3.4.9</span> Date.prototype.getSeconds ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.gettime" title="Date.prototype.getTime ( )"><span class="secnum">20.3.4.10</span> Date.prototype.getTime ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.gettimezoneoffset" title="Date.prototype.getTimezoneOffset ( )"><span class="secnum">20.3.4.11</span> Date.prototype.getTimezoneOffset ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getutcdate" title="Date.prototype.getUTCDate ( )"><span class="secnum">20.3.4.12</span> Date.prototype.getUTCDate ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getutcday" title="Date.prototype.getUTCDay ( )"><span class="secnum">20.3.4.13</span> Date.prototype.getUTCDay ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getutcfullyear" title="Date.prototype.getUTCFullYear ( )"><span class="secnum">20.3.4.14</span> Date.prototype.getUTCFullYear ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getutchours" title="Date.prototype.getUTCHours ( )"><span class="secnum">20.3.4.15</span> Date.prototype.getUTCHours ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getutcmilliseconds" title="Date.prototype.getUTCMilliseconds ( )"><span class="secnum">20.3.4.16</span> Date.prototype.getUTCMilliseconds ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getutcminutes" title="Date.prototype.getUTCMinutes ( )"><span class="secnum">20.3.4.17</span> Date.prototype.getUTCMinutes ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getutcmonth" title="Date.prototype.getUTCMonth ( )"><span class="secnum">20.3.4.18</span> Date.prototype.getUTCMonth ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getutcseconds" title="Date.prototype.getUTCSeconds ( )"><span class="secnum">20.3.4.19</span> Date.prototype.getUTCSeconds ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.setdate" title="Date.prototype.setDate ( date )"><span class="secnum">20.3.4.20</span> Date.prototype.setDate ( <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.setfullyear" title="Date.prototype.setFullYear ( year [ , month [ , date ] ] )"><span class="secnum">20.3.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="#sec-date.prototype.sethours" title="Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )"><span class="secnum">20.3.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="#sec-date.prototype.setmilliseconds" title="Date.prototype.setMilliseconds ( ms )"><span class="secnum">20.3.4.23</span> Date.prototype.setMilliseconds ( <var>ms</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.setminutes" title="Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )"><span class="secnum">20.3.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="#sec-date.prototype.setmonth" title="Date.prototype.setMonth ( month [ , date ] )"><span class="secnum">20.3.4.25</span> Date.prototype.setMonth ( <var>month</var> [ , <var>date</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.setseconds" title="Date.prototype.setSeconds ( sec [ , ms ] )"><span class="secnum">20.3.4.26</span> Date.prototype.setSeconds ( <var>sec</var> [ , <var>ms</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.settime" title="Date.prototype.setTime ( time )"><span class="secnum">20.3.4.27</span> Date.prototype.setTime ( <var>time</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.setutcdate" title="Date.prototype.setUTCDate ( date )"><span class="secnum">20.3.4.28</span> Date.prototype.setUTCDate ( <var>date</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.setutcfullyear" title="Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )"><span class="secnum">20.3.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="#sec-date.prototype.setutchours" title="Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )"><span class="secnum">20.3.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="#sec-date.prototype.setutcmilliseconds" title="Date.prototype.setUTCMilliseconds ( ms )"><span class="secnum">20.3.4.31</span> Date.prototype.setUTCMilliseconds ( <var>ms</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.setutcminutes" title="Date.prototype.setUTCMinutes ( min [ , sec [ , ms ] ] )"><span class="secnum">20.3.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="#sec-date.prototype.setutcmonth" title="Date.prototype.setUTCMonth ( month [ , date ] )"><span class="secnum">20.3.4.33</span> Date.prototype.setUTCMonth ( <var>month</var> [ , <var>date</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.setutcseconds" title="Date.prototype.setUTCSeconds ( sec [ , ms ] )"><span class="secnum">20.3.4.34</span> Date.prototype.setUTCSeconds ( <var>sec</var> [ , <var>ms</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.todatestring" title="Date.prototype.toDateString ( )"><span class="secnum">20.3.4.35</span> Date.prototype.toDateString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.toisostring" title="Date.prototype.toISOString ( )"><span class="secnum">20.3.4.36</span> Date.prototype.toISOString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.tojson" title="Date.prototype.toJSON ( key )"><span class="secnum">20.3.4.37</span> Date.prototype.toJSON ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.tolocaledatestring" title="Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">20.3.4.38</span> Date.prototype.toLocaleDateString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.tolocalestring" title="Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">20.3.4.39</span> Date.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.tolocaletimestring" title="Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">20.3.4.40</span> Date.prototype.toLocaleTimeString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle">◢</span><a href="#sec-date.prototype.tostring" title="Date.prototype.toString ( )"><span class="secnum">20.3.4.41</span> Date.prototype.toString ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-timestring" title="Runtime Semantics: TimeString ( tv )"><span class="secnum">20.3.4.41.1</span> RS: TimeString ( <var>tv</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-datestring" title="Runtime Semantics: DateString ( tv )"><span class="secnum">20.3.4.41.2</span> RS: DateString ( <var>tv</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-timezoneestring" title="Runtime Semantics: TimeZoneString ( tv )"><span class="secnum">20.3.4.41.3</span> RS: TimeZoneString ( <var>tv</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-todatestring" title="Runtime Semantics: ToDateString ( tv )"><span class="secnum">20.3.4.41.4</span> RS: ToDateString ( <var>tv</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.totimestring" title="Date.prototype.toTimeString ( )"><span class="secnum">20.3.4.42</span> Date.prototype.toTimeString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.toutcstring" title="Date.prototype.toUTCString ( )"><span class="secnum">20.3.4.43</span> Date.prototype.toUTCString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.valueof" title="Date.prototype.valueOf ( )"><span class="secnum">20.3.4.44</span> Date.prototype.valueOf ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype-@@toprimitive" title="Date.prototype [ @@toPrimitive ] ( hint )"><span class="secnum">20.3.4.45</span> Date.prototype [ @@toPrimitive ] ( <var>hint</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-date-instances" title="Properties of Date Instances"><span class="secnum">20.3.5</span> Properties of Date Instances</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-text-processing" title="Text Processing"><span class="secnum">21</span> Text Processing</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-string-objects" title="String Objects"><span class="secnum">21.1</span> String Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-string-constructor" title="The String Constructor"><span class="secnum">21.1.1</span> The String Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-string-constructor-string-value" title="String ( value )"><span class="secnum">21.1.1.1</span> String ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-string-constructor" title="Properties of the String Constructor"><span class="secnum">21.1.2</span> Properties of the String Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-string.fromcharcode" title="String.fromCharCode ( ...codeUnits )"><span class="secnum">21.1.2.1</span> String.fromCharCode ( ...<var>codeUnits</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.fromcodepoint" title="String.fromCodePoint ( ...codePoints )"><span class="secnum">21.1.2.2</span> String.fromCodePoint ( ...<var>codePoints</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype" title="String.prototype"><span class="secnum">21.1.2.3</span> String.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.raw" title="String.raw ( template, ...substitutions )"><span class="secnum">21.1.2.4</span> String.raw ( <var>template</var>, ...<var>substitutions</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-string-prototype-object" title="Properties of the String Prototype Object"><span class="secnum">21.1.3</span> Properties of the String Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.charat" title="String.prototype.charAt ( pos )"><span class="secnum">21.1.3.1</span> String.prototype.charAt ( <var>pos</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.charcodeat" title="String.prototype.charCodeAt ( pos )"><span class="secnum">21.1.3.2</span> String.prototype.charCodeAt ( <var>pos</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.codepointat" title="String.prototype.codePointAt ( pos )"><span class="secnum">21.1.3.3</span> String.prototype.codePointAt ( <var>pos</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.concat" title="String.prototype.concat ( ...args )"><span class="secnum">21.1.3.4</span> String.prototype.concat ( ...<var>args</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.constructor" title="String.prototype.constructor"><span class="secnum">21.1.3.5</span> String.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.endswith" title="String.prototype.endsWith ( searchString [ , endPosition ] )"><span class="secnum">21.1.3.6</span> String.prototype.endsWith ( <var>searchString</var> [ , <var>endPosition</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.includes" title="String.prototype.includes ( searchString [ , position ] )"><span class="secnum">21.1.3.7</span> String.prototype.includes ( <var>searchString</var> [ , <var>position</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.indexof" title="String.prototype.indexOf ( searchString [ , position ] )"><span class="secnum">21.1.3.8</span> String.prototype.indexOf ( <var>searchString</var> [ , <var>position</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.lastindexof" title="String.prototype.lastIndexOf ( searchString [ , position ] )"><span class="secnum">21.1.3.9</span> String.prototype.lastIndexOf ( <var>searchString</var> [ , <var>position</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.localecompare" title="String.prototype.localeCompare ( that [ , reserved1 [ , reserved2 ] ] )"><span class="secnum">21.1.3.10</span> String.prototype.localeCompare ( <var>that</var> [ , <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.match" title="String.prototype.match ( regexp )"><span class="secnum">21.1.3.11</span> String.prototype.match ( <var>regexp</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.normalize" title="String.prototype.normalize ( [ form ] )"><span class="secnum">21.1.3.12</span> String.prototype.normalize ( [ <var>form</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.padend" title="String.prototype.padEnd ( maxLength [ , fillString ] )"><span class="secnum">21.1.3.13</span> String.prototype.padEnd ( <var>maxLength</var> [ , <var>fillString</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.padstart" title="String.prototype.padStart ( maxLength [ , fillString ] )"><span class="secnum">21.1.3.14</span> String.prototype.padStart ( <var>maxLength</var> [ , <var>fillString</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.repeat" title="String.prototype.repeat ( count )"><span class="secnum">21.1.3.15</span> String.prototype.repeat ( <var>count</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-string.prototype.replace" title="String.prototype.replace ( searchValue, replaceValue )"><span class="secnum">21.1.3.16</span> String.prototype.replace ( <var>searchValue</var>, <var>replaceValue</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-getsubstitution" title="Runtime Semantics: GetSubstitution ( matched, str, position, captures, namedCaptures, replacement )"><span class="secnum">21.1.3.16.1</span> RS: GetSubstitution ( <var>matched</var>, <var>str</var>, <var>position</var>, <var>captures</var>, <var>namedCaptures</var>, <var>replacement</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.search" title="String.prototype.search ( regexp )"><span class="secnum">21.1.3.17</span> String.prototype.search ( <var>regexp</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.slice" title="String.prototype.slice ( start, end )"><span class="secnum">21.1.3.18</span> String.prototype.slice ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-string.prototype.split" title="String.prototype.split ( separator, limit )"><span class="secnum">21.1.3.19</span> String.prototype.split ( <var>separator</var>, <var>limit</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-splitmatch" title="Runtime Semantics: SplitMatch ( S, q, R )"><span class="secnum">21.1.3.19.1</span> RS: SplitMatch ( <var>S</var>, <var>q</var>, <var>R</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.startswith" title="String.prototype.startsWith ( searchString [ , position ] )"><span class="secnum">21.1.3.20</span> String.prototype.startsWith ( <var>searchString</var> [ , <var>position</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.substring" title="String.prototype.substring ( start, end )"><span class="secnum">21.1.3.21</span> String.prototype.substring ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.tolocalelowercase" title="String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">21.1.3.22</span> String.prototype.toLocaleLowerCase ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.tolocaleuppercase" title="String.prototype.toLocaleUpperCase ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">21.1.3.23</span> String.prototype.toLocaleUpperCase ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.tolowercase" title="String.prototype.toLowerCase ( )"><span class="secnum">21.1.3.24</span> String.prototype.toLowerCase ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.tostring" title="String.prototype.toString ( )"><span class="secnum">21.1.3.25</span> String.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.touppercase" title="String.prototype.toUpperCase ( )"><span class="secnum">21.1.3.26</span> String.prototype.toUpperCase ( )</a></li><li><span class="item-toggle">◢</span><a href="#sec-string.prototype.trim" title="String.prototype.trim ( )"><span class="secnum">21.1.3.27</span> String.prototype.trim ( )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-trimstring" title="Runtime Semantics: TrimString ( string, where )"><span class="secnum">21.1.3.27.1</span> RS: TrimString ( <var>string</var>, <var>where</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.trimend" title="String.prototype.trimEnd ( )"><span class="secnum">21.1.3.28</span> String.prototype.trimEnd ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.trimstart" title="String.prototype.trimStart ( )"><span class="secnum">21.1.3.29</span> String.prototype.trimStart ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.valueof" title="String.prototype.valueOf ( )"><span class="secnum">21.1.3.30</span> String.prototype.valueOf ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype-@@iterator" title="String.prototype [ @@iterator ] ( )"><span class="secnum">21.1.3.31</span> String.prototype [ @@iterator ] ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-string-instances" title="Properties of String Instances"><span class="secnum">21.1.4</span> Properties of String Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-properties-of-string-instances-length" title="length"><span class="secnum">21.1.4.1</span> length</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-string-iterator-objects" title="String Iterator Objects"><span class="secnum">21.1.5</span> String Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-createstringiterator" title="CreateStringIterator ( string )"><span class="secnum">21.1.5.1</span> CreateStringIterator ( <var>string</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-%stringiteratorprototype%-object" title="The %StringIteratorPrototype% Object"><span class="secnum">21.1.5.2</span> The %StringIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-%stringiteratorprototype%.next" title="%StringIteratorPrototype%.next ( )"><span class="secnum">21.1.5.2.1</span> %StringIteratorPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%stringiteratorprototype%-@@tostringtag" title="%StringIteratorPrototype% [ @@toStringTag ]"><span class="secnum">21.1.5.2.2</span> %StringIteratorPrototype% [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-string-iterator-instances" title="Properties of String Iterator Instances"><span class="secnum">21.1.5.3</span> Properties of String Iterator Instances</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-regexp-regular-expression-objects" title="RegExp (Regular Expression) Objects"><span class="secnum">21.2</span> RegExp (Regular Expression) Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-patterns" title="Patterns"><span class="secnum">21.2.1</span> Patterns</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-patterns-static-semantics-early-errors" title="Static Semantics: Early Errors"><span class="secnum">21.2.1.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-patterns-static-semantics-capturing-group-number" title="Static Semantics: CapturingGroupNumber"><span class="secnum">21.2.1.2</span> SS: CapturingGroupNumber</a></li><li><span class="item-toggle-none"></span><a href="#sec-patterns-static-semantics-is-character-class" title="Static Semantics: IsCharacterClass"><span class="secnum">21.2.1.3</span> SS: IsCharacterClass</a></li><li><span class="item-toggle-none"></span><a href="#sec-patterns-static-semantics-character-value" title="Static Semantics: CharacterValue"><span class="secnum">21.2.1.4</span> SS: CharacterValue</a></li><li><span class="item-toggle-none"></span><a href="#sec-static-semantics-sourcetext" title="Static Semantics: SourceText"><span class="secnum">21.2.1.5</span> SS: SourceText</a></li><li><span class="item-toggle-none"></span><a href="#sec-regexp-identifier-names-static-semantics-stringvalue" title="Static Semantics: StringValue"><span class="secnum">21.2.1.6</span> SS: StringValue</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-pattern-semantics" title="Pattern Semantics"><span class="secnum">21.2.2</span> Pattern Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-notation" title="Notation"><span class="secnum">21.2.2.1</span> Notation</a></li><li><span class="item-toggle-none"></span><a href="#sec-pattern" title="Pattern"><span class="secnum">21.2.2.2</span> Pattern</a></li><li><span class="item-toggle-none"></span><a href="#sec-disjunction" title="Disjunction"><span class="secnum">21.2.2.3</span> Disjunction</a></li><li><span class="item-toggle-none"></span><a href="#sec-alternative" title="Alternative"><span class="secnum">21.2.2.4</span> Alternative</a></li><li><span class="item-toggle">◢</span><a href="#sec-term" title="Term"><span class="secnum">21.2.2.5</span> Term</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-repeatmatcher-abstract-operation" title="Runtime Semantics: RepeatMatcher ( m, min, max, greedy, x, c, parenIndex, parenCount )"><span class="secnum">21.2.2.5.1</span> RS: 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></ol></li><li><span class="item-toggle">◢</span><a href="#sec-assertion" title="Assertion"><span class="secnum">21.2.2.6</span> Assertion</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-wordcharacters-abstract-operation" title="Runtime Semantics: WordCharacters ( )"><span class="secnum">21.2.2.6.1</span> RS: WordCharacters ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-iswordchar-abstract-operation" title="Runtime Semantics: IsWordChar ( e )"><span class="secnum">21.2.2.6.2</span> RS: IsWordChar ( <var>e</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-quantifier" title="Quantifier"><span class="secnum">21.2.2.7</span> Quantifier</a></li><li><span class="item-toggle">◢</span><a href="#sec-atom" title="Atom"><span class="secnum">21.2.2.8</span> Atom</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-charactersetmatcher-abstract-operation" title="Runtime Semantics: CharacterSetMatcher ( A, invert, direction )"><span class="secnum">21.2.2.8.1</span> RS: CharacterSetMatcher ( <var>A</var>, <var>invert</var>, <var>direction</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-canonicalize-ch" title="Runtime Semantics: Canonicalize ( ch )"><span class="secnum">21.2.2.8.2</span> RS: Canonicalize ( <var>ch</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-unicodematchproperty-p" title="Runtime Semantics: UnicodeMatchProperty ( p )"><span class="secnum">21.2.2.8.3</span> RS: UnicodeMatchProperty ( <var>p</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-unicodematchpropertyvalue-p-v" title="Runtime Semantics: UnicodeMatchPropertyValue ( p, v )"><span class="secnum">21.2.2.8.4</span> RS: UnicodeMatchPropertyValue ( <var>p</var>, <var>v</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-atomescape" title="AtomEscape"><span class="secnum">21.2.2.9</span> AtomEscape</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-backreference-matcher" title="Runtime Semantics: BackreferenceMatcher ( n, direction )"><span class="secnum">21.2.2.9.1</span> RS: BackreferenceMatcher ( <var>n</var>, <var>direction</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-characterescape" title="CharacterEscape"><span class="secnum">21.2.2.10</span> CharacterEscape</a></li><li><span class="item-toggle-none"></span><a href="#sec-decimalescape" title="DecimalEscape"><span class="secnum">21.2.2.11</span> DecimalEscape</a></li><li><span class="item-toggle-none"></span><a href="#sec-characterclassescape" title="CharacterClassEscape"><span class="secnum">21.2.2.12</span> CharacterClassEscape</a></li><li><span class="item-toggle-none"></span><a href="#sec-characterclass" title="CharacterClass"><span class="secnum">21.2.2.13</span> CharacterClass</a></li><li><span class="item-toggle-none"></span><a href="#sec-classranges" title="ClassRanges"><span class="secnum">21.2.2.14</span> ClassRanges</a></li><li><span class="item-toggle">◢</span><a href="#sec-nonemptyclassranges" title="NonemptyClassRanges"><span class="secnum">21.2.2.15</span> NonemptyClassRanges</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-characterrange-abstract-operation" title="Runtime Semantics: CharacterRange ( A, B )"><span class="secnum">21.2.2.15.1</span> RS: CharacterRange ( <var>A</var>, <var>B</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-nonemptyclassrangesnodash" title="NonemptyClassRangesNoDash"><span class="secnum">21.2.2.16</span> NonemptyClassRangesNoDash</a></li><li><span class="item-toggle-none"></span><a href="#sec-classatom" title="ClassAtom"><span class="secnum">21.2.2.17</span> ClassAtom</a></li><li><span class="item-toggle-none"></span><a href="#sec-classatomnodash" title="ClassAtomNoDash"><span class="secnum">21.2.2.18</span> ClassAtomNoDash</a></li><li><span class="item-toggle-none"></span><a href="#sec-classescape" title="ClassEscape"><span class="secnum">21.2.2.19</span> ClassEscape</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-regexp-constructor" title="The RegExp Constructor"><span class="secnum">21.2.3</span> The RegExp Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-regexp-pattern-flags" title="RegExp ( pattern, flags )"><span class="secnum">21.2.3.1</span> RegExp ( <var>pattern</var>, <var>flags</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-abstract-operations-for-the-regexp-constructor" title="Abstract Operations for the RegExp Constructor"><span class="secnum">21.2.3.2</span> Abstract Operations for the RegExp Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-regexpalloc" title="Runtime Semantics: RegExpAlloc ( newTarget )"><span class="secnum">21.2.3.2.1</span> RS: RegExpAlloc ( <var>newTarget</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-regexpinitialize" title="Runtime Semantics: RegExpInitialize ( obj, pattern, flags )"><span class="secnum">21.2.3.2.2</span> RS: RegExpInitialize ( <var>obj</var>, <var>pattern</var>, <var>flags</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-regexpcreate" title="Runtime Semantics: RegExpCreate ( P, F )"><span class="secnum">21.2.3.2.3</span> RS: RegExpCreate ( <var>P</var>, <var>F</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-escaperegexppattern" title="Runtime Semantics: EscapeRegExpPattern ( P, F )"><span class="secnum">21.2.3.2.4</span> RS: EscapeRegExpPattern ( <var>P</var>, <var>F</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-regexp-constructor" title="Properties of the RegExp Constructor"><span class="secnum">21.2.4</span> Properties of the RegExp Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-regexp.prototype" title="RegExp.prototype"><span class="secnum">21.2.4.1</span> RegExp.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-regexp-@@species" title="get RegExp [ @@species ]"><span class="secnum">21.2.4.2</span> get RegExp [ @@species ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-regexp-prototype-object" title="Properties of the RegExp Prototype Object"><span class="secnum">21.2.5</span> Properties of the RegExp Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-regexp.prototype.constructor" title="RegExp.prototype.constructor"><span class="secnum">21.2.5.1</span> RegExp.prototype.constructor</a></li><li><span class="item-toggle">◢</span><a href="#sec-regexp.prototype.exec" title="RegExp.prototype.exec ( string )"><span class="secnum">21.2.5.2</span> RegExp.prototype.exec ( <var>string</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-regexpexec" title="Runtime Semantics: RegExpExec ( R, S )"><span class="secnum">21.2.5.2.1</span> RS: RegExpExec ( <var>R</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-regexpbuiltinexec" title="Runtime Semantics: RegExpBuiltinExec ( R, S )"><span class="secnum">21.2.5.2.2</span> RS: RegExpBuiltinExec ( <var>R</var>, <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-advancestringindex" title="AdvanceStringIndex ( S, index, unicode )"><span class="secnum">21.2.5.2.3</span> AdvanceStringIndex ( <var>S</var>, <var>index</var>, <var>unicode</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-get-regexp.prototype.dotAll" title="get RegExp.prototype.dotAll"><span class="secnum">21.2.5.3</span> get RegExp.prototype.dotAll</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-regexp.prototype.flags" title="get RegExp.prototype.flags"><span class="secnum">21.2.5.4</span> get RegExp.prototype.flags</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-regexp.prototype.global" title="get RegExp.prototype.global"><span class="secnum">21.2.5.5</span> get RegExp.prototype.global</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-regexp.prototype.ignorecase" title="get RegExp.prototype.ignoreCase"><span class="secnum">21.2.5.6</span> get RegExp.prototype.ignoreCase</a></li><li><span class="item-toggle-none"></span><a href="#sec-regexp.prototype-@@match" title="RegExp.prototype [ @@match ] ( string )"><span class="secnum">21.2.5.7</span> RegExp.prototype [ @@match ] ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-regexp.prototype.multiline" title="get RegExp.prototype.multiline"><span class="secnum">21.2.5.8</span> get RegExp.prototype.multiline</a></li><li><span class="item-toggle-none"></span><a href="#sec-regexp.prototype-@@replace" title="RegExp.prototype [ @@replace ] ( string, replaceValue )"><span class="secnum">21.2.5.9</span> RegExp.prototype [ @@replace ] ( <var>string</var>, <var>replaceValue</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-regexp.prototype-@@search" title="RegExp.prototype [ @@search ] ( string )"><span class="secnum">21.2.5.10</span> RegExp.prototype [ @@search ] ( <var>string</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-regexp.prototype.source" title="get RegExp.prototype.source"><span class="secnum">21.2.5.11</span> get RegExp.prototype.source</a></li><li><span class="item-toggle-none"></span><a href="#sec-regexp.prototype-@@split" title="RegExp.prototype [ @@split ] ( string, limit )"><span class="secnum">21.2.5.12</span> RegExp.prototype [ @@split ] ( <var>string</var>, <var>limit</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-regexp.prototype.sticky" title="get RegExp.prototype.sticky"><span class="secnum">21.2.5.13</span> get RegExp.prototype.sticky</a></li><li><span class="item-toggle-none"></span><a href="#sec-regexp.prototype.test" title="RegExp.prototype.test ( S )"><span class="secnum">21.2.5.14</span> RegExp.prototype.test ( <var>S</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-regexp.prototype.tostring" title="RegExp.prototype.toString ( )"><span class="secnum">21.2.5.15</span> RegExp.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-regexp.prototype.unicode" title="get RegExp.prototype.unicode"><span class="secnum">21.2.5.16</span> get RegExp.prototype.unicode</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-regexp-instances" title="Properties of RegExp Instances"><span class="secnum">21.2.6</span> Properties of RegExp Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-lastindex" title="lastIndex"><span class="secnum">21.2.6.1</span> lastIndex</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-indexed-collections" title="Indexed Collections"><span class="secnum">22</span> Indexed Collections</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-array-objects" title="Array Objects"><span class="secnum">22.1</span> Array Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-array-constructor" title="The Array Constructor"><span class="secnum">22.1.1</span> The Array Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-array-constructor-array" title="Array ( )"><span class="secnum">22.1.1.1</span> Array ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array-len" title="Array ( len )"><span class="secnum">22.1.1.2</span> Array ( <var>len</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array-items" title="Array ( ...items )"><span class="secnum">22.1.1.3</span> Array ( ...<var>items</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-array-constructor" title="Properties of the Array Constructor"><span class="secnum">22.1.2</span> Properties of the Array Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-array.from" title="Array.from ( items [ , mapfn [ , thisArg ] ] )"><span class="secnum">22.1.2.1</span> Array.from ( <var>items</var> [ , <var>mapfn</var> [ , <var>thisArg</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.isarray" title="Array.isArray ( arg )"><span class="secnum">22.1.2.2</span> Array.isArray ( <var>arg</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.of" title="Array.of ( ...items )"><span class="secnum">22.1.2.3</span> Array.of ( ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype" title="Array.prototype"><span class="secnum">22.1.2.4</span> Array.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-array-@@species" title="get Array [ @@species ]"><span class="secnum">22.1.2.5</span> get Array [ @@species ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-array-prototype-object" title="Properties of the Array Prototype Object"><span class="secnum">22.1.3</span> Properties of the Array Prototype Object</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-array.prototype.concat" title="Array.prototype.concat ( ...arguments )"><span class="secnum">22.1.3.1</span> Array.prototype.concat ( ...<var>arguments</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-isconcatspreadable" title="Runtime Semantics: IsConcatSpreadable ( O )"><span class="secnum">22.1.3.1.1</span> RS: IsConcatSpreadable ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.constructor" title="Array.prototype.constructor"><span class="secnum">22.1.3.2</span> Array.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.copywithin" title="Array.prototype.copyWithin ( target, start [ , end ] )"><span class="secnum">22.1.3.3</span> Array.prototype.copyWithin ( <var>target</var>, <var>start</var> [ , <var>end</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.entries" title="Array.prototype.entries ( )"><span class="secnum">22.1.3.4</span> Array.prototype.entries ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.every" title="Array.prototype.every ( callbackfn [ , thisArg ] )"><span class="secnum">22.1.3.5</span> Array.prototype.every ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.fill" title="Array.prototype.fill ( value [ , start [ , end ] ] )"><span class="secnum">22.1.3.6</span> Array.prototype.fill ( <var>value</var> [ , <var>start</var> [ , <var>end</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.filter" title="Array.prototype.filter ( callbackfn [ , thisArg ] )"><span class="secnum">22.1.3.7</span> Array.prototype.filter ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.find" title="Array.prototype.find ( predicate [ , thisArg ] )"><span class="secnum">22.1.3.8</span> Array.prototype.find ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.findindex" title="Array.prototype.findIndex ( predicate [ , thisArg ] )"><span class="secnum">22.1.3.9</span> Array.prototype.findIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle">◢</span><a href="#sec-array.prototype.flat" title="Array.prototype.flat( [ depth ] )"><span class="secnum">22.1.3.10</span> Array.prototype.flat( [ <var>depth</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-flattenintoarray" title="FlattenIntoArray(target, source, sourceLen, start, depth [ , mapperFunction, thisArg ])"><span class="secnum">22.1.3.10.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="#sec-array.prototype.flatmap" title="Array.prototype.flatMap ( mapperFunction [ , thisArg ] )"><span class="secnum">22.1.3.11</span> Array.prototype.flatMap ( <var>mapperFunction</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.foreach" title="Array.prototype.forEach ( callbackfn [ , thisArg ] )"><span class="secnum">22.1.3.12</span> Array.prototype.forEach ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.includes" title="Array.prototype.includes ( searchElement [ , fromIndex ] )"><span class="secnum">22.1.3.13</span> Array.prototype.includes ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.indexof" title="Array.prototype.indexOf ( searchElement [ , fromIndex ] )"><span class="secnum">22.1.3.14</span> Array.prototype.indexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.join" title="Array.prototype.join ( separator )"><span class="secnum">22.1.3.15</span> Array.prototype.join ( <var>separator</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.keys" title="Array.prototype.keys ( )"><span class="secnum">22.1.3.16</span> Array.prototype.keys ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.lastindexof" title="Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )"><span class="secnum">22.1.3.17</span> Array.prototype.lastIndexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.map" title="Array.prototype.map ( callbackfn [ , thisArg ] )"><span class="secnum">22.1.3.18</span> Array.prototype.map ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.pop" title="Array.prototype.pop ( )"><span class="secnum">22.1.3.19</span> Array.prototype.pop ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.push" title="Array.prototype.push ( ...items )"><span class="secnum">22.1.3.20</span> Array.prototype.push ( ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.reduce" title="Array.prototype.reduce ( callbackfn [ , initialValue ] )"><span class="secnum">22.1.3.21</span> Array.prototype.reduce ( <var>callbackfn</var> [ , <var>initialValue</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.reduceright" title="Array.prototype.reduceRight ( callbackfn [ , initialValue ] )"><span class="secnum">22.1.3.22</span> Array.prototype.reduceRight ( <var>callbackfn</var> [ , <var>initialValue</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.reverse" title="Array.prototype.reverse ( )"><span class="secnum">22.1.3.23</span> Array.prototype.reverse ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.shift" title="Array.prototype.shift ( )"><span class="secnum">22.1.3.24</span> Array.prototype.shift ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.slice" title="Array.prototype.slice ( start, end )"><span class="secnum">22.1.3.25</span> Array.prototype.slice ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.some" title="Array.prototype.some ( callbackfn [ , thisArg ] )"><span class="secnum">22.1.3.26</span> Array.prototype.some ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle">◢</span><a href="#sec-array.prototype.sort" title="Array.prototype.sort ( comparefn )"><span class="secnum">22.1.3.27</span> Array.prototype.sort ( <var>comparefn</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-sortcompare" title="Runtime Semantics: SortCompare ( x, y )"><span class="secnum">22.1.3.27.1</span> RS: SortCompare ( <var>x</var>, <var>y</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.splice" title="Array.prototype.splice ( start, deleteCount, ...items )"><span class="secnum">22.1.3.28</span> Array.prototype.splice ( <var>start</var>, <var>deleteCount</var>, ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.tolocalestring" title="Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">22.1.3.29</span> Array.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.tostring" title="Array.prototype.toString ( )"><span class="secnum">22.1.3.30</span> Array.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.unshift" title="Array.prototype.unshift ( ...items )"><span class="secnum">22.1.3.31</span> Array.prototype.unshift ( ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype.values" title="Array.prototype.values ( )"><span class="secnum">22.1.3.32</span> Array.prototype.values ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype-@@iterator" title="Array.prototype [ @@iterator ] ( )"><span class="secnum">22.1.3.33</span> Array.prototype [ @@iterator ] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-array.prototype-@@unscopables" title="Array.prototype [ @@unscopables ]"><span class="secnum">22.1.3.34</span> Array.prototype [ @@unscopables ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-array-instances" title="Properties of Array Instances"><span class="secnum">22.1.4</span> Properties of Array Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-properties-of-array-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="#sec-array-iterator-objects" title="Array Iterator Objects"><span class="secnum">22.1.5</span> Array Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-createarrayiterator" title="CreateArrayIterator ( array, kind )"><span class="secnum">22.1.5.1</span> CreateArrayIterator ( <var>array</var>, <var>kind</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-%arrayiteratorprototype%-object" title="The %ArrayIteratorPrototype% Object"><span class="secnum">22.1.5.2</span> The %ArrayIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-%arrayiteratorprototype%.next" title="%ArrayIteratorPrototype%.next ( )"><span class="secnum">22.1.5.2.1</span> %ArrayIteratorPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%arrayiteratorprototype%-@@tostringtag" title="%ArrayIteratorPrototype% [ @@toStringTag ]"><span class="secnum">22.1.5.2.2</span> %ArrayIteratorPrototype% [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-array-iterator-instances" title="Properties of Array Iterator Instances"><span class="secnum">22.1.5.3</span> Properties of Array Iterator Instances</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-typedarray-objects" title="TypedArray Objects"><span class="secnum">22.2</span> TypedArray Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-%typedarray%-intrinsic-object" title="The %TypedArray% Intrinsic Object"><span class="secnum">22.2.1</span> The %TypedArray% Intrinsic Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%" title="%TypedArray% ( )"><span class="secnum">22.2.1.1</span> %TypedArray% ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-%typedarray%-intrinsic-object" title="Properties of the %TypedArray% Intrinsic Object"><span class="secnum">22.2.2</span> Properties of the %TypedArray% Intrinsic Object</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-%typedarray%.from" title="%TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )"><span class="secnum">22.2.2.1</span> %TypedArray%.from ( <var>source</var> [ , <var>mapfn</var> [ , <var>thisArg</var> ] ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-iterabletolist" title="Runtime Semantics: IterableToList ( items, method )"><span class="secnum">22.2.2.1.1</span> RS: IterableToList ( <var>items</var>, <var>method</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.of" title="%TypedArray%.of ( ...items )"><span class="secnum">22.2.2.2</span> %TypedArray%.of ( ...<var>items</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype" title="%TypedArray%.prototype"><span class="secnum">22.2.2.3</span> %TypedArray%.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-%typedarray%-@@species" title="get %TypedArray% [ @@species ]"><span class="secnum">22.2.2.4</span> get %TypedArray% [ @@species ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-%typedarrayprototype%-object" title="Properties of the %TypedArrayPrototype% Object"><span class="secnum">22.2.3</span> Properties of the %TypedArrayPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-get-%typedarray%.prototype.buffer" title="get %TypedArray%.prototype.buffer"><span class="secnum">22.2.3.1</span> get %TypedArray%.prototype.buffer</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-%typedarray%.prototype.bytelength" title="get %TypedArray%.prototype.byteLength"><span class="secnum">22.2.3.2</span> get %TypedArray%.prototype.byteLength</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-%typedarray%.prototype.byteoffset" title="get %TypedArray%.prototype.byteOffset"><span class="secnum">22.2.3.3</span> get %TypedArray%.prototype.byteOffset</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.constructor" title="%TypedArray%.prototype.constructor"><span class="secnum">22.2.3.4</span> %TypedArray%.prototype.constructor</a></li><li><span class="item-toggle">◢</span><a href="#sec-%typedarray%.prototype.copywithin" title="%TypedArray%.prototype.copyWithin ( target, start [ , end ] )"><span class="secnum">22.2.3.5</span> %TypedArray%.prototype.copyWithin ( <var>target</var>, <var>start</var> [ , <var>end</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-validatetypedarray" title="Runtime Semantics: ValidateTypedArray ( O )"><span class="secnum">22.2.3.5.1</span> RS: ValidateTypedArray ( <var>O</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.entries" title="%TypedArray%.prototype.entries ( )"><span class="secnum">22.2.3.6</span> %TypedArray%.prototype.entries ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.every" title="%TypedArray%.prototype.every ( callbackfn [ , thisArg ] )"><span class="secnum">22.2.3.7</span> %TypedArray%.prototype.every ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.fill" title="%TypedArray%.prototype.fill ( value [ , start [ , end ] ] )"><span class="secnum">22.2.3.8</span> %TypedArray%.prototype.fill ( <var>value</var> [ , <var>start</var> [ , <var>end</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.filter" title="%TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )"><span class="secnum">22.2.3.9</span> %TypedArray%.prototype.filter ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.find" title="%TypedArray%.prototype.find ( predicate [ , thisArg ] )"><span class="secnum">22.2.3.10</span> %TypedArray%.prototype.find ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.findindex" title="%TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )"><span class="secnum">22.2.3.11</span> %TypedArray%.prototype.findIndex ( <var>predicate</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.foreach" title="%TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )"><span class="secnum">22.2.3.12</span> %TypedArray%.prototype.forEach ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.includes" title="%TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )"><span class="secnum">22.2.3.13</span> %TypedArray%.prototype.includes ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.indexof" title="%TypedArray%.prototype.indexOf ( searchElement [ , fromIndex ] )"><span class="secnum">22.2.3.14</span> %TypedArray%.prototype.indexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.join" title="%TypedArray%.prototype.join ( separator )"><span class="secnum">22.2.3.15</span> %TypedArray%.prototype.join ( <var>separator</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.keys" title="%TypedArray%.prototype.keys ( )"><span class="secnum">22.2.3.16</span> %TypedArray%.prototype.keys ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.lastindexof" title="%TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )"><span class="secnum">22.2.3.17</span> %TypedArray%.prototype.lastIndexOf ( <var>searchElement</var> [ , <var>fromIndex</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-%typedarray%.prototype.length" title="get %TypedArray%.prototype.length"><span class="secnum">22.2.3.18</span> get %TypedArray%.prototype.length</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.map" title="%TypedArray%.prototype.map ( callbackfn [ , thisArg ] )"><span class="secnum">22.2.3.19</span> %TypedArray%.prototype.map ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.reduce" title="%TypedArray%.prototype.reduce ( callbackfn [ , initialValue ] )"><span class="secnum">22.2.3.20</span> %TypedArray%.prototype.reduce ( <var>callbackfn</var> [ , <var>initialValue</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.reduceright" title="%TypedArray%.prototype.reduceRight ( callbackfn [ , initialValue ] )"><span class="secnum">22.2.3.21</span> %TypedArray%.prototype.reduceRight ( <var>callbackfn</var> [ , <var>initialValue</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.reverse" title="%TypedArray%.prototype.reverse ( )"><span class="secnum">22.2.3.22</span> %TypedArray%.prototype.reverse ( )</a></li><li><span class="item-toggle">◢</span><a href="#sec-%typedarray%.prototype.set-overloaded-offset" title="%TypedArray%.prototype.set ( overloaded [ , offset ] )"><span class="secnum">22.2.3.23</span> %TypedArray%.prototype.set ( <var>overloaded</var> [ , <var>offset</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.set-array-offset" title="%TypedArray%.prototype.set ( array [ , offset ] )"><span class="secnum">22.2.3.23.1</span> %TypedArray%.prototype.set ( <var>array</var> [ , <var>offset</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.set-typedarray-offset" title="%TypedArray%.prototype.set ( typedArray [ , offset ] )"><span class="secnum">22.2.3.23.2</span> %TypedArray%.prototype.set ( <var>typedArray</var> [ , <var>offset</var> ] )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.slice" title="%TypedArray%.prototype.slice ( start, end )"><span class="secnum">22.2.3.24</span> %TypedArray%.prototype.slice ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.some" title="%TypedArray%.prototype.some ( callbackfn [ , thisArg ] )"><span class="secnum">22.2.3.25</span> %TypedArray%.prototype.some ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.sort" title="%TypedArray%.prototype.sort ( comparefn )"><span class="secnum">22.2.3.26</span> %TypedArray%.prototype.sort ( <var>comparefn</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.subarray" title="%TypedArray%.prototype.subarray ( begin, end )"><span class="secnum">22.2.3.27</span> %TypedArray%.prototype.subarray ( <var>begin</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.tolocalestring" title="%TypedArray%.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )"><span class="secnum">22.2.3.28</span> %TypedArray%.prototype.toLocaleString ( [ <var>reserved1</var> [ , <var>reserved2</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.tostring" title="%TypedArray%.prototype.toString ( )"><span class="secnum">22.2.3.29</span> %TypedArray%.prototype.toString ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype.values" title="%TypedArray%.prototype.values ( )"><span class="secnum">22.2.3.30</span> %TypedArray%.prototype.values ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%typedarray%.prototype-@@iterator" title="%TypedArray%.prototype [ @@iterator ] ( )"><span class="secnum">22.2.3.31</span> %TypedArray%.prototype [ @@iterator ] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-%typedarray%.prototype-@@tostringtag" title="get %TypedArray%.prototype [ @@toStringTag ]"><span class="secnum">22.2.3.32</span> get %TypedArray%.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-typedarray-constructors" title="The TypedArray Constructors"><span class="secnum">22.2.4</span> The <var>TypedArray</var> Constructors</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-typedarray" title="TypedArray ( )"><span class="secnum">22.2.4.1</span> <var>TypedArray</var> ( )</a></li><li><span class="item-toggle">◢</span><a href="#sec-typedarray-length" title="TypedArray ( length )"><span class="secnum">22.2.4.2</span> <var>TypedArray</var> ( <var>length</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-allocatetypedarray" title="Runtime Semantics: AllocateTypedArray ( constructorName, newTarget, defaultProto [ , length ] )"><span class="secnum">22.2.4.2.1</span> RS: AllocateTypedArray ( <var>constructorName</var>, <var>newTarget</var>, <var>defaultProto</var> [ , <var>length</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-allocatetypedarraybuffer" title="Runtime Semantics: AllocateTypedArrayBuffer ( O, length )"><span class="secnum">22.2.4.2.2</span> RS: AllocateTypedArrayBuffer ( <var>O</var>, <var>length</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-typedarray-typedarray" title="TypedArray ( typedArray )"><span class="secnum">22.2.4.3</span> <var>TypedArray</var> ( <var>typedArray</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-typedarray-object" title="TypedArray ( object )"><span class="secnum">22.2.4.4</span> <var>TypedArray</var> ( <var>object</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-typedarray-buffer-byteoffset-length" title="TypedArray ( buffer [ , byteOffset [ , length ] ] )"><span class="secnum">22.2.4.5</span> <var>TypedArray</var> ( <var>buffer</var> [ , <var>byteOffset</var> [ , <var>length</var> ] ] )</a></li><li><span class="item-toggle-none"></span><a href="#typedarray-create" title="TypedArrayCreate ( constructor, argumentList )"><span class="secnum">22.2.4.6</span> TypedArrayCreate ( <var>constructor</var>, <var>argumentList</var> )</a></li><li><span class="item-toggle-none"></span><a href="#typedarray-species-create" title="TypedArraySpeciesCreate ( exemplar, argumentList )"><span class="secnum">22.2.4.7</span> TypedArraySpeciesCreate ( <var>exemplar</var>, <var>argumentList</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-typedarray-constructors" title="Properties of the TypedArray Constructors"><span class="secnum">22.2.5</span> Properties of the <var>TypedArray</var> Constructors</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-typedarray.bytes_per_element" title="TypedArray.BYTES_PER_ELEMENT"><span class="secnum">22.2.5.1</span> <var>TypedArray</var>.BYTES_PER_ELEMENT</a></li><li><span class="item-toggle-none"></span><a href="#sec-typedarray.prototype" title="TypedArray.prototype"><span class="secnum">22.2.5.2</span> <var>TypedArray</var>.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-typedarray-prototype-objects" title="Properties of the TypedArray Prototype Objects"><span class="secnum">22.2.6</span> Properties of the <var>TypedArray</var> Prototype Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-typedarray.prototype.bytes_per_element" title="TypedArray.prototype.BYTES_PER_ELEMENT"><span class="secnum">22.2.6.1</span> <var>TypedArray</var>.prototype.BYTES_PER_ELEMENT</a></li><li><span class="item-toggle-none"></span><a href="#sec-typedarray.prototype.constructor" title="TypedArray.prototype.constructor"><span class="secnum">22.2.6.2</span> <var>TypedArray</var>.prototype.constructor</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-typedarray-instances" title="Properties of TypedArray Instances"><span class="secnum">22.2.7</span> Properties of <var>TypedArray</var> Instances</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-keyed-collections" title="Keyed Collections"><span class="secnum">23</span> Keyed Collections</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-map-objects" title="Map Objects"><span class="secnum">23.1</span> Map Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-map-constructor" title="The Map Constructor"><span class="secnum">23.1.1</span> The Map Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-map-iterable" title="Map ( [ iterable ] )"><span class="secnum">23.1.1.1</span> Map ( [ <var>iterable</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-add-entries-from-iterable" title="AddEntriesFromIterable ( target, iterable, adder )"><span class="secnum">23.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="#sec-properties-of-the-map-constructor" title="Properties of the Map Constructor"><span class="secnum">23.1.2</span> Properties of the Map Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-map.prototype" title="Map.prototype"><span class="secnum">23.1.2.1</span> Map.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-map-@@species" title="get Map [ @@species ]"><span class="secnum">23.1.2.2</span> get Map [ @@species ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-map-prototype-object" title="Properties of the Map Prototype Object"><span class="secnum">23.1.3</span> Properties of the Map Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-map.prototype.clear" title="Map.prototype.clear ( )"><span class="secnum">23.1.3.1</span> Map.prototype.clear ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype.constructor" title="Map.prototype.constructor"><span class="secnum">23.1.3.2</span> Map.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype.delete" title="Map.prototype.delete ( key )"><span class="secnum">23.1.3.3</span> Map.prototype.delete ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype.entries" title="Map.prototype.entries ( )"><span class="secnum">23.1.3.4</span> Map.prototype.entries ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype.foreach" title="Map.prototype.forEach ( callbackfn [ , thisArg ] )"><span class="secnum">23.1.3.5</span> Map.prototype.forEach ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype.get" title="Map.prototype.get ( key )"><span class="secnum">23.1.3.6</span> Map.prototype.get ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype.has" title="Map.prototype.has ( key )"><span class="secnum">23.1.3.7</span> Map.prototype.has ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype.keys" title="Map.prototype.keys ( )"><span class="secnum">23.1.3.8</span> Map.prototype.keys ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype.set" title="Map.prototype.set ( key, value )"><span class="secnum">23.1.3.9</span> Map.prototype.set ( <var>key</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-map.prototype.size" title="get Map.prototype.size"><span class="secnum">23.1.3.10</span> get Map.prototype.size</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype.values" title="Map.prototype.values ( )"><span class="secnum">23.1.3.11</span> Map.prototype.values ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype-@@iterator" title="Map.prototype [ @@iterator ] ( )"><span class="secnum">23.1.3.12</span> Map.prototype [ @@iterator ] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-map.prototype-@@tostringtag" title="Map.prototype [ @@toStringTag ]"><span class="secnum">23.1.3.13</span> Map.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-map-instances" title="Properties of Map Instances"><span class="secnum">23.1.4</span> Properties of Map Instances</a></li><li><span class="item-toggle">◢</span><a href="#sec-map-iterator-objects" title="Map Iterator Objects"><span class="secnum">23.1.5</span> Map Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-createmapiterator" title="CreateMapIterator ( map, kind )"><span class="secnum">23.1.5.1</span> CreateMapIterator ( <var>map</var>, <var>kind</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-%mapiteratorprototype%-object" title="The %MapIteratorPrototype% Object"><span class="secnum">23.1.5.2</span> The %MapIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-%mapiteratorprototype%.next" title="%MapIteratorPrototype%.next ( )"><span class="secnum">23.1.5.2.1</span> %MapIteratorPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%mapiteratorprototype%-@@tostringtag" title="%MapIteratorPrototype% [ @@toStringTag ]"><span class="secnum">23.1.5.2.2</span> %MapIteratorPrototype% [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-map-iterator-instances" title="Properties of Map Iterator Instances"><span class="secnum">23.1.5.3</span> Properties of Map Iterator Instances</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-set-objects" title="Set Objects"><span class="secnum">23.2</span> Set Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-set-constructor" title="The Set Constructor"><span class="secnum">23.2.1</span> The Set Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-set-iterable" title="Set ( [ iterable ] )"><span class="secnum">23.2.1.1</span> Set ( [ <var>iterable</var> ] )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-set-constructor" title="Properties of the Set Constructor"><span class="secnum">23.2.2</span> Properties of the Set Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-set.prototype" title="Set.prototype"><span class="secnum">23.2.2.1</span> Set.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-set-@@species" title="get Set [ @@species ]"><span class="secnum">23.2.2.2</span> get Set [ @@species ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-set-prototype-object" title="Properties of the Set Prototype Object"><span class="secnum">23.2.3</span> Properties of the Set Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-set.prototype.add" title="Set.prototype.add ( value )"><span class="secnum">23.2.3.1</span> Set.prototype.add ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set.prototype.clear" title="Set.prototype.clear ( )"><span class="secnum">23.2.3.2</span> Set.prototype.clear ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set.prototype.constructor" title="Set.prototype.constructor"><span class="secnum">23.2.3.3</span> Set.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-set.prototype.delete" title="Set.prototype.delete ( value )"><span class="secnum">23.2.3.4</span> Set.prototype.delete ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set.prototype.entries" title="Set.prototype.entries ( )"><span class="secnum">23.2.3.5</span> Set.prototype.entries ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set.prototype.foreach" title="Set.prototype.forEach ( callbackfn [ , thisArg ] )"><span class="secnum">23.2.3.6</span> Set.prototype.forEach ( <var>callbackfn</var> [ , <var>thisArg</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set.prototype.has" title="Set.prototype.has ( value )"><span class="secnum">23.2.3.7</span> Set.prototype.has ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set.prototype.keys" title="Set.prototype.keys ( )"><span class="secnum">23.2.3.8</span> Set.prototype.keys ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-set.prototype.size" title="get Set.prototype.size"><span class="secnum">23.2.3.9</span> get Set.prototype.size</a></li><li><span class="item-toggle-none"></span><a href="#sec-set.prototype.values" title="Set.prototype.values ( )"><span class="secnum">23.2.3.10</span> Set.prototype.values ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set.prototype-@@iterator" title="Set.prototype [ @@iterator ] ( )"><span class="secnum">23.2.3.11</span> Set.prototype [ @@iterator ] ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-set.prototype-@@tostringtag" title="Set.prototype [ @@toStringTag ]"><span class="secnum">23.2.3.12</span> Set.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-set-instances" title="Properties of Set Instances"><span class="secnum">23.2.4</span> Properties of Set Instances</a></li><li><span class="item-toggle">◢</span><a href="#sec-set-iterator-objects" title="Set Iterator Objects"><span class="secnum">23.2.5</span> Set Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-createsetiterator" title="CreateSetIterator ( set, kind )"><span class="secnum">23.2.5.1</span> CreateSetIterator ( <var>set</var>, <var>kind</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-%setiteratorprototype%-object" title="The %SetIteratorPrototype% Object"><span class="secnum">23.2.5.2</span> The %SetIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-%setiteratorprototype%.next" title="%SetIteratorPrototype%.next ( )"><span class="secnum">23.2.5.2.1</span> %SetIteratorPrototype%.next ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%setiteratorprototype%-@@tostringtag" title="%SetIteratorPrototype% [ @@toStringTag ]"><span class="secnum">23.2.5.2.2</span> %SetIteratorPrototype% [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-set-iterator-instances" title="Properties of Set Iterator Instances"><span class="secnum">23.2.5.3</span> Properties of Set Iterator Instances</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-weakmap-objects" title="WeakMap Objects"><span class="secnum">23.3</span> WeakMap Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-weakmap-constructor" title="The WeakMap Constructor"><span class="secnum">23.3.1</span> The WeakMap Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-weakmap-iterable" title="WeakMap ( [ iterable ] )"><span class="secnum">23.3.1.1</span> WeakMap ( [ <var>iterable</var> ] )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-weakmap-constructor" title="Properties of the WeakMap Constructor"><span class="secnum">23.3.2</span> Properties of the WeakMap Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-weakmap.prototype" title="WeakMap.prototype"><span class="secnum">23.3.2.1</span> WeakMap.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-weakmap-prototype-object" title="Properties of the WeakMap Prototype Object"><span class="secnum">23.3.3</span> Properties of the WeakMap Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-weakmap.prototype.constructor" title="WeakMap.prototype.constructor"><span class="secnum">23.3.3.1</span> WeakMap.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-weakmap.prototype.delete" title="WeakMap.prototype.delete ( key )"><span class="secnum">23.3.3.2</span> WeakMap.prototype.delete ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-weakmap.prototype.get" title="WeakMap.prototype.get ( key )"><span class="secnum">23.3.3.3</span> WeakMap.prototype.get ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-weakmap.prototype.has" title="WeakMap.prototype.has ( key )"><span class="secnum">23.3.3.4</span> WeakMap.prototype.has ( <var>key</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-weakmap.prototype.set" title="WeakMap.prototype.set ( key, value )"><span class="secnum">23.3.3.5</span> WeakMap.prototype.set ( <var>key</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-weakmap.prototype-@@tostringtag" title="WeakMap.prototype [ @@toStringTag ]"><span class="secnum">23.3.3.6</span> WeakMap.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-weakmap-instances" title="Properties of WeakMap Instances"><span class="secnum">23.3.4</span> Properties of WeakMap Instances</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-weakset-objects" title="WeakSet Objects"><span class="secnum">23.4</span> WeakSet Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-weakset-constructor" title="The WeakSet Constructor"><span class="secnum">23.4.1</span> The WeakSet Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-weakset-iterable" title="WeakSet ( [ iterable ] )"><span class="secnum">23.4.1.1</span> WeakSet ( [ <var>iterable</var> ] )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-weakset-constructor" title="Properties of the WeakSet Constructor"><span class="secnum">23.4.2</span> Properties of the WeakSet Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-weakset.prototype" title="WeakSet.prototype"><span class="secnum">23.4.2.1</span> WeakSet.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-weakset-prototype-object" title="Properties of the WeakSet Prototype Object"><span class="secnum">23.4.3</span> Properties of the WeakSet Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-weakset.prototype.add" title="WeakSet.prototype.add ( value )"><span class="secnum">23.4.3.1</span> WeakSet.prototype.add ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-weakset.prototype.constructor" title="WeakSet.prototype.constructor"><span class="secnum">23.4.3.2</span> WeakSet.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-weakset.prototype.delete" title="WeakSet.prototype.delete ( value )"><span class="secnum">23.4.3.3</span> WeakSet.prototype.delete ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-weakset.prototype.has" title="WeakSet.prototype.has ( value )"><span class="secnum">23.4.3.4</span> WeakSet.prototype.has ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-weakset.prototype-@@tostringtag" title="WeakSet.prototype [ @@toStringTag ]"><span class="secnum">23.4.3.5</span> WeakSet.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-weakset-instances" title="Properties of WeakSet Instances"><span class="secnum">23.4.4</span> Properties of WeakSet Instances</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-structured-data" title="Structured Data"><span class="secnum">24</span> Structured Data</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-arraybuffer-objects" title="ArrayBuffer Objects"><span class="secnum">24.1</span> ArrayBuffer Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-abstract-operations-for-arraybuffer-objects" title="Abstract Operations For ArrayBuffer Objects"><span class="secnum">24.1.1</span> Abstract Operations For ArrayBuffer Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-allocatearraybuffer" title="AllocateArrayBuffer ( constructor, byteLength )"><span class="secnum">24.1.1.1</span> AllocateArrayBuffer ( <var>constructor</var>, <var>byteLength</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-isdetachedbuffer" title="IsDetachedBuffer ( arrayBuffer )"><span class="secnum">24.1.1.2</span> IsDetachedBuffer ( <var>arrayBuffer</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-detacharraybuffer" title="DetachArrayBuffer ( arrayBuffer [ , key ] )"><span class="secnum">24.1.1.3</span> DetachArrayBuffer ( <var>arrayBuffer</var> [ , <var>key</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-clonearraybuffer" title="CloneArrayBuffer ( srcBuffer, srcByteOffset, srcLength, cloneConstructor )"><span class="secnum">24.1.1.4</span> CloneArrayBuffer ( <var>srcBuffer</var>, <var>srcByteOffset</var>, <var>srcLength</var>, <var>cloneConstructor</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-rawbytestonumber" title="RawBytesToNumber ( type, rawBytes, isLittleEndian )"><span class="secnum">24.1.1.5</span> RawBytesToNumber ( <var>type</var>, <var>rawBytes</var>, <var>isLittleEndian</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getvaluefrombuffer" title="GetValueFromBuffer ( arrayBuffer, byteIndex, type, isTypedArray, order [ , isLittleEndian ] )"><span class="secnum">24.1.1.6</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="#sec-numbertorawbytes" title="NumberToRawBytes ( type, value, isLittleEndian )"><span class="secnum">24.1.1.7</span> NumberToRawBytes ( <var>type</var>, <var>value</var>, <var>isLittleEndian</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-setvalueinbuffer" title="SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isTypedArray, order [ , isLittleEndian ] )"><span class="secnum">24.1.1.8</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="#sec-getmodifysetvalueinbuffer" title="GetModifySetValueInBuffer ( arrayBuffer, byteIndex, type, value, op [ , isLittleEndian ] )"><span class="secnum">24.1.1.9</span> GetModifySetValueInBuffer ( <var>arrayBuffer</var>, <var>byteIndex</var>, <var>type</var>, <var>value</var>, <var>op</var> [ , <var>isLittleEndian</var> ] )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-arraybuffer-constructor" title="The ArrayBuffer Constructor"><span class="secnum">24.1.2</span> The ArrayBuffer Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-arraybuffer-length" title="ArrayBuffer ( length )"><span class="secnum">24.1.2.1</span> ArrayBuffer ( <var>length</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-arraybuffer-constructor" title="Properties of the ArrayBuffer Constructor"><span class="secnum">24.1.3</span> Properties of the ArrayBuffer Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-arraybuffer.isview" title="ArrayBuffer.isView ( arg )"><span class="secnum">24.1.3.1</span> ArrayBuffer.isView ( <var>arg</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-arraybuffer.prototype" title="ArrayBuffer.prototype"><span class="secnum">24.1.3.2</span> ArrayBuffer.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-arraybuffer-@@species" title="get ArrayBuffer [ @@species ]"><span class="secnum">24.1.3.3</span> get ArrayBuffer [ @@species ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-arraybuffer-prototype-object" title="Properties of the ArrayBuffer Prototype Object"><span class="secnum">24.1.4</span> Properties of the ArrayBuffer Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-get-arraybuffer.prototype.bytelength" title="get ArrayBuffer.prototype.byteLength"><span class="secnum">24.1.4.1</span> get ArrayBuffer.prototype.byteLength</a></li><li><span class="item-toggle-none"></span><a href="#sec-arraybuffer.prototype.constructor" title="ArrayBuffer.prototype.constructor"><span class="secnum">24.1.4.2</span> ArrayBuffer.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-arraybuffer.prototype.slice" title="ArrayBuffer.prototype.slice ( start, end )"><span class="secnum">24.1.4.3</span> ArrayBuffer.prototype.slice ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-arraybuffer.prototype-@@tostringtag" title="ArrayBuffer.prototype [ @@toStringTag ]"><span class="secnum">24.1.4.4</span> ArrayBuffer.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-the-arraybuffer-instances" title="Properties of ArrayBuffer Instances"><span class="secnum">24.1.5</span> Properties of ArrayBuffer Instances</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-sharedarraybuffer-objects" title="SharedArrayBuffer Objects"><span class="secnum">24.2</span> SharedArrayBuffer Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-abstract-operations-for-sharedarraybuffer-objects" title="Abstract Operations for SharedArrayBuffer Objects"><span class="secnum">24.2.1</span> Abstract Operations for SharedArrayBuffer Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-allocatesharedarraybuffer" title="AllocateSharedArrayBuffer ( constructor, byteLength )"><span class="secnum">24.2.1.1</span> AllocateSharedArrayBuffer ( <var>constructor</var>, <var>byteLength</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-issharedarraybuffer" title="IsSharedArrayBuffer ( obj )"><span class="secnum">24.2.1.2</span> IsSharedArrayBuffer ( <var>obj</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-sharedarraybuffer-constructor" title="The SharedArrayBuffer Constructor"><span class="secnum">24.2.2</span> The SharedArrayBuffer Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-sharedarraybuffer-length" title="SharedArrayBuffer ( [ length ] )"><span class="secnum">24.2.2.1</span> SharedArrayBuffer ( [ <var>length</var> ] )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-sharedarraybuffer-constructor" title="Properties of the SharedArrayBuffer Constructor"><span class="secnum">24.2.3</span> Properties of the SharedArrayBuffer Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-sharedarraybuffer.prototype" title="SharedArrayBuffer.prototype"><span class="secnum">24.2.3.1</span> SharedArrayBuffer.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-sharedarraybuffer-@@species" title="get SharedArrayBuffer [ @@species ]"><span class="secnum">24.2.3.2</span> get SharedArrayBuffer [ @@species ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-sharedarraybuffer-prototype-object" title="Properties of the SharedArrayBuffer Prototype Object"><span class="secnum">24.2.4</span> Properties of the SharedArrayBuffer Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-get-sharedarraybuffer.prototype.bytelength" title="get SharedArrayBuffer.prototype.byteLength"><span class="secnum">24.2.4.1</span> get SharedArrayBuffer.prototype.byteLength</a></li><li><span class="item-toggle-none"></span><a href="#sec-sharedarraybuffer.prototype.constructor" title="SharedArrayBuffer.prototype.constructor"><span class="secnum">24.2.4.2</span> SharedArrayBuffer.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-sharedarraybuffer.prototype.slice" title="SharedArrayBuffer.prototype.slice ( start, end )"><span class="secnum">24.2.4.3</span> SharedArrayBuffer.prototype.slice ( <var>start</var>, <var>end</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-sharedarraybuffer.prototype.toString" title="SharedArrayBuffer.prototype [ @@toStringTag ]"><span class="secnum">24.2.4.4</span> SharedArrayBuffer.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-the-sharedarraybuffer-instances" title="Properties of SharedArrayBuffer Instances"><span class="secnum">24.2.5</span> Properties of SharedArrayBuffer Instances</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-dataview-objects" title="DataView Objects"><span class="secnum">24.3</span> DataView Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-abstract-operations-for-dataview-objects" title="Abstract Operations For DataView Objects"><span class="secnum">24.3.1</span> Abstract Operations For DataView Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-getviewvalue" title="GetViewValue ( view, requestIndex, isLittleEndian, type )"><span class="secnum">24.3.1.1</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="#sec-setviewvalue" title="SetViewValue ( view, requestIndex, isLittleEndian, type, value )"><span class="secnum">24.3.1.2</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="#sec-dataview-constructor" title="The DataView Constructor"><span class="secnum">24.3.2</span> The DataView Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-dataview-buffer-byteoffset-bytelength" title="DataView ( buffer [ , byteOffset [ , byteLength ] ] )"><span class="secnum">24.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="#sec-properties-of-the-dataview-constructor" title="Properties of the DataView Constructor"><span class="secnum">24.3.3</span> Properties of the DataView Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype" title="DataView.prototype"><span class="secnum">24.3.3.1</span> DataView.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-dataview-prototype-object" title="Properties of the DataView Prototype Object"><span class="secnum">24.3.4</span> Properties of the DataView Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-get-dataview.prototype.buffer" title="get DataView.prototype.buffer"><span class="secnum">24.3.4.1</span> get DataView.prototype.buffer</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-dataview.prototype.bytelength" title="get DataView.prototype.byteLength"><span class="secnum">24.3.4.2</span> get DataView.prototype.byteLength</a></li><li><span class="item-toggle-none"></span><a href="#sec-get-dataview.prototype.byteoffset" title="get DataView.prototype.byteOffset"><span class="secnum">24.3.4.3</span> get DataView.prototype.byteOffset</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.constructor" title="DataView.prototype.constructor"><span class="secnum">24.3.4.4</span> DataView.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.getfloat32" title="DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )"><span class="secnum">24.3.4.5</span> DataView.prototype.getFloat32 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.getfloat64" title="DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )"><span class="secnum">24.3.4.6</span> DataView.prototype.getFloat64 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.getint8" title="DataView.prototype.getInt8 ( byteOffset )"><span class="secnum">24.3.4.7</span> DataView.prototype.getInt8 ( <var>byteOffset</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.getint16" title="DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )"><span class="secnum">24.3.4.8</span> DataView.prototype.getInt16 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.getint32" title="DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )"><span class="secnum">24.3.4.9</span> DataView.prototype.getInt32 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.getuint8" title="DataView.prototype.getUint8 ( byteOffset )"><span class="secnum">24.3.4.10</span> DataView.prototype.getUint8 ( <var>byteOffset</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.getuint16" title="DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )"><span class="secnum">24.3.4.11</span> DataView.prototype.getUint16 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.getuint32" title="DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )"><span class="secnum">24.3.4.12</span> DataView.prototype.getUint32 ( <var>byteOffset</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.setfloat32" title="DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">24.3.4.13</span> DataView.prototype.setFloat32 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.setfloat64" title="DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">24.3.4.14</span> DataView.prototype.setFloat64 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.setint8" title="DataView.prototype.setInt8 ( byteOffset, value )"><span class="secnum">24.3.4.15</span> DataView.prototype.setInt8 ( <var>byteOffset</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.setint16" title="DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">24.3.4.16</span> DataView.prototype.setInt16 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.setint32" title="DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">24.3.4.17</span> DataView.prototype.setInt32 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.setuint8" title="DataView.prototype.setUint8 ( byteOffset, value )"><span class="secnum">24.3.4.18</span> DataView.prototype.setUint8 ( <var>byteOffset</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.setuint16" title="DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">24.3.4.19</span> DataView.prototype.setUint16 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype.setuint32" title="DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )"><span class="secnum">24.3.4.20</span> DataView.prototype.setUint32 ( <var>byteOffset</var>, <var>value</var> [ , <var>littleEndian</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-dataview.prototype-@@tostringtag" title="DataView.prototype [ @@toStringTag ]"><span class="secnum">24.3.4.21</span> DataView.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-dataview-instances" title="Properties of DataView Instances"><span class="secnum">24.3.5</span> Properties of DataView Instances</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-atomics-object" title="The Atomics Object"><span class="secnum">24.4</span> The Atomics Object</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-abstract-operations-for-atomics" title="Abstract Operations for Atomics"><span class="secnum">24.4.1</span> Abstract Operations for Atomics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-validatesharedintegertypedarray" title="ValidateSharedIntegerTypedArray ( typedArray [ , onlyInt32 ] )"><span class="secnum">24.4.1.1</span> ValidateSharedIntegerTypedArray ( <var>typedArray</var> [ , <var>onlyInt32</var> ] )</a></li><li><span class="item-toggle-none"></span><a href="#sec-validateatomicaccess" title="ValidateAtomicAccess ( typedArray, requestIndex )"><span class="secnum">24.4.1.2</span> ValidateAtomicAccess ( <var>typedArray</var>, <var>requestIndex</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getwaiterlist" title="GetWaiterList ( block, i )"><span class="secnum">24.4.1.3</span> GetWaiterList ( <var>block</var>, <var>i</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-entercriticalsection" title="EnterCriticalSection ( WL )"><span class="secnum">24.4.1.4</span> EnterCriticalSection ( <var>WL</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-leavecriticalsection" title="LeaveCriticalSection ( WL )"><span class="secnum">24.4.1.5</span> LeaveCriticalSection ( <var>WL</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-addwaiter" title="AddWaiter ( WL, W )"><span class="secnum">24.4.1.6</span> AddWaiter ( <var>WL</var>, <var>W</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-removewaiter" title="RemoveWaiter ( WL, W )"><span class="secnum">24.4.1.7</span> RemoveWaiter ( <var>WL</var>, <var>W</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-removewaiters" title="RemoveWaiters ( WL, c )"><span class="secnum">24.4.1.8</span> RemoveWaiters ( <var>WL</var>, <var>c</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-suspend" title="Suspend ( WL, W, timeout )"><span class="secnum">24.4.1.9</span> Suspend ( <var>WL</var>, <var>W</var>, <var>timeout</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-notifywaiter" title="NotifyWaiter ( WL, W )"><span class="secnum">24.4.1.10</span> NotifyWaiter ( <var>WL</var>, <var>W</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomicreadmodifywrite" title="AtomicReadModifyWrite ( typedArray, index, value, op )"><span class="secnum">24.4.1.11</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="#sec-atomicload" title="AtomicLoad ( typedArray, index )"><span class="secnum">24.4.1.12</span> AtomicLoad ( <var>typedArray</var>, <var>index</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-atomics.add" title="Atomics.add ( typedArray, index, value )"><span class="secnum">24.4.2</span> Atomics.add ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomics.and" title="Atomics.and ( typedArray, index, value )"><span class="secnum">24.4.3</span> Atomics.and ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomics.compareexchange" title="Atomics.compareExchange ( typedArray, index, expectedValue, replacementValue )"><span class="secnum">24.4.4</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="#sec-atomics.exchange" title="Atomics.exchange ( typedArray, index, value )"><span class="secnum">24.4.5</span> Atomics.exchange ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomics.islockfree" title="Atomics.isLockFree ( size )"><span class="secnum">24.4.6</span> Atomics.isLockFree ( <var>size</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomics.load" title="Atomics.load ( typedArray, index )"><span class="secnum">24.4.7</span> Atomics.load ( <var>typedArray</var>, <var>index</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomics.or" title="Atomics.or ( typedArray, index, value )"><span class="secnum">24.4.8</span> Atomics.or ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomics.store" title="Atomics.store ( typedArray, index, value )"><span class="secnum">24.4.9</span> Atomics.store ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomics.sub" title="Atomics.sub ( typedArray, index, value )"><span class="secnum">24.4.10</span> Atomics.sub ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomics.wait" title="Atomics.wait ( typedArray, index, value, timeout )"><span class="secnum">24.4.11</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="#sec-atomics.notify" title="Atomics.notify ( typedArray, index, count )"><span class="secnum">24.4.12</span> Atomics.notify ( <var>typedArray</var>, <var>index</var>, <var>count</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomics.xor" title="Atomics.xor ( typedArray, index, value )"><span class="secnum">24.4.13</span> Atomics.xor ( <var>typedArray</var>, <var>index</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-atomics-@@tostringtag" title="Atomics [ @@toStringTag ]"><span class="secnum">24.4.14</span> Atomics [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-json-object" title="The JSON Object"><span class="secnum">24.5</span> The JSON Object</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-json.parse" title="JSON.parse ( text [ , reviver ] )"><span class="secnum">24.5.1</span> JSON.parse ( <var>text</var> [ , <var>reviver</var> ] )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-internalizejsonproperty" title="Runtime Semantics: InternalizeJSONProperty ( holder, name )"><span class="secnum">24.5.1.1</span> RS: InternalizeJSONProperty ( <var>holder</var>, <var>name</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-json.stringify" title="JSON.stringify ( value [ , replacer [ , space ] ] )"><span class="secnum">24.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="#sec-serializejsonproperty" title="Runtime Semantics: SerializeJSONProperty ( key, holder )"><span class="secnum">24.5.2.1</span> RS: SerializeJSONProperty ( <var>key</var>, <var>holder</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-quotejsonstring" title="Runtime Semantics: QuoteJSONString ( value )"><span class="secnum">24.5.2.2</span> RS: QuoteJSONString ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-unicodeescape" title="Runtime Semantics: UnicodeEscape ( C )"><span class="secnum">24.5.2.3</span> RS: UnicodeEscape ( <var>C</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-serializejsonobject" title="Runtime Semantics: SerializeJSONObject ( value )"><span class="secnum">24.5.2.4</span> RS: SerializeJSONObject ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-serializejsonarray" title="Runtime Semantics: SerializeJSONArray ( value )"><span class="secnum">24.5.2.5</span> RS: SerializeJSONArray ( <var>value</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-json-@@tostringtag" title="JSON [ @@toStringTag ]"><span class="secnum">24.5.3</span> JSON [ @@toStringTag ]</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-control-abstraction-objects" title="Control Abstraction Objects"><span class="secnum">25</span> Control Abstraction Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-iteration" title="Iteration"><span class="secnum">25.1</span> Iteration</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-common-iteration-interfaces" title="Common Iteration Interfaces"><span class="secnum">25.1.1</span> Common Iteration Interfaces</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-iterable-interface" title="The Iterable Interface"><span class="secnum">25.1.1.1</span> The <i>Iterable</i> Interface</a></li><li><span class="item-toggle-none"></span><a href="#sec-iterator-interface" title="The Iterator Interface"><span class="secnum">25.1.1.2</span> The <i>Iterator</i> Interface</a></li><li><span class="item-toggle-none"></span><a href="#sec-asynciterable-interface" title="The AsyncIterable Interface"><span class="secnum">25.1.1.3</span> The <i>AsyncIterable</i> Interface</a></li><li><span class="item-toggle-none"></span><a href="#sec-asynciterator-interface" title="The AsyncIterator Interface"><span class="secnum">25.1.1.4</span> The <i>AsyncIterator</i> Interface</a></li><li><span class="item-toggle-none"></span><a href="#sec-iteratorresult-interface" title="The IteratorResult Interface"><span class="secnum">25.1.1.5</span> The IteratorResult Interface</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-%iteratorprototype%-object" title="The %IteratorPrototype% Object"><span class="secnum">25.1.2</span> The %IteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-%iteratorprototype%-@@iterator" title="%IteratorPrototype% [ @@iterator ] ( )"><span class="secnum">25.1.2.1</span> %IteratorPrototype% [ @@iterator ] ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-asynciteratorprototype" title="The %AsyncIteratorPrototype% Object"><span class="secnum">25.1.3</span> The %AsyncIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-asynciteratorprototype-asynciterator" title="%AsyncIteratorPrototype% [ @@asyncIterator ] ( )"><span class="secnum">25.1.3.1</span> %AsyncIteratorPrototype% [ @@asyncIterator ] ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-async-from-sync-iterator-objects" title="Async-from-Sync Iterator Objects"><span class="secnum">25.1.4</span> Async-from-Sync Iterator Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-createasyncfromsynciterator" title="CreateAsyncFromSyncIterator ( syncIteratorRecord )"><span class="secnum">25.1.4.1</span> CreateAsyncFromSyncIterator ( <var>syncIteratorRecord</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-%asyncfromsynciteratorprototype%-object" title="The %AsyncFromSyncIteratorPrototype% Object"><span class="secnum">25.1.4.2</span> The %AsyncFromSyncIteratorPrototype% Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-%asyncfromsynciteratorprototype%.next" title="%AsyncFromSyncIteratorPrototype%.next ( value )"><span class="secnum">25.1.4.2.1</span> %AsyncFromSyncIteratorPrototype%.next ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%asyncfromsynciteratorprototype%.return" title="%AsyncFromSyncIteratorPrototype%.return ( value )"><span class="secnum">25.1.4.2.2</span> %AsyncFromSyncIteratorPrototype%.return ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%asyncfromsynciteratorprototype%.throw" title="%AsyncFromSyncIteratorPrototype%.throw ( value )"><span class="secnum">25.1.4.2.3</span> %AsyncFromSyncIteratorPrototype%.throw ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-%asyncfromsynciteratorprototype%-@@tostringtag" title="%AsyncFromSyncIteratorPrototype% [ @@toStringTag ]"><span class="secnum">25.1.4.2.4</span> %AsyncFromSyncIteratorPrototype% [ @@toStringTag ]</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-from-sync-iterator-value-unwrap-functions" title="Async-from-Sync Iterator Value Unwrap Functions"><span class="secnum">25.1.4.2.5</span> Async-from-Sync Iterator Value Unwrap Functions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-async-from-sync-iterator-instances" title="Properties of Async-from-Sync Iterator Instances"><span class="secnum">25.1.4.3</span> Properties of Async-from-Sync Iterator Instances</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncfromsynciteratorcontinuation" title="AsyncFromSyncIteratorContinuation ( result, promiseCapability )"><span class="secnum">25.1.4.4</span> AsyncFromSyncIteratorContinuation ( <var>result</var>, <var>promiseCapability</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-generatorfunction-objects" title="GeneratorFunction Objects"><span class="secnum">25.2</span> GeneratorFunction Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-generatorfunction-constructor" title="The GeneratorFunction Constructor"><span class="secnum">25.2.1</span> The GeneratorFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-generatorfunction" title="GeneratorFunction ( p1, p2, … , pn, body )"><span class="secnum">25.2.1.1</span> GeneratorFunction ( <var>p1</var>, <var>p2</var>, … , <var>pn</var>, <var>body</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-generatorfunction-constructor" title="Properties of the GeneratorFunction Constructor"><span class="secnum">25.2.2</span> Properties of the GeneratorFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-generatorfunction.length" title="GeneratorFunction.length"><span class="secnum">25.2.2.1</span> GeneratorFunction.length</a></li><li><span class="item-toggle-none"></span><a href="#sec-generatorfunction.prototype" title="GeneratorFunction.prototype"><span class="secnum">25.2.2.2</span> GeneratorFunction.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-generatorfunction-prototype-object" title="Properties of the GeneratorFunction Prototype Object"><span class="secnum">25.2.3</span> Properties of the GeneratorFunction Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-generatorfunction.prototype.constructor" title="GeneratorFunction.prototype.constructor"><span class="secnum">25.2.3.1</span> GeneratorFunction.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-generatorfunction.prototype.prototype" title="GeneratorFunction.prototype.prototype"><span class="secnum">25.2.3.2</span> GeneratorFunction.prototype.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-generatorfunction.prototype-@@tostringtag" title="GeneratorFunction.prototype [ @@toStringTag ]"><span class="secnum">25.2.3.3</span> GeneratorFunction.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-generatorfunction-instances" title="GeneratorFunction Instances"><span class="secnum">25.2.4</span> GeneratorFunction Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-generatorfunction-instances-length" title="length"><span class="secnum">25.2.4.1</span> length</a></li><li><span class="item-toggle-none"></span><a href="#sec-generatorfunction-instances-name" title="name"><span class="secnum">25.2.4.2</span> name</a></li><li><span class="item-toggle-none"></span><a href="#sec-generatorfunction-instances-prototype" title="prototype"><span class="secnum">25.2.4.3</span> prototype</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-asyncgeneratorfunction-objects" title="AsyncGeneratorFunction Objects"><span class="secnum">25.3</span> AsyncGeneratorFunction Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-asyncgeneratorfunction-constructor" title="The AsyncGeneratorFunction Constructor"><span class="secnum">25.3.1</span> The AsyncGeneratorFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorfunction" title="AsyncGeneratorFunction ( p1, p2, ..., pn, body )"><span class="secnum">25.3.1.1</span> AsyncGeneratorFunction ( <var>p1</var>, <var>p2</var>, ..., <var>pn</var>, <var>body</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-asyncgeneratorfunction" title="Properties of the AsyncGeneratorFunction Constructor"><span class="secnum">25.3.2</span> Properties of the AsyncGeneratorFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorfunction-length" title="AsyncGeneratorFunction.length"><span class="secnum">25.3.2.1</span> AsyncGeneratorFunction.length</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorfunction-prototype" title="AsyncGeneratorFunction.prototype"><span class="secnum">25.3.2.2</span> AsyncGeneratorFunction.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-asyncgeneratorfunction-prototype" title="Properties of the AsyncGeneratorFunction Prototype Object"><span class="secnum">25.3.3</span> Properties of the AsyncGeneratorFunction Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorfunction-prototype-constructor" title="AsyncGeneratorFunction.prototype.constructor"><span class="secnum">25.3.3.1</span> AsyncGeneratorFunction.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorfunction-prototype-prototype" title="AsyncGeneratorFunction.prototype.prototype"><span class="secnum">25.3.3.2</span> AsyncGeneratorFunction.prototype.prototype</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorfunction-prototype-tostringtag" title="AsyncGeneratorFunction.prototype [ @@toStringTag ]"><span class="secnum">25.3.3.3</span> AsyncGeneratorFunction.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-asyncgeneratorfunction-instances" title="AsyncGeneratorFunction Instances"><span class="secnum">25.3.4</span> AsyncGeneratorFunction Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorfunction-instance-length" title="length"><span class="secnum">25.3.4.1</span> length</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorfunction-instance-name" title="name"><span class="secnum">25.3.4.2</span> name</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorfunction-instance-prototype" title="prototype"><span class="secnum">25.3.4.3</span> prototype</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-generator-objects" title="Generator Objects"><span class="secnum">25.4</span> Generator Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-properties-of-generator-prototype" title="Properties of the Generator Prototype Object"><span class="secnum">25.4.1</span> Properties of the Generator Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-generator.prototype.constructor" title="Generator.prototype.constructor"><span class="secnum">25.4.1.1</span> Generator.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator.prototype.next" title="Generator.prototype.next ( value )"><span class="secnum">25.4.1.2</span> Generator.prototype.next ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator.prototype.return" title="Generator.prototype.return ( value )"><span class="secnum">25.4.1.3</span> Generator.prototype.return ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator.prototype.throw" title="Generator.prototype.throw ( exception )"><span class="secnum">25.4.1.4</span> Generator.prototype.throw ( <var>exception</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-generator.prototype-@@tostringtag" title="Generator.prototype [ @@toStringTag ]"><span class="secnum">25.4.1.5</span> Generator.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-generator-instances" title="Properties of Generator Instances"><span class="secnum">25.4.2</span> Properties of Generator Instances</a></li><li><span class="item-toggle">◢</span><a href="#sec-generator-abstract-operations" title="Generator Abstract Operations"><span class="secnum">25.4.3</span> Generator Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-generatorstart" title="GeneratorStart ( generator, generatorBody )"><span class="secnum">25.4.3.1</span> GeneratorStart ( <var>generator</var>, <var>generatorBody</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-generatorvalidate" title="GeneratorValidate ( generator )"><span class="secnum">25.4.3.2</span> GeneratorValidate ( <var>generator</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-generatorresume" title="GeneratorResume ( generator, value )"><span class="secnum">25.4.3.3</span> GeneratorResume ( <var>generator</var>, <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-generatorresumeabrupt" title="GeneratorResumeAbrupt ( generator, abruptCompletion )"><span class="secnum">25.4.3.4</span> GeneratorResumeAbrupt ( <var>generator</var>, <var>abruptCompletion</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-getgeneratorkind" title="GetGeneratorKind ( )"><span class="secnum">25.4.3.5</span> GetGeneratorKind ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-generatoryield" title="GeneratorYield ( iterNextObj )"><span class="secnum">25.4.3.6</span> GeneratorYield ( <var>iterNextObj</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-asyncgenerator-objects" title="AsyncGenerator Objects"><span class="secnum">25.5</span> AsyncGenerator Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-properties-of-asyncgenerator-prototype" title="Properties of the AsyncGenerator Prototype Object"><span class="secnum">25.5.1</span> Properties of the AsyncGenerator Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-asyncgenerator-prototype-constructor" title="AsyncGenerator.prototype.constructor"><span class="secnum">25.5.1.1</span> AsyncGenerator.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgenerator-prototype-next" title="AsyncGenerator.prototype.next ( value )"><span class="secnum">25.5.1.2</span> AsyncGenerator.prototype.next ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgenerator-prototype-return" title="AsyncGenerator.prototype.return ( value )"><span class="secnum">25.5.1.3</span> AsyncGenerator.prototype.return ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgenerator-prototype-throw" title="AsyncGenerator.prototype.throw ( exception )"><span class="secnum">25.5.1.4</span> AsyncGenerator.prototype.throw ( <var>exception</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgenerator-prototype-tostringtag" title="AsyncGenerator.prototype [ @@toStringTag ]"><span class="secnum">25.5.1.5</span> AsyncGenerator.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-asyncgenerator-intances" title="Properties of AsyncGenerator Instances"><span class="secnum">25.5.2</span> Properties of AsyncGenerator Instances</a></li><li><span class="item-toggle">◢</span><a href="#sec-asyncgenerator-abstract-operations" title="AsyncGenerator Abstract Operations"><span class="secnum">25.5.3</span> AsyncGenerator Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorrequest-records" title="AsyncGeneratorRequest Records"><span class="secnum">25.5.3.1</span> AsyncGeneratorRequest Records</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorstart" title="AsyncGeneratorStart ( generator, generatorBody )"><span class="secnum">25.5.3.2</span> AsyncGeneratorStart ( <var>generator</var>, <var>generatorBody</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorresolve" title="AsyncGeneratorResolve ( generator, value, done )"><span class="secnum">25.5.3.3</span> AsyncGeneratorResolve ( <var>generator</var>, <var>value</var>, <var>done</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorreject" title="AsyncGeneratorReject ( generator, exception )"><span class="secnum">25.5.3.4</span> AsyncGeneratorReject ( <var>generator</var>, <var>exception</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-asyncgeneratorresumenext" title="AsyncGeneratorResumeNext ( generator )"><span class="secnum">25.5.3.5</span> AsyncGeneratorResumeNext ( <var>generator</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#async-generator-resume-next-return-processor-fulfilled" title="AsyncGeneratorResumeNext Return Processor Fulfilled Functions"><span class="secnum">25.5.3.5.1</span> AsyncGeneratorResumeNext Return Processor Fulfilled Functions</a></li><li><span class="item-toggle-none"></span><a href="#async-generator-resume-next-return-processor-rejected" title="AsyncGeneratorResumeNext Return Processor Rejected Functions"><span class="secnum">25.5.3.5.2</span> AsyncGeneratorResumeNext Return Processor Rejected Functions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratorenqueue" title="AsyncGeneratorEnqueue ( generator, completion )"><span class="secnum">25.5.3.6</span> AsyncGeneratorEnqueue ( <var>generator</var>, <var>completion</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-asyncgeneratoryield" title="AsyncGeneratorYield ( value )"><span class="secnum">25.5.3.7</span> AsyncGeneratorYield ( <var>value</var> )</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-promise-objects" title="Promise Objects"><span class="secnum">25.6</span> Promise Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-promise-abstract-operations" title="Promise Abstract Operations"><span class="secnum">25.6.1</span> Promise Abstract Operations</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-promisecapability-records" title="PromiseCapability Records"><span class="secnum">25.6.1.1</span> PromiseCapability Records</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-ifabruptrejectpromise" title="IfAbruptRejectPromise ( value, capability )"><span class="secnum">25.6.1.1.1</span> IfAbruptRejectPromise ( <var>value</var>, <var>capability</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-promisereaction-records" title="PromiseReaction Records"><span class="secnum">25.6.1.2</span> PromiseReaction Records</a></li><li><span class="item-toggle">◢</span><a href="#sec-createresolvingfunctions" title="CreateResolvingFunctions ( promise )"><span class="secnum">25.6.1.3</span> CreateResolvingFunctions ( <var>promise</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-promise-reject-functions" title="Promise Reject Functions"><span class="secnum">25.6.1.3.1</span> Promise Reject Functions</a></li><li><span class="item-toggle-none"></span><a href="#sec-promise-resolve-functions" title="Promise Resolve Functions"><span class="secnum">25.6.1.3.2</span> Promise Resolve Functions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-fulfillpromise" title="FulfillPromise ( promise, value )"><span class="secnum">25.6.1.4</span> FulfillPromise ( <var>promise</var>, <var>value</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-newpromisecapability" title="NewPromiseCapability ( C )"><span class="secnum">25.6.1.5</span> NewPromiseCapability ( <var>C</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-getcapabilitiesexecutor-functions" title="GetCapabilitiesExecutor Functions"><span class="secnum">25.6.1.5.1</span> GetCapabilitiesExecutor Functions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-ispromise" title="IsPromise ( x )"><span class="secnum">25.6.1.6</span> IsPromise ( <var>x</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-rejectpromise" title="RejectPromise ( promise, reason )"><span class="secnum">25.6.1.7</span> RejectPromise ( <var>promise</var>, <var>reason</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-triggerpromisereactions" title="TriggerPromiseReactions ( reactions, argument )"><span class="secnum">25.6.1.8</span> TriggerPromiseReactions ( <var>reactions</var>, <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-host-promise-rejection-tracker" title="HostPromiseRejectionTracker ( promise, operation )"><span class="secnum">25.6.1.9</span> HostPromiseRejectionTracker ( <var>promise</var>, <var>operation</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-promise-jobs" title="Promise Jobs"><span class="secnum">25.6.2</span> Promise Jobs</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-promisereactionjob" title="PromiseReactionJob ( reaction, argument )"><span class="secnum">25.6.2.1</span> PromiseReactionJob ( <var>reaction</var>, <var>argument</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-promiseresolvethenablejob" title="PromiseResolveThenableJob ( promiseToResolve, thenable, then )"><span class="secnum">25.6.2.2</span> PromiseResolveThenableJob ( <var>promiseToResolve</var>, <var>thenable</var>, <var>then</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-promise-constructor" title="The Promise Constructor"><span class="secnum">25.6.3</span> The Promise Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-promise-executor" title="Promise ( executor )"><span class="secnum">25.6.3.1</span> Promise ( <var>executor</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-promise-constructor" title="Properties of the Promise Constructor"><span class="secnum">25.6.4</span> Properties of the Promise Constructor</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-promise.all" title="Promise.all ( iterable )"><span class="secnum">25.6.4.1</span> Promise.all ( <var>iterable</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-performpromiseall" title="Runtime Semantics: PerformPromiseAll ( iteratorRecord, constructor, resultCapability )"><span class="secnum">25.6.4.1.1</span> RS: PerformPromiseAll ( <var>iteratorRecord</var>, <var>constructor</var>, <var>resultCapability</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-promise.all-resolve-element-functions" title="Promise.all Resolve Element Functions"><span class="secnum">25.6.4.1.2</span> <code>Promise.all</code> Resolve Element Functions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-promise.prototype" title="Promise.prototype"><span class="secnum">25.6.4.2</span> Promise.prototype</a></li><li><span class="item-toggle">◢</span><a href="#sec-promise.race" title="Promise.race ( iterable )"><span class="secnum">25.6.4.3</span> Promise.race ( <var>iterable</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-performpromiserace" title="Runtime Semantics: PerformPromiseRace ( iteratorRecord, constructor, resultCapability )"><span class="secnum">25.6.4.3.1</span> RS: PerformPromiseRace ( <var>iteratorRecord</var>, <var>constructor</var>, <var>resultCapability</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-promise.reject" title="Promise.reject ( r )"><span class="secnum">25.6.4.4</span> Promise.reject ( <var>r</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-promise.resolve" title="Promise.resolve ( x )"><span class="secnum">25.6.4.5</span> Promise.resolve ( <var>x</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-promise-resolve" title="PromiseResolve ( C, x )"><span class="secnum">25.6.4.5.1</span> PromiseResolve ( <var>C</var>, <var>x</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-get-promise-@@species" title="get Promise [ @@species ]"><span class="secnum">25.6.4.6</span> get Promise [ @@species ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-promise-prototype-object" title="Properties of the Promise Prototype Object"><span class="secnum">25.6.5</span> Properties of the Promise Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-promise.prototype.catch" title="Promise.prototype.catch ( onRejected )"><span class="secnum">25.6.5.1</span> Promise.prototype.catch ( <var>onRejected</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-promise.prototype.constructor" title="Promise.prototype.constructor"><span class="secnum">25.6.5.2</span> Promise.prototype.constructor</a></li><li><span class="item-toggle">◢</span><a href="#sec-promise.prototype.finally" title="Promise.prototype.finally ( onFinally )"><span class="secnum">25.6.5.3</span> Promise.prototype.finally ( <var>onFinally</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-thenfinallyfunctions" title="Then Finally Functions"><span class="secnum">25.6.5.3.1</span> Then Finally Functions</a></li><li><span class="item-toggle-none"></span><a href="#sec-catchfinallyfunctions" title="Catch Finally Functions"><span class="secnum">25.6.5.3.2</span> Catch Finally Functions</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-promise.prototype.then" title="Promise.prototype.then ( onFulfilled, onRejected )"><span class="secnum">25.6.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="#sec-performpromisethen" title="PerformPromiseThen ( promise, onFulfilled, onRejected [ , resultCapability ] )"><span class="secnum">25.6.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="#sec-promise.prototype-@@tostringtag" title="Promise.prototype [ @@toStringTag ]"><span class="secnum">25.6.5.5</span> Promise.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-properties-of-promise-instances" title="Properties of Promise Instances"><span class="secnum">25.6.6</span> Properties of Promise Instances</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-async-function-objects" title="AsyncFunction Objects"><span class="secnum">25.7</span> AsyncFunction Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-async-function-constructor" title="The AsyncFunction Constructor"><span class="secnum">25.7.1</span> The AsyncFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-async-function-constructor-arguments" title="AsyncFunction ( p1, p2, … , pn, body )"><span class="secnum">25.7.1.1</span> AsyncFunction ( <var>p1</var>, <var>p2</var>, … , <var>pn</var>, <var>body</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-async-function-constructor-properties" title="Properties of the AsyncFunction Constructor"><span class="secnum">25.7.2</span> Properties of the AsyncFunction Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-async-function-constructor-length" title="AsyncFunction.length"><span class="secnum">25.7.2.1</span> AsyncFunction.length</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-constructor-prototype" title="AsyncFunction.prototype"><span class="secnum">25.7.2.2</span> AsyncFunction.prototype</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-async-function-prototype-properties" title="Properties of the AsyncFunction Prototype Object"><span class="secnum">25.7.3</span> Properties of the AsyncFunction Prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-async-function-prototype-properties-constructor" title="AsyncFunction.prototype.constructor"><span class="secnum">25.7.3.1</span> AsyncFunction.prototype.constructor</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-prototype-properties-toStringTag" title="AsyncFunction.prototype [ @@toStringTag ]"><span class="secnum">25.7.3.2</span> AsyncFunction.prototype [ @@toStringTag ]</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-async-function-instances" title="AsyncFunction Instances"><span class="secnum">25.7.4</span> AsyncFunction Instances</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-async-function-instances-length" title="length"><span class="secnum">25.7.4.1</span> length</a></li><li><span class="item-toggle-none"></span><a href="#sec-async-function-instances-name" title="name"><span class="secnum">25.7.4.2</span> name</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-async-functions-abstract-operations" title="Async Functions Abstract Operations"><span class="secnum">25.7.5</span> Async Functions Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-async-functions-abstract-operations-async-function-start" title="AsyncFunctionStart ( promiseCapability, asyncFunctionBody )"><span class="secnum">25.7.5.1</span> AsyncFunctionStart ( <var>promiseCapability</var>, <var>asyncFunctionBody</var> )</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-reflection" title="Reflection"><span class="secnum">26</span> Reflection</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-reflect-object" title="The Reflect Object"><span class="secnum">26.1</span> The Reflect Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-reflect.apply" title="Reflect.apply ( target, thisArgument, argumentsList )"><span class="secnum">26.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="#sec-reflect.construct" title="Reflect.construct ( target, argumentsList [ , newTarget ] )"><span class="secnum">26.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="#sec-reflect.defineproperty" title="Reflect.defineProperty ( target, propertyKey, attributes )"><span class="secnum">26.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="#sec-reflect.deleteproperty" title="Reflect.deleteProperty ( target, propertyKey )"><span class="secnum">26.1.4</span> Reflect.deleteProperty ( <var>target</var>, <var>propertyKey</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-reflect.get" title="Reflect.get ( target, propertyKey [ , receiver ] )"><span class="secnum">26.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="#sec-reflect.getownpropertydescriptor" title="Reflect.getOwnPropertyDescriptor ( target, propertyKey )"><span class="secnum">26.1.6</span> Reflect.getOwnPropertyDescriptor ( <var>target</var>, <var>propertyKey</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-reflect.getprototypeof" title="Reflect.getPrototypeOf ( target )"><span class="secnum">26.1.7</span> Reflect.getPrototypeOf ( <var>target</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-reflect.has" title="Reflect.has ( target, propertyKey )"><span class="secnum">26.1.8</span> Reflect.has ( <var>target</var>, <var>propertyKey</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-reflect.isextensible" title="Reflect.isExtensible ( target )"><span class="secnum">26.1.9</span> Reflect.isExtensible ( <var>target</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-reflect.ownkeys" title="Reflect.ownKeys ( target )"><span class="secnum">26.1.10</span> Reflect.ownKeys ( <var>target</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-reflect.preventextensions" title="Reflect.preventExtensions ( target )"><span class="secnum">26.1.11</span> Reflect.preventExtensions ( <var>target</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-reflect.set" title="Reflect.set ( target, propertyKey, V [ , receiver ] )"><span class="secnum">26.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="#sec-reflect.setprototypeof" title="Reflect.setPrototypeOf ( target, proto )"><span class="secnum">26.1.13</span> Reflect.setPrototypeOf ( <var>target</var>, <var>proto</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-proxy-objects" title="Proxy Objects"><span class="secnum">26.2</span> Proxy Objects</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-proxy-constructor" title="The Proxy Constructor"><span class="secnum">26.2.1</span> The Proxy Constructor</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-proxy-target-handler" title="Proxy ( target, handler )"><span class="secnum">26.2.1.1</span> Proxy ( <var>target</var>, <var>handler</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-the-proxy-constructor" title="Properties of the Proxy Constructor"><span class="secnum">26.2.2</span> Properties of the Proxy Constructor</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-proxy.revocable" title="Proxy.revocable ( target, handler )"><span class="secnum">26.2.2.1</span> Proxy.revocable ( <var>target</var>, <var>handler</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-proxy-revocation-functions" title="Proxy Revocation Functions"><span class="secnum">26.2.2.1.1</span> Proxy Revocation Functions</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-module-namespace-objects" title="Module Namespace Objects"><span class="secnum">26.3</span> Module Namespace Objects</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-@@tostringtag" title="@@toStringTag"><span class="secnum">26.3.1</span> @@toStringTag</a></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-memory-model" title="Memory Model"><span class="secnum">27</span> Memory Model</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-memory-model-fundamentals" title="Memory Model Fundamentals"><span class="secnum">27.1</span> Memory Model Fundamentals</a></li><li><span class="item-toggle-none"></span><a href="#sec-agent-event-records" title="Agent Events Records"><span class="secnum">27.2</span> Agent Events Records</a></li><li><span class="item-toggle-none"></span><a href="#sec-chosen-value-records" title="Chosen Value Records"><span class="secnum">27.3</span> Chosen Value Records</a></li><li><span class="item-toggle-none"></span><a href="#sec-candidate-executions" title="Candidate Executions"><span class="secnum">27.4</span> Candidate Executions</a></li><li><span class="item-toggle">◢</span><a href="#sec-abstract-operations-for-the-memory-model" title="Abstract Operations for the Memory Model"><span class="secnum">27.5</span> Abstract Operations for the Memory Model</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-event-set" title="EventSet ( execution )"><span class="secnum">27.5.1</span> EventSet ( <var>execution</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-sharedatablockeventset" title="SharedDataBlockEventSet ( execution )"><span class="secnum">27.5.2</span> SharedDataBlockEventSet ( <var>execution</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-synchronizeeventset" title="SynchronizeEventSet ( execution )"><span class="secnum">27.5.3</span> SynchronizeEventSet ( <var>execution</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-hosteventset" title="HostEventSet ( execution )"><span class="secnum">27.5.4</span> HostEventSet ( <var>execution</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-composewriteeventbytes" title="ComposeWriteEventBytes ( execution, byteIndex, Ws )"><span class="secnum">27.5.5</span> ComposeWriteEventBytes ( <var>execution</var>, <var>byteIndex</var>, <var>Ws</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-valueofreadevent" title="ValueOfReadEvent ( execution, R )"><span class="secnum">27.5.6</span> ValueOfReadEvent ( <var>execution</var>, <var>R</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-relations-of-candidate-executions" title="Relations of Candidate Executions"><span class="secnum">27.6</span> Relations of Candidate Executions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-agent-order" title="agent-order"><span class="secnum">27.6.1</span> agent-order</a></li><li><span class="item-toggle-none"></span><a href="#sec-reads-bytes-from" title="reads-bytes-from"><span class="secnum">27.6.2</span> reads-bytes-from</a></li><li><span class="item-toggle-none"></span><a href="#sec-reads-from" title="reads-from"><span class="secnum">27.6.3</span> reads-from</a></li><li><span class="item-toggle-none"></span><a href="#sec-host-synchronizes-with" title="host-synchronizes-with"><span class="secnum">27.6.4</span> host-synchronizes-with</a></li><li><span class="item-toggle-none"></span><a href="#sec-synchronizes-with" title="synchronizes-with"><span class="secnum">27.6.5</span> synchronizes-with</a></li><li><span class="item-toggle-none"></span><a href="#sec-happens-before" title="happens-before"><span class="secnum">27.6.6</span> happens-before</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-properties-of-valid-executions" title="Properties of Valid Executions"><span class="secnum">27.7</span> Properties of Valid Executions</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-valid-chosen-reads" title="Valid Chosen Reads"><span class="secnum">27.7.1</span> Valid Chosen Reads</a></li><li><span class="item-toggle-none"></span><a href="#sec-coherent-reads" title="Coherent Reads"><span class="secnum">27.7.2</span> Coherent Reads</a></li><li><span class="item-toggle-none"></span><a href="#sec-tear-free-aligned-reads" title="Tear Free Reads"><span class="secnum">27.7.3</span> Tear Free Reads</a></li><li><span class="item-toggle-none"></span><a href="#sec-memory-order" title="Sequentially Consistent Atomics"><span class="secnum">27.7.4</span> Sequentially Consistent Atomics</a></li><li><span class="item-toggle-none"></span><a href="#sec-valid-executions" title="Valid Executions"><span class="secnum">27.7.5</span> Valid Executions</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-races" title="Races"><span class="secnum">27.8</span> Races</a></li><li><span class="item-toggle-none"></span><a href="#sec-data-races" title="Data Races"><span class="secnum">27.9</span> Data Races</a></li><li><span class="item-toggle-none"></span><a href="#sec-data-race-freedom" title="Data Race Freedom"><span class="secnum">27.10</span> Data Race Freedom</a></li><li><span class="item-toggle-none"></span><a href="#sec-shared-memory-guidelines" title="Shared Memory Guidelines"><span class="secnum">27.11</span> Shared Memory Guidelines</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-grammar-summary" title="Grammar Summary"><span class="secnum">A</span> Grammar Summary</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#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="#sec-expressions" title="Expressions"><span class="secnum">A.2</span> Expressions</a></li><li><span class="item-toggle-none"></span><a href="#sec-statements" title="Statements"><span class="secnum">A.3</span> Statements</a></li><li><span class="item-toggle-none"></span><a href="#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="#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="#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="#sec-universal-resource-identifier-character-classes" title="Universal Resource Identifier Character Classes"><span class="secnum">A.7</span> Universal Resource Identifier Character Classes</a></li><li><span class="item-toggle-none"></span><a href="#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="#sec-additional-ecmascript-features-for-web-browsers" title="Additional ECMAScript Features for Web Browsers"><span class="secnum">B</span> Additional ECMAScript Features for Web Browsers</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-additional-syntax" title="Additional Syntax"><span class="secnum">B.1</span> Additional Syntax</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-additional-syntax-numeric-literals" title="Numeric Literals"><span class="secnum">B.1.1</span> Numeric Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-additional-syntax-numeric-literals-status-semantics" title="Static Semantics"><span class="secnum">B.1.1.1</span> Static Semantics</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-additional-syntax-string-literals" title="String Literals"><span class="secnum">B.1.2</span> String Literals</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-additional-syntax-string-literals-static-semantics" title="Static Semantics"><span class="secnum">B.1.2.1</span> Static Semantics</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-html-like-comments" title="HTML-like Comments"><span class="secnum">B.1.3</span> HTML-like Comments</a></li><li><span class="item-toggle">◢</span><a href="#sec-regular-expressions-patterns" title="Regular Expressions Patterns"><span class="secnum">B.1.4</span> Regular Expressions Patterns</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-patterns-static-semantics-early-errors-annexb" title="Static Semantics: Early Errors"><span class="secnum">B.1.4.1</span> SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-patterns-static-semantics-is-character-class-annexb" title="Static Semantics: IsCharacterClass"><span class="secnum">B.1.4.2</span> SS: IsCharacterClass</a></li><li><span class="item-toggle-none"></span><a href="#sec-patterns-static-semantics-character-value-annexb" title="Static Semantics: CharacterValue"><span class="secnum">B.1.4.3</span> SS: CharacterValue</a></li><li><span class="item-toggle">◢</span><a href="#sec-regular-expression-patterns-semantics" title="Pattern Semantics"><span class="secnum">B.1.4.4</span> Pattern Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-runtime-semantics-characterrangeorunion-abstract-operation" title="Runtime Semantics: CharacterRangeOrUnion ( A, B )"><span class="secnum">B.1.4.4.1</span> RS: CharacterRangeOrUnion ( <var>A</var>, <var>B</var> )</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle">◢</span><a href="#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="#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="#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="#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="#sec-additional-properties-of-the-object.prototype-object" title="Additional Properties of the Object.prototype Object"><span class="secnum">B.2.2</span> Additional Properties of the Object.prototype Object</a><ol class="toc"><li><span class="item-toggle">◢</span><a href="#sec-object.prototype.__proto__" title="Object.prototype.__proto__"><span class="secnum">B.2.2.1</span> Object.prototype.__proto__</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-get-object.prototype.__proto__" title="get Object.prototype.__proto__"><span class="secnum">B.2.2.1.1</span> get Object.prototype.__proto__</a></li><li><span class="item-toggle-none"></span><a href="#sec-set-object.prototype.__proto__" title="set Object.prototype.__proto__"><span class="secnum">B.2.2.1.2</span> set Object.prototype.__proto__</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.__defineGetter__" title="Object.prototype.__defineGetter__ ( P, getter )"><span class="secnum">B.2.2.2</span> Object.prototype.__defineGetter__ ( <var>P</var>, <var>getter</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.__defineSetter__" title="Object.prototype.__defineSetter__ ( P, setter )"><span class="secnum">B.2.2.3</span> Object.prototype.__defineSetter__ ( <var>P</var>, <var>setter</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.__lookupGetter__" title="Object.prototype.__lookupGetter__ ( P )"><span class="secnum">B.2.2.4</span> Object.prototype.__lookupGetter__ ( <var>P</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-object.prototype.__lookupSetter__" title="Object.prototype.__lookupSetter__ ( P )"><span class="secnum">B.2.2.5</span> Object.prototype.__lookupSetter__ ( <var>P</var> )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-additional-properties-of-the-string.prototype-object" title="Additional Properties of the String.prototype Object"><span class="secnum">B.2.3</span> Additional Properties of the String.prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.substr" title="String.prototype.substr ( start, length )"><span class="secnum">B.2.3.1</span> String.prototype.substr ( <var>start</var>, <var>length</var> )</a></li><li><span class="item-toggle">◢</span><a href="#sec-string.prototype.anchor" title="String.prototype.anchor ( name )"><span class="secnum">B.2.3.2</span> String.prototype.anchor ( <var>name</var> )</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-createhtml" title="Runtime Semantics: CreateHTML ( string, tag, attribute, value )"><span class="secnum">B.2.3.2.1</span> RS: 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="#sec-string.prototype.big" title="String.prototype.big ( )"><span class="secnum">B.2.3.3</span> String.prototype.big ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.blink" title="String.prototype.blink ( )"><span class="secnum">B.2.3.4</span> String.prototype.blink ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.bold" title="String.prototype.bold ( )"><span class="secnum">B.2.3.5</span> String.prototype.bold ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.fixed" title="String.prototype.fixed ( )"><span class="secnum">B.2.3.6</span> String.prototype.fixed ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.fontcolor" title="String.prototype.fontcolor ( color )"><span class="secnum">B.2.3.7</span> String.prototype.fontcolor ( <var>color</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.fontsize" title="String.prototype.fontsize ( size )"><span class="secnum">B.2.3.8</span> String.prototype.fontsize ( <var>size</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.italics" title="String.prototype.italics ( )"><span class="secnum">B.2.3.9</span> String.prototype.italics ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.link" title="String.prototype.link ( url )"><span class="secnum">B.2.3.10</span> String.prototype.link ( <var>url</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.small" title="String.prototype.small ( )"><span class="secnum">B.2.3.11</span> String.prototype.small ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.strike" title="String.prototype.strike ( )"><span class="secnum">B.2.3.12</span> String.prototype.strike ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.sub" title="String.prototype.sub ( )"><span class="secnum">B.2.3.13</span> String.prototype.sub ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-string.prototype.sup" title="String.prototype.sup ( )"><span class="secnum">B.2.3.14</span> String.prototype.sup ( )</a></li><li><span class="item-toggle-none"></span><a href="#String.prototype.trimleft" title="String.prototype.trimLeft ( )"><span class="secnum">B.2.3.15</span> String.prototype.trimLeft ( )</a></li><li><span class="item-toggle-none"></span><a href="#String.prototype.trimright" title="String.prototype.trimRight ( )"><span class="secnum">B.2.3.16</span> String.prototype.trimRight ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-additional-properties-of-the-date.prototype-object" title="Additional Properties of the Date.prototype Object"><span class="secnum">B.2.4</span> Additional Properties of the Date.prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.getyear" title="Date.prototype.getYear ( )"><span class="secnum">B.2.4.1</span> Date.prototype.getYear ( )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.setyear" title="Date.prototype.setYear ( year )"><span class="secnum">B.2.4.2</span> Date.prototype.setYear ( <var>year</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-date.prototype.togmtstring" title="Date.prototype.toGMTString ( )"><span class="secnum">B.2.4.3</span> Date.prototype.toGMTString ( )</a></li></ol></li><li><span class="item-toggle">◢</span><a href="#sec-additional-properties-of-the-regexp.prototype-object" title="Additional Properties of the RegExp.prototype Object"><span class="secnum">B.2.5</span> Additional Properties of the RegExp.prototype Object</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-regexp.prototype.compile" title="RegExp.prototype.compile ( pattern, flags )"><span class="secnum">B.2.5.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="#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="#sec-__proto__-property-names-in-object-initializers" title="__proto__ Property Names in Object Initializers"><span class="secnum">B.3.1</span> __proto__ Property Names in Object Initializers</a></li><li><span class="item-toggle-none"></span><a href="#sec-labelled-function-declarations" title="Labelled Function Declarations"><span class="secnum">B.3.2</span> Labelled Function Declarations</a></li><li><span class="item-toggle">◢</span><a href="#sec-block-level-function-declarations-web-legacy-compatibility-semantics" title="Block-Level Function Declarations Web Legacy Compatibility Semantics"><span class="secnum">B.3.3</span> Block-Level Function Declarations Web Legacy Compatibility Semantics</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-web-compat-functiondeclarationinstantiation" title="Changes to FunctionDeclarationInstantiation"><span class="secnum">B.3.3.1</span> Changes to FunctionDeclarationInstantiation</a></li><li><span class="item-toggle-none"></span><a href="#sec-web-compat-globaldeclarationinstantiation" title="Changes to GlobalDeclarationInstantiation"><span class="secnum">B.3.3.2</span> Changes to GlobalDeclarationInstantiation</a></li><li><span class="item-toggle-none"></span><a href="#sec-web-compat-evaldeclarationinstantiation" title="Changes to EvalDeclarationInstantiation"><span class="secnum">B.3.3.3</span> Changes to EvalDeclarationInstantiation</a></li><li><span class="item-toggle-none"></span><a href="#sec-block-duplicates-allowed-static-semantics" title="Changes to Block Static Semantics: Early Errors"><span class="secnum">B.3.3.4</span> Changes to Block SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-switch-duplicates-allowed-static-semantics" title="Changes to switch Statement Static Semantics: Early Errors"><span class="secnum">B.3.3.5</span> Changes to <code>switch</code> Statement SS: Early Errors</a></li><li><span class="item-toggle-none"></span><a href="#sec-web-compat-blockdeclarationinstantiation" title="Changes to BlockDeclarationInstantiation"><span class="secnum">B.3.3.6</span> Changes to BlockDeclarationInstantiation</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-functiondeclarations-in-ifstatement-statement-clauses" title="FunctionDeclarations in IfStatement Statement Clauses"><span class="secnum">B.3.4</span> FunctionDeclarations in IfStatement Statement Clauses</a></li><li><span class="item-toggle-none"></span><a href="#sec-variablestatements-in-catch-blocks" title="VariableStatements in Catch Blocks"><span class="secnum">B.3.5</span> VariableStatements in Catch Blocks</a></li><li><span class="item-toggle-none"></span><a href="#sec-initializers-in-forin-statement-heads" title="Initializers in ForIn Statement Heads"><span class="secnum">B.3.6</span> Initializers in ForIn Statement Heads</a></li><li><span class="item-toggle">◢</span><a href="#sec-IsHTMLDDA-internal-slot" title="The [[IsHTMLDDA]] Internal Slot"><span class="secnum">B.3.7</span> The [[IsHTMLDDA]] Internal Slot</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-IsHTMLDDA-internal-slot-to-boolean" title="Changes to ToBoolean"><span class="secnum">B.3.7.1</span> Changes to ToBoolean</a></li><li><span class="item-toggle-none"></span><a href="#sec-IsHTMLDDA-internal-slot-aec" title="Changes to Abstract Equality Comparison"><span class="secnum">B.3.7.2</span> Changes to Abstract Equality Comparison</a></li><li><span class="item-toggle-none"></span><a href="#sec-IsHTMLDDA-internal-slot-typeof" title="Changes to the typeof Operator"><span class="secnum">B.3.7.3</span> Changes to the <code>typeof</code> Operator</a></li></ol></li></ol></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-strict-mode-of-ecmascript" title="The Strict Mode of ECMAScript"><span class="secnum">C</span> The Strict Mode of ECMAScript</a></li><li><span class="item-toggle-none"></span><a href="#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">D</span> Corrections and Clarifications in ECMAScript 2015 with Possible Compatibility Impact</a></li><li><span class="item-toggle-none"></span><a href="#sec-additions-and-changes-that-introduce-incompatibilities-with-prior-editions" title="Additions and Changes That Introduce Incompatibilities with Prior Editions"><span class="secnum">E</span> Additions and Changes That Introduce Incompatibilities with Prior Editions</a></li><li><span class="item-toggle-none"></span><a href="#sec-colophon" title="Colophon"><span class="secnum">F</span> Colophon</a></li><li><span class="item-toggle-none"></span><a href="#sec-bibliography" title="Bibliography"><span class="secnum">G</span> Bibliography</a></li><li><span class="item-toggle-none"></span><a href="#sec-copyright-and-software-license" title="Copyright & Software License"><span class="secnum">H</span> Copyright & Software License</a></li></ol></div></div><div id="spec-container">
|
||
<h1 class="version first"><a name="Title"></a></h1>
|
||
<p class="version first"><img src="/ecma-262/9.0/img/ecma-logo.svg" alt="Ecma logo" id="ecma-logo"></p>
|
||
<h1 class="version first">ECMA-262, 10<sup>th</sup> edition, June 2019</h1>
|
||
<h1 class="title">ECMAScript® 2019 Language Specification</h1>
|
||
<p> </p>
|
||
<div id="metadata-block">
|
||
<h1>Contributing to this Specification</h1>
|
||
<p>This specification is developed on GitHub with the help of the
|
||
ECMAScript community. There are a number of ways to contribute to the
|
||
development of this specification:</p>
|
||
<ul>
|
||
<li>GitHub Repository: <a href="https://github.com/tc39/ecma262">https://github.com/tc39/ecma262</a></li>
|
||
<li>Issues: <a href="https://github.com/tc39/ecma262/issues">All Issues</a>, <a href="https://github.com/tc39/ecma262/issues/new">File a New Issue</a></li>
|
||
<li>Pull Requests: <a href="https://github.com/tc39/ecma262/pulls">All Pull Requests</a>, <a href="https://github.com/tc39/ecma262/pulls/new">Create a New Pull Request</a></li>
|
||
<li>Test Suite: <a href="https://github.com/tc39/test262">Test262</a></li>
|
||
<li>Editors:
|
||
|
||
<ul>
|
||
<li><a href="mailto:brian.terlson at microsoft dot com">Brian Terlson</a> (<a href="https://twitter.com/bterlson">@bterlson</a>)</li>
|
||
<li><a href="mailto:bradley.meck at gmail dot com">Bradley Farias</a> (<a href="https://twitter.com/bradleymeck">@bradleymeck</a>)</li>
|
||
<li><a href="mailto:ljharb at gmail dot com">Jordan Harband</a> (<a href="https://twitter.com/ljharb">@ljharb</a>)</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<p>Community:</p>
|
||
<ul>
|
||
<li>Mailing list: <a href="https://esdiscuss.org/">es-discuss</a></li>
|
||
<li>IRC: <a href="ircs://irc.freenode.net:6667">#tc39</a> on <a href="https://freenode.net/kb/answer/chat">freenode</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p>Refer to the <emu-xref href="#sec-colophon" id="_ref_0"><a href="#sec-colophon">colophon</a></emu-xref> for more information on how this document is created.</p>
|
||
</div>
|
||
<emu-intro id="sec-intro">
|
||
<h1>Introduction</h1>
|
||
<p>This Ecma Standard defines the ECMAScript 2019 Language. It is the
|
||
tenth edition of the ECMAScript Language Specification. Since
|
||
publication of the first edition in 1997, ECMAScript has grown to be one
|
||
of the world's most widely used general-purpose programming languages.
|
||
It is best known as the language embedded in web browsers but has also
|
||
been widely adopted for server and embedded applications.</p>
|
||
<p>ECMAScript is based on several originating technologies, the most
|
||
well-known being JavaScript (Netscape) and JScript (Microsoft). The
|
||
language was invented by Brendan Eich at Netscape and first appeared in
|
||
that company's Navigator 2.0 browser. It has appeared in all subsequent
|
||
browsers from Netscape and in all browsers from Microsoft starting with
|
||
Internet Explorer 3.0.</p>
|
||
<p>The development of the ECMAScript Language Specification started in
|
||
November 1996. The first edition of this Ecma Standard was adopted by
|
||
the Ecma General Assembly of June 1997.</p>
|
||
<p>That Ecma Standard was submitted to ISO/IEC JTC 1 for adoption
|
||
under the fast-track procedure, and approved as international standard
|
||
ISO/IEC 16262, in April 1998. The Ecma General Assembly of June 1998
|
||
approved the second edition of ECMA-262 to keep it fully aligned with
|
||
ISO/IEC 16262. Changes between the first and the second edition are
|
||
editorial in nature.</p>
|
||
<p>The third edition of the Standard introduced powerful regular
|
||
expressions, better string handling, new control statements, try/catch
|
||
exception handling, tighter definition of errors, formatting for numeric
|
||
output and minor changes in anticipation of future language growth. The
|
||
third edition of the ECMAScript standard was adopted by the Ecma
|
||
General Assembly of December 1999 and published as ISO/IEC 16262:2002 in
|
||
June 2002.</p>
|
||
<p>After publication of the third edition, ECMAScript achieved massive
|
||
adoption in conjunction with the World Wide Web where it has become the
|
||
programming language that is supported by essentially all web browsers.
|
||
Significant work was done to develop a fourth edition of ECMAScript.
|
||
However, that work was not completed and not published as the fourth
|
||
edition of ECMAScript but some of it was incorporated into the
|
||
development of the sixth edition.</p>
|
||
<p>The fifth edition of ECMAScript (published as ECMA-262 5<sup>th</sup>
|
||
edition) codified de facto interpretations of the language
|
||
specification that have become common among browser implementations and
|
||
added support for new features that had emerged since the publication of
|
||
the third edition. Such features include accessor properties,
|
||
reflective creation and inspection of objects, program control of
|
||
property attributes, additional array manipulation functions, support
|
||
for the JSON object encoding format, and a strict mode that provides
|
||
enhanced error checking and program security. The fifth edition was
|
||
adopted by the Ecma General Assembly of December 2009.</p>
|
||
<p>The fifth edition was submitted to ISO/IEC JTC 1 for adoption under
|
||
the fast-track procedure, and approved as international standard
|
||
ISO/IEC 16262:2011. Edition 5.1 of the ECMAScript Standard incorporated
|
||
minor corrections and is the same text as ISO/IEC 16262:2011. The 5.1
|
||
Edition was adopted by the Ecma General Assembly of June 2011.</p>
|
||
<p>Focused development of the sixth edition started in 2009, as the
|
||
fifth edition was being prepared for publication. However, this was
|
||
preceded by significant experimentation and language enhancement design
|
||
efforts dating to the publication of the third edition in 1999. In a
|
||
very real sense, the completion of the sixth edition is the culmination
|
||
of a fifteen year effort. The goals for this addition included providing
|
||
better support for large applications, library creation, and for use of
|
||
ECMAScript as a compilation target for other languages. Some of its
|
||
major enhancements included modules, class declarations, lexical block
|
||
scoping, iterators and generators, promises for asynchronous
|
||
programming, destructuring patterns, and proper tail calls. The
|
||
ECMAScript library of built-ins was expanded to support additional data
|
||
abstractions including maps, sets, and arrays of binary numeric values
|
||
as well as additional support for Unicode supplemental characters in
|
||
strings and regular expressions. The built-ins were also made extensible
|
||
via subclassing. The sixth edition provides the foundation for regular,
|
||
incremental language and library enhancements. The sixth edition was
|
||
adopted by the General Assembly of June 2015.</p>
|
||
<p>ECMAScript 2016 was the first ECMAScript edition released under
|
||
Ecma TC39's new yearly release cadence and open development process. A
|
||
plain-text source document was built from the ECMAScript 2015 source
|
||
document to serve as the base for further development entirely on
|
||
GitHub. Over the year of this standard's development, hundreds of pull
|
||
requests and issues were filed representing thousands of bug fixes,
|
||
editorial fixes and other improvements. Additionally, numerous software
|
||
tools were developed to aid in this effort including Ecmarkup,
|
||
Ecmarkdown, and Grammarkdown. ES2016 also included support for a new
|
||
exponentiation operator and adds a new method to Array.prototype called <code>includes</code>.</p>
|
||
<p>ECMAScript 2017 introduced Async Functions, Shared Memory, and
|
||
Atomics along with smaller language and library enhancements, bug fixes,
|
||
and editorial updates. Async functions improve the asynchronous
|
||
programming experience by providing syntax for promise-returning
|
||
functions. Shared Memory and Atomics introduce a new <emu-xref href="#sec-memory-model" id="_ref_855"><a href="#sec-memory-model">memory model</a></emu-xref> that allows multi-<emu-xref href="#agent" id="_ref_856"><a href="#agent">agent</a></emu-xref>
|
||
programs to communicate using atomic operations that ensure a
|
||
well-defined execution order even on parallel CPUs. This specification
|
||
also includes new static methods on Object: <code>Object.values</code>, <code>Object.entries</code>, and <code>Object.getOwnPropertyDescriptors</code>.</p>
|
||
<p>ECMAScript 2018 introduced support for asynchronous iteration via
|
||
the AsyncIterator protocol and async generators. It also included four
|
||
new regular expression features: the dotAll flag, named capture groups,
|
||
Unicode property escapes, and look-behind assertions. Lastly it included
|
||
rest parameter and spread operator support for object properties.</p>
|
||
<p>This specification, the 10<sup>th</sup> edition, introduces a few new built-in functions: <code>flat</code> and <code>flatMap</code> on <code>Array.prototype</code> for flattening arrays, <code>Object.fromEntries</code> for directly turning the return value of <code>Object.entries</code> into a new Object, and <code>trimStart</code> and <code>trimEnd</code> on <code>String.prototype</code> as better-named alternatives to the widely implemented but non-standard <code>String.prototype.trimLeft</code> and <code>trimRight</code>
|
||
built-ins. In addition, this specification includes a few minor updates
|
||
to syntax and semantics. Updated syntax includes optional catch binding
|
||
parameters and allowing U+2028 (LINE SEPARATOR) and U+2029 (PARAGRAPH
|
||
SEPARATOR) in string literals to align with JSON. Other updates include
|
||
requiring that <code>Array.prototype.sort</code> be a stable sort, requiring that JSON.stringify return well-formed UTF-8 regardless of input, and clarifying <code>Function.prototype.toString</code> by requiring that it either return the corresponding original source text or a standard placeholder.</p>
|
||
<p>Dozens of individuals representing many organizations have made
|
||
very significant contributions within Ecma TC39 to the development of
|
||
this edition and to the prior editions. In addition, a vibrant community
|
||
has emerged supporting TC39's ECMAScript efforts. This community has
|
||
reviewed numerous drafts, filed thousands of bug reports, performed
|
||
implementation experiments, contributed test suites, and educated the
|
||
world-wide developer community about ECMAScript. Unfortunately, it is
|
||
impossible to identify and acknowledge every person and organization who
|
||
has contributed to this effort.</p>
|
||
<p>
|
||
Allen Wirfs-Brock<br>
|
||
ECMA-262, Project Editor, 6<sup>th</sup> Edition
|
||
|
||
</p>
|
||
<p>
|
||
Brian Terlson<br>
|
||
ECMA-262, Project Editor, 7<sup>th</sup> through 10<sup>th</sup> Editions
|
||
|
||
</p>
|
||
</emu-intro>
|
||
|
||
<emu-clause id="sec-scope">
|
||
<h1><span class="secnum">1</span>Scope</h1>
|
||
<p>This Standard defines the ECMAScript 2019 general-purpose programming language.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-conformance">
|
||
<h1><span class="secnum">2</span>Conformance</h1>
|
||
<p>A conforming implementation of ECMAScript must provide and support
|
||
all the types, values, objects, properties, functions, and program
|
||
syntax and semantics described in this specification.</p>
|
||
<p>A conforming implementation of ECMAScript must interpret source
|
||
text input in conformance with the latest version of the Unicode
|
||
Standard and ISO/IEC 10646.</p>
|
||
<p>A conforming implementation of ECMAScript that provides an
|
||
application programming interface (API) that supports programs that need
|
||
to adapt to the linguistic and cultural conventions used by different
|
||
human languages and countries must implement the interface defined by
|
||
the most recent edition of ECMA-402 that is compatible with this
|
||
specification.</p>
|
||
<p>A conforming implementation of ECMAScript may provide additional
|
||
types, values, objects, properties, and functions beyond those described
|
||
in this specification. In particular, a conforming implementation of
|
||
ECMAScript may provide properties not described in this specification,
|
||
and values for those properties, for objects that are described in this
|
||
specification.</p>
|
||
<p>A conforming implementation of ECMAScript may support program and
|
||
regular expression syntax not described in this specification. In
|
||
particular, a conforming implementation of ECMAScript may support
|
||
program syntax that makes use of the “future reserved words” listed in
|
||
subclause <emu-xref href="#sec-future-reserved-words" id="_ref_1"><a href="#sec-future-reserved-words">11.6.2.2</a></emu-xref> of this specification.</p>
|
||
<p>A conforming implementation of ECMAScript must not implement any
|
||
extension that is listed as a Forbidden Extension in subclause <emu-xref href="#sec-forbidden-extensions" id="_ref_2"><a href="#sec-forbidden-extensions">16.2</a></emu-xref>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-normative-references">
|
||
<h1><span class="secnum">3</span>Normative References</h1>
|
||
<p>The following referenced documents are indispensable for the
|
||
application of this document. For dated references, only the edition
|
||
cited applies. For undated references, the latest edition of the
|
||
referenced document (including any amendments) applies.</p>
|
||
<p>ISO/IEC 10646 <i>Information Technology – Universal Multiple-Octet
|
||
Coded Character Set (UCS) plus Amendment 1:2005, Amendment 2:2006,
|
||
Amendment 3:2008, and Amendment 4:2008</i>, plus additional amendments and corrigenda, or successor</p>
|
||
<p>ECMA-402, <i>ECMAScript 2015 Internationalization API Specification</i>.
|
||
|
||
<br>
|
||
<a href="https://ecma-international.org/publications/standards/Ecma-402.htm">https://ecma-international.org/publications/standards/Ecma-402.htm</a></p>
|
||
<p>ECMA-404, <i>The JSON Data Interchange Format</i>.
|
||
|
||
<br>
|
||
<a href="https://ecma-international.org/publications/standards/Ecma-404.htm">https://ecma-international.org/publications/standards/Ecma-404.htm</a></p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-overview">
|
||
<h1><span class="secnum">4</span>Overview</h1>
|
||
<p>This section contains a non-normative overview of the ECMAScript language.</p>
|
||
<p>ECMAScript is an object-oriented programming language for
|
||
performing computations and manipulating computational objects within a
|
||
host environment. ECMAScript as defined here is not intended to be
|
||
computationally self-sufficient; indeed, there are no provisions in this
|
||
specification for input of external data or output of computed results.
|
||
Instead, it is expected that the computational environment of an
|
||
ECMAScript program will provide not only the objects and other
|
||
facilities described in this specification but also certain
|
||
environment-specific objects, whose description and behaviour are beyond
|
||
the scope of this specification except to indicate that they may
|
||
provide certain properties that can be accessed and certain functions
|
||
that can be called from an ECMAScript program.</p>
|
||
<p>ECMAScript was originally designed to be used as a scripting
|
||
language, but has become widely used as a general-purpose programming
|
||
language. A <em>scripting language</em> is a programming language that
|
||
is used to manipulate, customize, and automate the facilities of an
|
||
existing system. In such systems, useful functionality is already
|
||
available through a user interface, and the scripting language is a
|
||
mechanism for exposing that functionality to program control. In this
|
||
way, the existing system is said to provide a host environment of
|
||
objects and facilities, which completes the capabilities of the
|
||
scripting language. A scripting language is intended for use by both
|
||
professional and non-professional programmers.</p>
|
||
<p>ECMAScript was originally designed to be a <em>Web scripting language</em>,
|
||
providing a mechanism to enliven Web pages in browsers and to perform
|
||
server computation as part of a Web-based client-server architecture.
|
||
ECMAScript is now used to provide core scripting capabilities for a
|
||
variety of host environments. Therefore the core language is specified
|
||
in this document apart from any particular host environment.</p>
|
||
<p>ECMAScript usage has moved beyond simple scripting and it is now
|
||
used for the full spectrum of programming tasks in many different
|
||
environments and scales. As the usage of ECMAScript has expanded, so has
|
||
the features and facilities it provides. ECMAScript is now a fully
|
||
featured general-purpose programming language.</p>
|
||
<p>Some of the facilities of ECMAScript are similar to those used in
|
||
other programming languages; in particular C, Java™, Self, and Scheme as
|
||
described in:</p>
|
||
<p>ISO/IEC 9899:1996, <i>Programming Languages – C</i>.</p>
|
||
<p>Gosling, James, Bill Joy and Guy Steele. <i>The Java<sup>™</sup> Language Specification</i>. Addison Wesley Publishing Co., 1996.</p>
|
||
<p>Ungar, David, and Smith, Randall B. Self: The Power of Simplicity. <i>OOPSLA '87 Conference Proceedings</i>, pp. 227-241, Orlando, FL, October 1987.</p>
|
||
<p><i>IEEE Standard for the Scheme Programming Language</i>. IEEE Std 1178-1990.</p>
|
||
|
||
<emu-clause id="sec-web-scripting">
|
||
<h1><span class="secnum">4.1</span>Web Scripting</h1>
|
||
<p>A web browser provides an ECMAScript host environment for
|
||
client-side computation including, for instance, objects that represent
|
||
windows, menus, pop-ups, dialog boxes, text areas, anchors, frames,
|
||
history, cookies, and input/output. Further, the host environment
|
||
provides a means to attach scripting code to events such as change of
|
||
focus, page and image loading, unloading, error and abort, selection,
|
||
form submission, and mouse actions. Scripting code appears within the
|
||
HTML and the displayed page is a combination of user interface elements
|
||
and fixed and computed text and images. The scripting code is reactive
|
||
to user interaction, and there is no need for a main program.</p>
|
||
<p>A web server provides a different host environment for
|
||
server-side computation including objects representing requests,
|
||
clients, and files; and mechanisms to lock and share data. By using
|
||
browser-side and server-side scripting together, it is possible to
|
||
distribute computation between the client and server while providing a
|
||
customized user interface for a Web-based application.</p>
|
||
<p>Each Web browser and server that supports ECMAScript supplies its
|
||
own host environment, completing the ECMAScript execution environment.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ecmascript-overview">
|
||
<h1><span class="secnum">4.2</span>ECMAScript Overview</h1>
|
||
<p>The following is an informal overview of ECMAScript—not all parts
|
||
of the language are described. This overview is not part of the
|
||
standard proper.</p>
|
||
<p>ECMAScript is object-based: basic language and host facilities
|
||
are provided by objects, and an ECMAScript program is a cluster of
|
||
communicating objects. In ECMAScript, an <em>object</em> is a collection of zero or more <em>properties</em> each with <em>attributes</em> that determine how each property can be used—for example, when the Writable attribute for a property is set to <emu-val>false</emu-val>,
|
||
any attempt by executed ECMAScript code to assign a different value to
|
||
the property fails. Properties are containers that hold other objects, <em>primitive values</em>, or <em>functions</em>. A primitive value is a member of one of the following built-in types: <b>Undefined</b>, <b>Null</b>, <b>Boolean</b>, <b>Number</b>, <b>String</b>, and <b>Symbol;</b> an object is a member of the built-in type <b>Object</b>; and a function is a callable object. A function that is associated with an object via a property is called a <em>method</em>.</p>
|
||
<p>ECMAScript defines a collection of <em>built-in objects</em> that round out the definition of ECMAScript entities. These built-in objects include the <emu-xref href="#sec-global-object" id="_ref_857"><a href="#sec-global-object">global object</a></emu-xref>; objects that are fundamental to the <emu-xref href="#sec-runtime-semantics" id="_ref_858"><a href="#sec-runtime-semantics">runtime semantics</a></emu-xref> of the language including <code>Object</code>, <code>Function</code>, <code>Boolean</code>, <code>Symbol</code>, and various <code>Error</code> objects; objects that represent and manipulate numeric values including <code>Math</code>, <code>Number</code>, and <code>Date</code>; the text processing objects <code>String</code> and <code>RegExp</code>; objects that are indexed collections of values including <code>Array</code>
|
||
and nine different kinds of Typed Arrays whose elements all have a
|
||
specific numeric data representation; keyed collections including <code>Map</code> and <code>Set</code> objects; objects supporting structured data including the <code>JSON</code> object, <code>ArrayBuffer</code>, <code>SharedArrayBuffer</code>, and <code>DataView</code>; objects supporting control abstractions including generator functions and <code>Promise</code> objects; and reflection objects including <code>Proxy</code> and <code>Reflect</code>.</p>
|
||
<p>ECMAScript also defines a set of built-in <em>operators</em>.
|
||
ECMAScript operators include various unary operations, multiplicative
|
||
operators, additive operators, bitwise shift operators, relational
|
||
operators, equality operators, binary bitwise operators, binary logical
|
||
operators, assignment operators, and the comma operator.</p>
|
||
<p>Large ECMAScript programs are supported by <em>modules</em>
|
||
which allow a program to be divided into multiple sequences of
|
||
statements and declarations. Each module explicitly identifies
|
||
declarations it uses that need to be provided by other modules and which
|
||
of its declarations are available for use by other modules.</p>
|
||
<p>ECMAScript syntax intentionally resembles Java syntax. ECMAScript
|
||
syntax is relaxed to enable it to serve as an easy-to-use scripting
|
||
language. For example, a variable is not required to have its type
|
||
declared nor are types associated with properties, and defined functions
|
||
are not required to have their declarations appear textually before
|
||
calls to them.</p>
|
||
|
||
<emu-clause id="sec-objects">
|
||
<h1><span class="secnum">4.2.1</span>Objects</h1>
|
||
<p>Even though ECMAScript includes syntax for class definitions,
|
||
ECMAScript objects are not fundamentally class-based such as those in
|
||
C++, Smalltalk, or Java. Instead objects may be created in various ways
|
||
including via a literal notation or via <em>constructors</em> which
|
||
create objects and then execute code that initializes all or part of
|
||
them by assigning initial values to their properties. Each <emu-xref href="#constructor" id="_ref_859"><a href="#constructor">constructor</a></emu-xref> is a function that has a property named <code>"prototype"</code> that is used to implement <em>prototype-based inheritance</em> and <em>shared properties</em>. Objects are created by using constructors in <b>new</b> expressions; for example, <code>new Date(2009, 11)</code> creates a new Date object. Invoking a <emu-xref href="#constructor" id="_ref_860"><a href="#constructor">constructor</a></emu-xref> without using <b>new</b> has consequences that depend on the <emu-xref href="#constructor" id="_ref_861"><a href="#constructor">constructor</a></emu-xref>. For example, <code>Date()</code> produces a string representation of the current date and time rather than an object.</p>
|
||
<p>Every object created by a <emu-xref href="#constructor" id="_ref_862"><a href="#constructor">constructor</a></emu-xref> has an implicit reference (called the object's <em>prototype</em>) to the value of its <emu-xref href="#constructor" id="_ref_863"><a href="#constructor">constructor</a></emu-xref>'s <code>"prototype"</code> property. Furthermore, a prototype may have a non-null implicit reference to its prototype, and so on; this is called the <em>prototype chain</em>.
|
||
When a reference is made to a property in an object, that reference is
|
||
to the property of that name in the first object in the prototype chain
|
||
that contains a property of that name. In other words, first the object
|
||
mentioned directly is examined for such a property; if that object
|
||
contains the named property, that is the property to which the reference
|
||
refers; if that object does not contain the named property, the
|
||
prototype for that object is examined next; and so on.</p>
|
||
<emu-figure id="figure-1" caption="Object/Prototype Relationships"><figure><figcaption>Figure 1: Object/Prototype Relationships</figcaption>
|
||
<object data="ECMAScript%C2%AE%202019%20Language%C2%A0Specification_files/figure-1.svg" type="image/svg+xml" width="719" height="354"> <img alt="An image of lots of boxes and arrows." src="img/figure-1.png" width="719" height="354"> </object>
|
||
</figure></emu-figure>
|
||
<p>In a class-based object-oriented language, in general, state is
|
||
carried by instances, methods are carried by classes, and inheritance
|
||
is only of structure and behaviour. In ECMAScript, the state and methods
|
||
are carried by objects, while structure, behaviour, and state are all
|
||
inherited.</p>
|
||
<p>All objects that do not directly contain a particular property
|
||
that their prototype contains share that property and its value. Figure 1
|
||
illustrates this:</p>
|
||
<p><b>CF</b> is a <emu-xref href="#constructor" id="_ref_864"><a href="#constructor">constructor</a></emu-xref> (and also an object). Five objects have been created by using <code>new</code> expressions: <b>cf<sub>1</sub></b>, <b>cf<sub>2</sub></b>, <b>cf<sub>3</sub></b>, <b>cf<sub>4</sub></b>, and <b>cf<sub>5</sub></b>. Each of these objects contains properties named <code>q1</code> and <code>q2</code>. The dashed lines represent the implicit prototype relationship; so, for example, <b>cf<sub>3</sub></b>'s prototype is <b>CF<sub>p</sub></b>. The <emu-xref href="#constructor" id="_ref_865"><a href="#constructor">constructor</a></emu-xref>, <b>CF</b>, has two properties itself, named <code>P1</code> and <code>P2</code>, which are not visible to <b>CF<sub>p</sub></b>, <b>cf<sub>1</sub></b>, <b>cf<sub>2</sub></b>, <b>cf<sub>3</sub></b>, <b>cf<sub>4</sub></b>, or <b>cf<sub>5</sub></b>. The property named <code>CFP1</code> in <b>CF<sub>p</sub></b> is shared by <b>cf<sub>1</sub></b>, <b>cf<sub>2</sub></b>, <b>cf<sub>3</sub></b>, <b>cf<sub>4</sub></b>, and <b>cf<sub>5</sub></b> (but not by <b>CF</b>), as are any properties found in <b>CF<sub>p</sub></b>'s implicit prototype chain that are not named <code>q1</code>, <code>q2</code>, or <code>CFP1</code>. Notice that there is no implicit prototype link between <b>CF</b> and <b>CF<sub>p</sub></b>.</p>
|
||
<p>Unlike most class-based object languages, properties can be
|
||
added to objects dynamically by assigning values to them. That is,
|
||
constructors are not required to name or assign values to all or any of
|
||
the constructed object's properties. In the above diagram, one could add
|
||
a new shared property for <b>cf<sub>1</sub></b>, <b>cf<sub>2</sub></b>, <b>cf<sub>3</sub></b>, <b>cf<sub>4</sub></b>, and <b>cf<sub>5</sub></b> by assigning a new value to the property in <b>CF<sub>p</sub></b>.</p>
|
||
<p>Although ECMAScript objects are not inherently class-based, it
|
||
is often convenient to define class-like abstractions based upon a
|
||
common pattern of <emu-xref href="#constructor" id="_ref_866"><a href="#constructor">constructor</a></emu-xref>
|
||
functions, prototype objects, and methods. The ECMAScript built-in
|
||
objects themselves follow such a class-like pattern. Beginning with
|
||
ECMAScript 2015, the ECMAScript language includes syntactic class
|
||
definitions that permit programmers to concisely define objects that
|
||
conform to the same class-like abstraction pattern used by the built-in
|
||
objects.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-strict-variant-of-ecmascript">
|
||
<h1><span class="secnum">4.2.2</span>The Strict Variant of ECMAScript</h1>
|
||
<p>The ECMAScript Language recognizes the possibility that some
|
||
users of the language may wish to restrict their usage of some features
|
||
available in the language. They might do so in the interests of
|
||
security, to avoid what they consider to be error-prone features, to get
|
||
enhanced error checking, or for other reasons of their choosing. In
|
||
support of this possibility, ECMAScript defines a strict variant of the
|
||
language. The strict variant of the language excludes some specific
|
||
syntactic and semantic features of the regular ECMAScript language and
|
||
modifies the detailed semantics of some features. The strict variant
|
||
also specifies additional error conditions that must be reported by
|
||
throwing error exceptions in situations that are not specified as errors
|
||
by the non-strict form of the language.</p>
|
||
<p>The strict variant of ECMAScript is commonly referred to as the <em>strict mode</em>
|
||
of the language. Strict mode selection and use of the strict mode
|
||
syntax and semantics of ECMAScript is explicitly made at the level of
|
||
individual ECMAScript source text units. Because strict mode is selected
|
||
at the level of a syntactic source text unit, strict mode only imposes
|
||
restrictions that have local effect within such a source text unit.
|
||
Strict mode does not restrict or modify any aspect of the ECMAScript
|
||
semantics that must operate consistently across multiple source text
|
||
units. A complete ECMAScript program may be composed of both strict mode
|
||
and non-strict mode ECMAScript source text units. In this case, strict
|
||
mode only applies when actually executing code that is defined within a
|
||
strict mode source text unit.</p>
|
||
<p>In order to conform to this specification, an ECMAScript
|
||
implementation must implement both the full unrestricted ECMAScript
|
||
language and the strict variant of the ECMAScript language as defined by
|
||
this specification. In addition, an implementation must support the
|
||
combination of unrestricted and strict mode source text units into a
|
||
single composite program.</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions">
|
||
<h1><span class="secnum">4.3</span>Terms and Definitions</h1>
|
||
<p>For the purposes of this document, the following terms and definitions apply.</p>
|
||
|
||
<emu-clause id="sec-type">
|
||
<h1><span class="secnum">4.3.1</span>type</h1>
|
||
<p>set of data values as defined in clause <emu-xref href="#sec-ecmascript-data-types-and-values" id="_ref_3"><a href="#sec-ecmascript-data-types-and-values">6</a></emu-xref> of this specification</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-primitive-value">
|
||
<h1><span class="secnum">4.3.2</span>primitive value</h1>
|
||
<p>member of one of the types Undefined, Null, Boolean, Number, Symbol, or String as defined in clause <emu-xref href="#sec-ecmascript-data-types-and-values" id="_ref_4"><a href="#sec-ecmascript-data-types-and-values">6</a></emu-xref></p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>A primitive value is a datum that is represented directly at the lowest level of the language implementation.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-object">
|
||
<h1><span class="secnum">4.3.3</span>object</h1>
|
||
<p>member of the type Object</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>An object is a collection of properties and has a single prototype object. The prototype may be the null value.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-constructor">
|
||
<h1><span class="secnum">4.3.4</span>constructor</h1>
|
||
<p><emu-xref href="#function-object" id="_ref_867"><a href="#function-object">function object</a></emu-xref> that creates and initializes objects</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The value of a <emu-xref href="#constructor" id="_ref_868"><a href="#constructor">constructor</a></emu-xref>'s <code>prototype</code> property is a prototype object that is used to implement inheritance and shared properties.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-prototype">
|
||
<h1><span class="secnum">4.3.5</span>prototype</h1>
|
||
<p>object that provides shared properties for other objects</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>When a <emu-xref href="#constructor" id="_ref_869"><a href="#constructor">constructor</a></emu-xref> creates an object, that object implicitly references the <emu-xref href="#constructor" id="_ref_870"><a href="#constructor">constructor</a></emu-xref>'s <code>prototype</code> property for the purpose of resolving property references. The <emu-xref href="#constructor" id="_ref_871"><a href="#constructor">constructor</a></emu-xref>'s <code>prototype</code> property can be referenced by the program expression <code><var>constructor</var>.prototype</code>,
|
||
and properties added to an object's prototype are shared, through
|
||
inheritance, by all objects sharing the prototype. Alternatively, a new
|
||
object may be created with an explicitly specified prototype by using
|
||
the <code>Object.create</code> built-in function.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object">
|
||
<h1><span class="secnum">4.3.6</span>ordinary object</h1>
|
||
<p>object that has the default behaviour for the essential internal methods that must be supported by all objects</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-exotic-object">
|
||
<h1><span class="secnum">4.3.7</span>exotic object</h1>
|
||
<p>object that does not have the default behaviour for one or more of the essential internal methods</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Any object that is not an ordinary object is an <emu-xref href="#exotic-object" id="_ref_872"><a href="#exotic-object">exotic object</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-standard-object">
|
||
<h1><span class="secnum">4.3.8</span>standard object</h1>
|
||
<p>object whose semantics are defined by this specification</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-built-in-object">
|
||
<h1><span class="secnum">4.3.9</span>built-in object</h1>
|
||
<p>object specified and supplied by an ECMAScript implementation</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Standard built-in objects are defined in this specification.
|
||
An ECMAScript implementation may specify and supply additional kinds of
|
||
built-in objects. A <em>built-in <emu-xref href="#constructor" id="_ref_873"><a href="#constructor">constructor</a></emu-xref></em> is a built-in object that is also a <emu-xref href="#constructor" id="_ref_874"><a href="#constructor">constructor</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-undefined-value">
|
||
<h1><span class="secnum">4.3.10</span>undefined value</h1>
|
||
<p>primitive value used when a variable has not been assigned a value</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-undefined-type">
|
||
<h1><span class="secnum">4.3.11</span>Undefined type</h1>
|
||
<p>type whose sole value is the <emu-val>undefined</emu-val> value</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-null-value">
|
||
<h1><span class="secnum">4.3.12</span>null value</h1>
|
||
<p>primitive value that represents the intentional absence of any object value</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-null-type">
|
||
<h1><span class="secnum">4.3.13</span>Null type</h1>
|
||
<p>type whose sole value is the <emu-val>null</emu-val> value</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-boolean-value">
|
||
<h1><span class="secnum">4.3.14</span>Boolean value</h1>
|
||
<p>member of the Boolean type</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>There are only two Boolean values, <emu-val>true</emu-val> and <emu-val>false</emu-val>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-boolean-type">
|
||
<h1><span class="secnum">4.3.15</span>Boolean type</h1>
|
||
<p>type consisting of the primitive values <emu-val>true</emu-val> and <emu-val>false</emu-val></p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-boolean-object">
|
||
<h1><span class="secnum">4.3.16</span>Boolean object</h1>
|
||
<p>member of the Object type that is an instance of the standard built-in <code>Boolean</code> <emu-xref href="#constructor" id="_ref_875"><a href="#constructor">constructor</a></emu-xref></p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>A Boolean object is created by using the <code>Boolean</code> <emu-xref href="#constructor" id="_ref_876"><a href="#constructor">constructor</a></emu-xref> in a <code>new</code>
|
||
expression, supplying a Boolean value as an argument. The resulting
|
||
object has an internal slot whose value is the Boolean value. A Boolean
|
||
object can be coerced to a Boolean value.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-string-value">
|
||
<h1><span class="secnum">4.3.17</span>String value</h1>
|
||
<p>primitive value that is a finite ordered sequence of zero or more 16-bit unsigned integer values</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>A String value is a member of the String type. Each integer
|
||
value in the sequence usually represents a single 16-bit unit of UTF-16
|
||
text. However, ECMAScript does not place any restrictions or
|
||
requirements on the values except that they must be 16-bit unsigned
|
||
integers.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-string-type">
|
||
<h1><span class="secnum">4.3.18</span>String type</h1>
|
||
<p>set of all possible String values</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-string-object">
|
||
<h1><span class="secnum">4.3.19</span>String object</h1>
|
||
<p>member of the Object type that is an instance of the standard built-in <code>String</code> <emu-xref href="#constructor" id="_ref_877"><a href="#constructor">constructor</a></emu-xref></p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>A String object is created by using the <code>String</code> <emu-xref href="#constructor" id="_ref_878"><a href="#constructor">constructor</a></emu-xref> in a <code>new</code>
|
||
expression, supplying a String value as an argument. The resulting
|
||
object has an internal slot whose value is the String value. A String
|
||
object can be coerced to a String value by calling the <code>String</code> <emu-xref href="#constructor" id="_ref_879"><a href="#constructor">constructor</a></emu-xref> as a function (<emu-xref href="#sec-string-constructor-string-value" id="_ref_5"><a href="#sec-string-constructor-string-value">21.1.1.1</a></emu-xref>).</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-number-value">
|
||
<h1><span class="secnum">4.3.20</span>Number value</h1>
|
||
<p>primitive value corresponding to a double-precision 64-bit binary format IEEE 754-2008 value</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>A Number value is a member of the Number type and is a direct representation of a number.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-number-type">
|
||
<h1><span class="secnum">4.3.21</span>Number type</h1>
|
||
<p>set of all possible Number values including the special “Not-a-Number” (NaN) value, positive infinity, and negative infinity</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-number-object">
|
||
<h1><span class="secnum">4.3.22</span>Number object</h1>
|
||
<p>member of the Object type that is an instance of the standard built-in <code>Number</code> <emu-xref href="#constructor" id="_ref_880"><a href="#constructor">constructor</a></emu-xref></p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>A Number object is created by using the <code>Number</code> <emu-xref href="#constructor" id="_ref_881"><a href="#constructor">constructor</a></emu-xref> in a <code>new</code>
|
||
expression, supplying a number value as an argument. The resulting
|
||
object has an internal slot whose value is the number value. A Number
|
||
object can be coerced to a number value by calling the <code>Number</code> <emu-xref href="#constructor" id="_ref_882"><a href="#constructor">constructor</a></emu-xref> as a function (<emu-xref href="#sec-number-constructor-number-value" id="_ref_6"><a href="#sec-number-constructor-number-value">20.1.1.1</a></emu-xref>).</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-infinity">
|
||
<h1><span class="secnum">4.3.23</span>Infinity</h1>
|
||
<p>number value that is the positive infinite number value</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-nan">
|
||
<h1><span class="secnum">4.3.24</span>NaN</h1>
|
||
<p>number value that is an IEEE 754-2008 “Not-a-Number” value</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-symbol-value">
|
||
<h1><span class="secnum">4.3.25</span>Symbol value</h1>
|
||
<p>primitive value that represents a unique, non-String Object property key</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-symbol-type">
|
||
<h1><span class="secnum">4.3.26</span>Symbol type</h1>
|
||
<p>set of all possible Symbol values</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-symbol-object">
|
||
<h1><span class="secnum">4.3.27</span>Symbol object</h1>
|
||
<p>member of the Object type that is an instance of the standard built-in <code>Symbol</code> <emu-xref href="#constructor" id="_ref_883"><a href="#constructor">constructor</a></emu-xref></p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-terms-and-definitions-function">
|
||
<h1><span class="secnum">4.3.28</span>function</h1>
|
||
<p>member of the Object type that may be invoked as a subroutine</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>In addition to its properties, a function contains executable
|
||
code and state that determine how it behaves when invoked. A function's
|
||
code may or may not be written in ECMAScript.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-built-in-function">
|
||
<h1><span class="secnum">4.3.29</span>built-in function</h1>
|
||
<p>built-in object that is a function</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Examples of built-in functions include <code>parseInt</code> and <code>Math.exp</code>. An implementation may provide implementation-dependent built-in functions that are not described in this specification.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-property">
|
||
<h1><span class="secnum">4.3.30</span>property</h1>
|
||
<p>part of an object that associates a key (either a String value or a Symbol value) and a value</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Depending upon the form of the property the value may be
|
||
represented either directly as a data value (a primitive value, an
|
||
object, or a <emu-xref href="#function-object" id="_ref_884"><a href="#function-object">function object</a></emu-xref>) or indirectly by a pair of accessor functions.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-method">
|
||
<h1><span class="secnum">4.3.31</span>method</h1>
|
||
<p>function that is the value of a property</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>When a function is called as a method of an object, the object is passed to the function as its <emu-val>this</emu-val> value.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-built-in-method">
|
||
<h1><span class="secnum">4.3.32</span>built-in method</h1>
|
||
<p>method that is a built-in function</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Standard built-in methods are defined in this specification,
|
||
and an ECMAScript implementation may specify and provide other
|
||
additional built-in methods.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-attribute">
|
||
<h1><span class="secnum">4.3.33</span>attribute</h1>
|
||
<p>internal value that defines some characteristic of a property</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-own-property">
|
||
<h1><span class="secnum">4.3.34</span>own property</h1>
|
||
<p>property that is directly contained by its object</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-inherited-property">
|
||
<h1><span class="secnum">4.3.35</span>inherited property</h1>
|
||
<p>property of an object that is not an own property but is a property (either own or inherited) of the object's prototype</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-organization-of-this-specification">
|
||
<h1><span class="secnum">4.4</span>Organization of This Specification</h1>
|
||
<p>The remainder of this specification is organized as follows:</p>
|
||
<p>Clause 5 defines the notational conventions used throughout the specification.</p>
|
||
<p>Clauses 6-9 define the execution environment within which ECMAScript programs operate.</p>
|
||
<p>Clauses 10-16 define the actual ECMAScript programming language
|
||
including its syntactic encoding and the execution semantics of all
|
||
language features.</p>
|
||
<p>Clauses 17-26 define the ECMAScript standard library. They
|
||
include the definitions of all of the standard objects that are
|
||
available for use by ECMAScript programs as they execute.</p>
|
||
<p>Clause 27 describes the memory consistency model of accesses on
|
||
SharedArrayBuffer-backed memory and methods of the Atomics object.</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-notational-conventions">
|
||
<h1><span class="secnum">5</span>Notational Conventions</h1>
|
||
|
||
<emu-clause id="sec-syntactic-and-lexical-grammars">
|
||
<h1><span class="secnum">5.1</span>Syntactic and Lexical Grammars</h1>
|
||
|
||
<emu-clause id="sec-context-free-grammars">
|
||
<h1><span class="secnum">5.1.1</span>Context-Free Grammars</h1>
|
||
<p>A <em>context-free grammar</em> consists of a number of <em>productions</em>. Each production has an abstract symbol called a <em>nonterminal</em> as its <em>left-hand side</em>, and a sequence of zero or more nonterminal and <em>terminal</em> symbols as its <em>right-hand side</em>. For each grammar, the terminal symbols are drawn from a specified alphabet.</p>
|
||
<p>A <dfn>chain production</dfn> is a production that has exactly one nonterminal symbol on its right-hand side along with zero or more terminal symbols.</p>
|
||
<p>Starting from a sentence consisting of a single distinguished nonterminal, called the <dfn>goal symbol</dfn>, a given context-free grammar specifies a <em>language</em>,
|
||
namely, the (perhaps infinite) set of possible sequences of terminal
|
||
symbols that can result from repeatedly replacing any nonterminal in the
|
||
sequence with a right-hand side of a production for which the
|
||
nonterminal is the left-hand side.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-lexical-and-regexp-grammars">
|
||
<h1><span class="secnum">5.1.2</span>The Lexical and RegExp Grammars</h1>
|
||
<p>A <em>lexical grammar</em> for ECMAScript is given in clause <emu-xref href="#sec-ecmascript-language-lexical-grammar" id="_ref_7"><a href="#sec-ecmascript-language-lexical-grammar">11</a></emu-xref>. This grammar has as its terminal symbols Unicode code points that conform to the rules for <emu-nt id="_ref_8795"><a href="#prod-SourceCharacter">SourceCharacter</a></emu-nt> defined in <emu-xref href="#sec-source-text" id="_ref_8"><a href="#sec-source-text">10.1</a></emu-xref>. It defines a set of productions, starting from the <emu-xref href="#sec-context-free-grammars" id="_ref_885"><a href="#sec-context-free-grammars">goal symbol</a></emu-xref> <emu-nt id="_ref_8796"><a href="#prod-InputElementDiv">InputElementDiv</a></emu-nt>, <emu-nt id="_ref_8797"><a href="#prod-InputElementTemplateTail">InputElementTemplateTail</a></emu-nt>, or <emu-nt id="_ref_8798"><a href="#prod-InputElementRegExp">InputElementRegExp</a></emu-nt>, or <emu-nt id="_ref_8799"><a href="#prod-InputElementRegExpOrTemplateTail">InputElementRegExpOrTemplateTail</a></emu-nt>, that describe how sequences of such code points are translated into a sequence of input elements.</p>
|
||
<p>Input elements other than white space and comments form the
|
||
terminal symbols for the syntactic grammar for ECMAScript and are called
|
||
ECMAScript <em>tokens</em>. These tokens are the reserved words,
|
||
identifiers, literals, and punctuators of the ECMAScript language.
|
||
Moreover, line terminators, although not considered to be tokens, also
|
||
become part of the stream of input elements and guide the process of
|
||
automatic semicolon insertion (<emu-xref href="#sec-automatic-semicolon-insertion" id="_ref_9"><a href="#sec-automatic-semicolon-insertion">11.9</a></emu-xref>).
|
||
Simple white space and single-line comments are discarded and do not
|
||
appear in the stream of input elements for the syntactic grammar. A <emu-nt id="_ref_8800"><a href="#prod-MultiLineComment">MultiLineComment</a></emu-nt> (that is, a comment of the form <code>/*</code>…<code>*/</code> regardless of whether it spans more than one line) is likewise simply discarded if it contains no line terminator; but if a <emu-nt id="_ref_8801"><a href="#prod-MultiLineComment">MultiLineComment</a></emu-nt>
|
||
contains one or more line terminators, then it is replaced by a single
|
||
line terminator, which becomes part of the stream of input elements for
|
||
the syntactic grammar.</p>
|
||
<p>A <em>RegExp grammar</em> for ECMAScript is given in <emu-xref href="#sec-patterns" id="_ref_10"><a href="#sec-patterns">21.2.1</a></emu-xref>. This grammar also has as its terminal symbols the code points as defined by <emu-nt id="_ref_8802"><a href="#prod-SourceCharacter">SourceCharacter</a></emu-nt>. It defines a set of productions, starting from the <emu-xref href="#sec-context-free-grammars" id="_ref_886"><a href="#sec-context-free-grammars">goal symbol</a></emu-xref> <emu-nt id="_ref_8803"><a href="#prod-Pattern">Pattern</a></emu-nt>, that describe how sequences of code points are translated into regular expression patterns.</p>
|
||
<p>Productions of the lexical and RegExp grammars are distinguished by having two colons “<b>::</b>” as separating punctuation. The lexical and RegExp grammars share some productions.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-numeric-string-grammar">
|
||
<h1><span class="secnum">5.1.3</span>The Numeric String Grammar</h1>
|
||
<p>Another grammar is used for translating Strings into numeric
|
||
values. This grammar is similar to the part of the lexical grammar
|
||
having to do with numeric literals and has as its terminal symbols <emu-nt id="_ref_8804"><a href="#prod-SourceCharacter">SourceCharacter</a></emu-nt>. This grammar appears in <emu-xref href="#sec-tonumber-applied-to-the-string-type" id="_ref_11"><a href="#sec-tonumber-applied-to-the-string-type">7.1.3.1</a></emu-xref>.</p>
|
||
<p>Productions of the numeric string grammar are distinguished by having three colons “<b>:::</b>” as punctuation.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-syntactic-grammar">
|
||
<h1><span class="secnum">5.1.4</span>The Syntactic Grammar</h1>
|
||
<p>The <em>syntactic grammar</em> for ECMAScript is given in
|
||
clauses 11, 12, 13, 14, and 15. This grammar has ECMAScript tokens
|
||
defined by the lexical grammar as its terminal symbols (<emu-xref href="#sec-lexical-and-regexp-grammars" id="_ref_12"><a href="#sec-lexical-and-regexp-grammars">5.1.2</a></emu-xref>). It defines a set of productions, starting from two alternative goal symbols <emu-nt id="_ref_8805"><a href="#prod-Script">Script</a></emu-nt> and <emu-nt id="_ref_8806"><a href="#prod-Module">Module</a></emu-nt>, that describe how sequences of tokens form syntactically correct independent components of ECMAScript programs.</p>
|
||
<p>When a stream of code points is to be parsed as an ECMAScript <emu-nt id="_ref_8807"><a href="#prod-Script">Script</a></emu-nt> or <emu-nt id="_ref_8808"><a href="#prod-Module">Module</a></emu-nt>,
|
||
it is first converted to a stream of input elements by repeated
|
||
application of the lexical grammar; this stream of input elements is
|
||
then parsed by a single application of the syntactic grammar. The input
|
||
stream is syntactically in error if the tokens in the stream of input
|
||
elements cannot be parsed as a single instance of the goal nonterminal (<emu-nt id="_ref_8809"><a href="#prod-Script">Script</a></emu-nt> or <emu-nt id="_ref_8810"><a href="#prod-Module">Module</a></emu-nt>), with no tokens left over.</p>
|
||
<p>When a parse is successful, it constructs a <em>parse tree</em>, a rooted tree structure in which each node is a <dfn>Parse Node</dfn>. Each Parse Node is an <em>instance</em>
|
||
of a symbol in the grammar; it represents a span of the source text
|
||
that can be derived from that symbol. The root node of the parse tree,
|
||
representing the whole of the source text, is an instance of the parse's
|
||
<emu-xref href="#sec-context-free-grammars" id="_ref_887"><a href="#sec-context-free-grammars">goal symbol</a></emu-xref>.
|
||
When a Parse Node is an instance of a nonterminal, it is also an
|
||
instance of some production that has that nonterminal as its left-hand
|
||
side. Moreover, it has zero or more <em>children</em>, one for each
|
||
symbol on the production's right-hand side: each child is a Parse Node
|
||
that is an instance of the corresponding symbol.</p>
|
||
<p>New Parse Nodes are instantiated for each invocation of the
|
||
parser and never reused between parses even of identical source text.
|
||
Parse Nodes are considered <dfn>the same Parse Node</dfn> if and only
|
||
if they represent the same span of source text, are instances of the
|
||
same grammar symbol, and resulted from the same parser invocation.</p>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>Parsing the same String multiple times will lead to different Parse Nodes, e.g., as occurs in:</p>
|
||
<pre><code language="javascript">eval(str); eval(str);</code></pre>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">Parse Nodes are specification artefacts, and implementations are not required to use an analogous data structure.</div></emu-note>
|
||
<p>Productions of the syntactic grammar are distinguished by having just one colon “<b>:</b>” as punctuation.</p>
|
||
<p>The syntactic grammar as presented in clauses 12, 13, 14 and 15
|
||
is not a complete account of which token sequences are accepted as a
|
||
correct ECMAScript <emu-nt id="_ref_8811"><a href="#prod-Script">Script</a></emu-nt> or <emu-nt id="_ref_8812"><a href="#prod-Module">Module</a></emu-nt>.
|
||
Certain additional token sequences are also accepted, namely, those
|
||
that would be described by the grammar if only semicolons were added to
|
||
the sequence in certain places (such as before line terminator
|
||
characters). Furthermore, certain token sequences that are described by
|
||
the grammar are not considered acceptable if a line terminator character
|
||
appears in certain “awkward” places.</p>
|
||
<p>In certain cases, in order to avoid ambiguities, the syntactic
|
||
grammar uses generalized productions that permit token sequences that do
|
||
not form a valid ECMAScript <emu-nt id="_ref_8813"><a href="#prod-Script">Script</a></emu-nt> or <emu-nt id="_ref_8814"><a href="#prod-Module">Module</a></emu-nt>. For example, this technique is used for object literals and object destructuring patterns. In such cases a more restrictive <em>supplemental grammar</em> is provided that further restricts the acceptable token sequences. Typically, an <emu-xref href="#early-error" id="_ref_888"><a href="#early-error">early error</a></emu-xref> rule will then define an error condition if "<var>P</var> is not <dfn>covering</dfn> an <var>N</var>", where <var>P</var> is a Parse Node (an instance of the generalized production) and <var>N</var> is a nonterminal from the supplemental grammar. Here, the sequence of tokens originally matched by <var>P</var> is parsed again using <var>N</var> as the <emu-xref href="#sec-context-free-grammars" id="_ref_889"><a href="#sec-context-free-grammars">goal symbol</a></emu-xref>. (If <var>N</var> takes grammatical parameters, then they are set to the same values used when <var>P</var> was originally parsed.) An error occurs if the sequence of tokens cannot be parsed as a single instance of <var>N</var>, with no tokens left over. Subsequently, algorithms access the result of the parse using a phrase of the form "the <var>N</var> that is <dfn>covered</dfn> by <var>P</var>". This will always be a Parse Node (an instance of <var>N</var>, unique for a given <var>P</var>), since any parsing failure would have been detected by an <emu-xref href="#early-error" id="_ref_890"><a href="#early-error">early error</a></emu-xref> rule.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-grammar-notation" namespace="grammar-notation">
|
||
<h1><span class="secnum">5.1.5</span>Grammar Notation</h1>
|
||
<p>Terminal symbols of the lexical, RegExp, and numeric string grammars are shown in <code>fixed width</code>
|
||
font, both in the productions of the grammars and throughout this
|
||
specification whenever the text directly refers to such a terminal
|
||
symbol. These are to appear in a script exactly as written. All terminal
|
||
symbol code points specified in this way are to be understood as the
|
||
appropriate Unicode code points from the Basic Latin range, as opposed
|
||
to any similar-looking code points from other Unicode ranges.</p>
|
||
<p>Nonterminal symbols are shown in <i>italic</i> type. The
|
||
definition of a nonterminal (also called a “production”) is introduced
|
||
by the name of the nonterminal being defined followed by one or more
|
||
colons. (The number of colons indicates to which grammar the production
|
||
belongs.) One or more alternative right-hand sides for the nonterminal
|
||
then follow on succeeding lines. For example, the syntactic definition:</p>
|
||
<emu-grammar type="example"><emu-production name="WhileStatement" id="prod-grammar-notation-WhileStatement">
|
||
<emu-nt><a href="#prod-grammar-notation-WhileStatement">WhileStatement</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="f7627bf3"><emu-t>while</emu-t><emu-t>(</emu-t><emu-nt id="_ref_8815"><a href="#prod-Expression">Expression</a></emu-nt><emu-t>)</emu-t><emu-nt id="_ref_8816"><a href="#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>states that the nonterminal <emu-nt id="_ref_8817"><a href="#prod-grammar-notation-WhileStatement">WhileStatement</a></emu-nt> represents the token <code>while</code>, followed by a left parenthesis token, followed by an <emu-nt id="_ref_8818"><a href="#prod-Expression">Expression</a></emu-nt>, followed by a right parenthesis token, followed by a <emu-nt id="_ref_8819"><a href="#prod-Statement">Statement</a></emu-nt>. The occurrences of <emu-nt id="_ref_8820"><a href="#prod-Expression">Expression</a></emu-nt> and <emu-nt id="_ref_8821"><a href="#prod-Statement">Statement</a></emu-nt> are themselves nonterminals. As another example, the syntactic definition:</p>
|
||
<emu-grammar type="example"><emu-production name="ArgumentList" id="prod-grammar-notation-ArgumentList">
|
||
<emu-nt><a href="#prod-grammar-notation-ArgumentList">ArgumentList</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="d4fc7da4"><emu-nt id="_ref_8822"><a href="#prod-AssignmentExpression">AssignmentExpression</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="7ff23fee"><emu-nt id="_ref_8823"><a href="#prod-grammar-notation-ArgumentList">ArgumentList</a></emu-nt><emu-t>,</emu-t><emu-nt id="_ref_8824"><a href="#prod-AssignmentExpression">AssignmentExpression</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>states that an <emu-nt id="_ref_8825"><a href="#prod-grammar-notation-ArgumentList">ArgumentList</a></emu-nt> may represent either a single <emu-nt id="_ref_8826"><a href="#prod-AssignmentExpression">AssignmentExpression</a></emu-nt> or an <emu-nt id="_ref_8827"><a href="#prod-grammar-notation-ArgumentList">ArgumentList</a></emu-nt>, followed by a comma, followed by an <emu-nt id="_ref_8828"><a href="#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>. This definition of <emu-nt id="_ref_8829"><a href="#prod-grammar-notation-ArgumentList">ArgumentList</a></emu-nt> is recursive, that is, it is defined in terms of itself. The result is that an <emu-nt id="_ref_8830"><a href="#prod-grammar-notation-ArgumentList">ArgumentList</a></emu-nt> may contain any positive number of arguments, separated by commas, where each argument expression is an <emu-nt id="_ref_8831"><a href="#prod-AssignmentExpression">AssignmentExpression</a></emu-nt>. Such recursive definitions of nonterminals are common.</p>
|
||
<p>The subscripted suffix “<sub>opt</sub>”, which may appear after
|
||
a terminal or nonterminal, indicates an optional symbol. The
|
||
alternative containing the optional symbol actually specifies two
|
||
right-hand sides, one that omits the optional element and one that
|
||
includes it. This means that:</p>
|
||
<emu-grammar type="example"><emu-production name="VariableDeclaration" id="prod-grammar-notation-VariableDeclaration">
|
||
<emu-nt><a href="#prod-grammar-notation-VariableDeclaration">VariableDeclaration</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="0b9344a8"><emu-nt id="_ref_8832"><a href="#prod-BindingIdentifier">BindingIdentifier</a></emu-nt><emu-nt optional="" id="_ref_8833"><a href="#prod-Initializer">Initializer</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>is a convenient abbreviation for:</p>
|
||
<emu-grammar type="example"><emu-production name="VariableDeclaration">
|
||
<emu-nt><a href="#prod-grammar-notation-VariableDeclaration">VariableDeclaration</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="50e97238"><emu-nt id="_ref_8834"><a href="#prod-BindingIdentifier">BindingIdentifier</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="89becb83"><emu-nt id="_ref_8835"><a href="#prod-BindingIdentifier">BindingIdentifier</a></emu-nt><emu-nt id="_ref_8836"><a href="#prod-Initializer">Initializer</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>and that:</p>
|
||
<emu-grammar type="example"><emu-production name="IterationStatement" id="prod-grammar-notation-IterationStatement">
|
||
<emu-nt><a href="#prod-grammar-notation-IterationStatement">IterationStatement</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="93c07e45"><emu-t>for</emu-t><emu-t>(</emu-t><emu-nt id="_ref_8837"><a href="#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt><emu-nt optional="" id="_ref_8838"><a href="#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt><emu-t>;</emu-t><emu-nt optional="" id="_ref_8839"><a href="#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt><emu-t>)</emu-t><emu-nt id="_ref_8840"><a href="#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>is a convenient abbreviation for:</p>
|
||
<emu-grammar type="example"><emu-production name="IterationStatement">
|
||
<emu-nt><a href="#prod-grammar-notation-IterationStatement">IterationStatement</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="180d57b5"><emu-t>for</emu-t><emu-t>(</emu-t><emu-nt id="_ref_8841"><a href="#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt><emu-t>;</emu-t><emu-nt optional="" id="_ref_8842"><a href="#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt><emu-t>)</emu-t><emu-nt id="_ref_8843"><a href="#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="0acd6093"><emu-t>for</emu-t><emu-t>(</emu-t><emu-nt id="_ref_8844"><a href="#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt><emu-nt id="_ref_8845"><a href="#prod-Expression">Expression</a></emu-nt><emu-t>;</emu-t><emu-nt optional="" id="_ref_8846"><a href="#prod-Expression">Expression</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt><emu-t>)</emu-t><emu-nt id="_ref_8847"><a href="#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>which in turn is an abbreviation for:</p>
|
||
<emu-grammar type="example"><emu-production name="IterationStatement">
|
||
<emu-nt><a href="#prod-grammar-notation-IterationStatement">IterationStatement</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="00273dd7"><emu-t>for</emu-t><emu-t>(</emu-t><emu-nt id="_ref_8848"><a href="#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt><emu-t>;</emu-t><emu-t>)</emu-t><emu-nt id="_ref_8849"><a href="#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="d4b04297"><emu-t>for</emu-t><emu-t>(</emu-t><emu-nt id="_ref_8850"><a href="#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt><emu-t>;</emu-t><emu-nt id="_ref_8851"><a href="#prod-Expression">Expression</a></emu-nt><emu-t>)</emu-t><emu-nt id="_ref_8852"><a href="#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="e8d15924"><emu-t>for</emu-t><emu-t>(</emu-t><emu-nt id="_ref_8853"><a href="#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt><emu-nt id="_ref_8854"><a href="#prod-Expression">Expression</a></emu-nt><emu-t>;</emu-t><emu-t>)</emu-t><emu-nt id="_ref_8855"><a href="#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="7f2cbdb0"><emu-t>for</emu-t><emu-t>(</emu-t><emu-nt id="_ref_8856"><a href="#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt><emu-nt id="_ref_8857"><a href="#prod-Expression">Expression</a></emu-nt><emu-t>;</emu-t><emu-nt id="_ref_8858"><a href="#prod-Expression">Expression</a></emu-nt><emu-t>)</emu-t><emu-nt id="_ref_8859"><a href="#prod-Statement">Statement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>so, in this example, the nonterminal <emu-nt id="_ref_8860"><a href="#prod-grammar-notation-IterationStatement">IterationStatement</a></emu-nt> actually has four alternative right-hand sides.</p>
|
||
<p>A production may be parameterized by a subscripted annotation of the form “<sub>[parameters]</sub>”, which may appear as a suffix to the nonterminal symbol defined by the production. “<sub>parameters</sub>”
|
||
may be either a single name or a comma separated list of names. A
|
||
parameterized production is shorthand for a set of productions defining
|
||
all combinations of the parameter names, preceded by an underscore,
|
||
appended to the parameterized nonterminal symbol. This means that:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList" params="Return" id="prod-grammar-notation-StatementList">
|
||
<emu-nt params="Return"><a href="#prod-grammar-notation-StatementList">StatementList</a><emu-mods><emu-params>[Return]</emu-params></emu-mods></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8861"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8862"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>is a convenient abbreviation for:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList">StatementList</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8863"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8864"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StatementList_Return" id="prod-grammar-notation-StatementList_Return">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList_Return">StatementList_Return</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8865"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8866"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>and that:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList" params="Return, In">
|
||
<emu-nt params="Return, In"><a href="#prod-grammar-notation-StatementList">StatementList</a><emu-mods><emu-params>[Return, In]</emu-params></emu-mods></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8867"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8868"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>is an abbreviation for:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList">StatementList</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8869"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8870"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StatementList_Return">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList_Return">StatementList_Return</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8871"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8872"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StatementList_In" id="prod-grammar-notation-StatementList_In">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList_In">StatementList_In</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8873"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8874"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StatementList_Return_In" id="prod-grammar-notation-StatementList_Return_In">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList_Return_In">StatementList_Return_In</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8875"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8876"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>Multiple parameters produce a combinatory number of
|
||
productions, not all of which are necessarily referenced in a complete
|
||
grammar.</p>
|
||
<p>References to nonterminals on the right-hand side of a production can also be parameterized. For example:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList">StatementList</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8877"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="abb21bdc"><emu-nt params="+In" id="_ref_8878"><a href="#prod-ExpressionStatement">ExpressionStatement</a><emu-mods><emu-params>[+In]</emu-params></emu-mods></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>is equivalent to saying:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList">StatementList</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8879"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="93a8206f"><emu-nt>ExpressionStatement_In</emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>and:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList">StatementList</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8880"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="70147e05"><emu-nt params="~In" id="_ref_8881"><a href="#prod-ExpressionStatement">ExpressionStatement</a><emu-mods><emu-params>[~In]</emu-params></emu-mods></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>is equivalent to:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList">StatementList</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8882"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8883"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>A nonterminal reference may have both a parameter list and an “<sub>opt</sub>” suffix. For example:</p>
|
||
<emu-grammar type="example"><emu-production name="VariableDeclaration">
|
||
<emu-nt><a href="#prod-grammar-notation-VariableDeclaration">VariableDeclaration</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="363e22bb"><emu-nt id="_ref_8884"><a href="#prod-BindingIdentifier">BindingIdentifier</a></emu-nt><emu-nt params="+In" optional="" id="_ref_8885"><a href="#prod-Initializer">Initializer</a><emu-mods><emu-params>[+In]</emu-params><emu-opt>opt</emu-opt></emu-mods></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>is an abbreviation for:</p>
|
||
<emu-grammar type="example"><emu-production name="VariableDeclaration">
|
||
<emu-nt><a href="#prod-grammar-notation-VariableDeclaration">VariableDeclaration</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="50e97238"><emu-nt id="_ref_8886"><a href="#prod-BindingIdentifier">BindingIdentifier</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="693077fa"><emu-nt id="_ref_8887"><a href="#prod-BindingIdentifier">BindingIdentifier</a></emu-nt><emu-nt>Initializer_In</emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>Prefixing a parameter name with “<sub>?</sub>” on a right-hand
|
||
side nonterminal reference makes that parameter value dependent upon the
|
||
occurrence of the parameter name on the reference to the current
|
||
production's left-hand side symbol. For example:</p>
|
||
<emu-grammar type="example"><emu-production name="VariableDeclaration" params="In">
|
||
<emu-nt params="In"><a href="#prod-grammar-notation-VariableDeclaration">VariableDeclaration</a><emu-mods><emu-params>[In]</emu-params></emu-mods></emu-nt><emu-geq>:</emu-geq><emu-rhs a="dde5478d"><emu-nt id="_ref_8888"><a href="#prod-BindingIdentifier">BindingIdentifier</a></emu-nt><emu-nt params="?In" id="_ref_8889"><a href="#prod-Initializer">Initializer</a><emu-mods><emu-params>[?In]</emu-params></emu-mods></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>is an abbreviation for:</p>
|
||
<emu-grammar type="example"><emu-production name="VariableDeclaration">
|
||
<emu-nt><a href="#prod-grammar-notation-VariableDeclaration">VariableDeclaration</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="89becb83"><emu-nt id="_ref_8890"><a href="#prod-BindingIdentifier">BindingIdentifier</a></emu-nt><emu-nt id="_ref_8891"><a href="#prod-Initializer">Initializer</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="VariableDeclaration_In" id="prod-grammar-notation-VariableDeclaration_In">
|
||
<emu-nt><a href="#prod-grammar-notation-VariableDeclaration_In">VariableDeclaration_In</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="693077fa"><emu-nt id="_ref_8892"><a href="#prod-BindingIdentifier">BindingIdentifier</a></emu-nt><emu-nt>Initializer_In</emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>If a right-hand side alternative is prefixed with
|
||
“[+parameter]” that alternative is only available if the named parameter
|
||
was used in referencing the production's nonterminal symbol. If a
|
||
right-hand side alternative is prefixed with “[~parameter]” that
|
||
alternative is only available if the named parameter was <em>not</em> used in referencing the production's nonterminal symbol. This means that:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList" params="Return">
|
||
<emu-nt params="Return"><a href="#prod-grammar-notation-StatementList">StatementList</a><emu-mods><emu-params>[Return]</emu-params></emu-mods></emu-nt><emu-geq>:</emu-geq><emu-rhs a="a712bea8" constraints="+Return"><emu-constraints>[+Return]</emu-constraints><emu-nt id="_ref_8893"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8894"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>is an abbreviation for:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList">StatementList</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="82c424b7"><emu-nt id="_ref_8895"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StatementList_Return">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList_Return">StatementList_Return</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8896"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8897"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>and that:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList" params="Return">
|
||
<emu-nt params="Return"><a href="#prod-grammar-notation-StatementList">StatementList</a><emu-mods><emu-params>[Return]</emu-params></emu-mods></emu-nt><emu-geq>:</emu-geq><emu-rhs a="9abebc34" constraints="~Return"><emu-constraints>[~Return]</emu-constraints><emu-nt id="_ref_8898"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8899"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>is an abbreviation for:</p>
|
||
<emu-grammar type="example"><emu-production name="StatementList">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList">StatementList</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="aa6f7913"><emu-nt id="_ref_8900"><a href="#prod-ReturnStatement">ReturnStatement</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="82c424b7"><emu-nt id="_ref_8901"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StatementList_Return">
|
||
<emu-nt><a href="#prod-grammar-notation-StatementList_Return">StatementList_Return</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="82c424b7"><emu-nt id="_ref_8902"><a href="#prod-ExpressionStatement">ExpressionStatement</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>When the words “<b>one of</b>” follow the colon(s) in a grammar
|
||
definition, they signify that each of the terminal symbols on the
|
||
following line or lines is an alternative definition. For example, the
|
||
lexical grammar for ECMAScript contains the production:</p>
|
||
<emu-grammar type="example"><emu-production name="NonZeroDigit" type="lexical" oneof="" id="prod-grammar-notation-NonZeroDigit">
|
||
<emu-nt><a href="#prod-grammar-notation-NonZeroDigit">NonZeroDigit</a></emu-nt><emu-geq>::</emu-geq><emu-oneof>one of</emu-oneof><emu-rhs><emu-t>1</emu-t><emu-t>2</emu-t><emu-t>3</emu-t><emu-t>4</emu-t><emu-t>5</emu-t><emu-t>6</emu-t><emu-t>7</emu-t><emu-t>8</emu-t><emu-t>9</emu-t></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>which is merely a convenient abbreviation for:</p>
|
||
<emu-grammar type="example"><emu-production name="NonZeroDigit" type="lexical">
|
||
<emu-nt><a href="#prod-grammar-notation-NonZeroDigit">NonZeroDigit</a></emu-nt><emu-geq>::</emu-geq><emu-rhs a="292aa5dd"><emu-t>1</emu-t></emu-rhs>
|
||
<emu-rhs a="5ca73105"><emu-t>2</emu-t></emu-rhs>
|
||
<emu-rhs a="ec6bb6b2"><emu-t>3</emu-t></emu-rhs>
|
||
<emu-rhs a="58ec4a73"><emu-t>4</emu-t></emu-rhs>
|
||
<emu-rhs a="8fcdef77"><emu-t>5</emu-t></emu-rhs>
|
||
<emu-rhs a="0b64877d"><emu-t>6</emu-t></emu-rhs>
|
||
<emu-rhs a="ea5e07a4"><emu-t>7</emu-t></emu-rhs>
|
||
<emu-rhs a="7a5bd8c3"><emu-t>8</emu-t></emu-rhs>
|
||
<emu-rhs a="163f4308"><emu-t>9</emu-t></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>If the phrase “[empty]” appears as the right-hand side of a
|
||
production, it indicates that the production's right-hand side contains
|
||
no terminals or nonterminals.</p>
|
||
<p>If the phrase “[lookahead ∉ <var>set</var>]” appears in the
|
||
right-hand side of a production, it indicates that the production may
|
||
not be used if the immediately following input token sequence is a
|
||
member of the given <var>set</var>. The <var>set</var> can be written as
|
||
a comma separated list of one or two element terminal sequences
|
||
enclosed in curly brackets. For convenience, the set can also be written
|
||
as a nonterminal, in which case it represents the set of all terminals
|
||
to which that nonterminal could expand. If the <var>set</var> consists of a single terminal the phrase “[lookahead ≠ <var>terminal</var>]” may be used.</p>
|
||
<p>For example, given the definitions:</p>
|
||
<emu-grammar type="example"><emu-production name="DecimalDigit" type="lexical" oneof="" id="prod-grammar-notation-DecimalDigit">
|
||
<emu-nt><a href="#prod-grammar-notation-DecimalDigit">DecimalDigit</a></emu-nt><emu-geq>::</emu-geq><emu-oneof>one of</emu-oneof><emu-rhs><emu-t>0</emu-t><emu-t>1</emu-t><emu-t>2</emu-t><emu-t>3</emu-t><emu-t>4</emu-t><emu-t>5</emu-t><emu-t>6</emu-t><emu-t>7</emu-t><emu-t>8</emu-t><emu-t>9</emu-t></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="DecimalDigits" type="lexical" id="prod-grammar-notation-DecimalDigits">
|
||
<emu-nt><a href="#prod-grammar-notation-DecimalDigits">DecimalDigits</a></emu-nt><emu-geq>::</emu-geq><emu-rhs a="b3831ee0"><emu-nt id="_ref_8903"><a href="#prod-grammar-notation-DecimalDigit">DecimalDigit</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="9f250657"><emu-nt id="_ref_8904"><a href="#prod-grammar-notation-DecimalDigits">DecimalDigits</a></emu-nt><emu-nt id="_ref_8905"><a href="#prod-grammar-notation-DecimalDigit">DecimalDigit</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>the definition:</p>
|
||
<emu-grammar type="example"><emu-production name="LookaheadExample" type="lexical" id="prod-grammar-notation-LookaheadExample">
|
||
<emu-nt><a href="#prod-grammar-notation-LookaheadExample">LookaheadExample</a></emu-nt><emu-geq>::</emu-geq><emu-rhs a="e21e12ce"><emu-t>n</emu-t><emu-gann>[lookahead ∉ { <emu-t>1</emu-t>, <emu-t>3</emu-t>, <emu-t>5</emu-t>, <emu-t>7</emu-t>, <emu-t>9</emu-t> }]</emu-gann><emu-nt id="_ref_8906"><a href="#prod-grammar-notation-DecimalDigits">DecimalDigits</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="195cbc6c"><emu-nt id="_ref_8907"><a href="#prod-grammar-notation-DecimalDigit">DecimalDigit</a></emu-nt><emu-gann>[lookahead ∉ <emu-nt id="_ref_8908"><a href="#prod-grammar-notation-DecimalDigit">DecimalDigit</a></emu-nt>]</emu-gann></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>matches either the letter <code>n</code> followed by one or more decimal digits the first of which is even, or a decimal digit not followed by another decimal digit.</p>
|
||
<p>Similarly, if the phrase “[lookahead ∈ <var>set</var>]” appears
|
||
in the right-hand side of a production, it indicates that the
|
||
production may only be used if the immediately following input token
|
||
sequence is a member of the given <var>set</var>. If the <var>set</var> consists of a single terminal the phrase “[lookahead = <var>terminal</var>]” may be used.</p>
|
||
<p>If the phrase “[no <emu-nt id="_ref_8909"><a href="#prod-LineTerminator">LineTerminator</a></emu-nt> here]” appears in the right-hand side of a production of the syntactic grammar, it indicates that the production is <em>a restricted production</em>: it may not be used if a <emu-nt id="_ref_8910"><a href="#prod-LineTerminator">LineTerminator</a></emu-nt> occurs in the input stream at the indicated position. For example, the production:</p>
|
||
<emu-grammar type="example"><emu-production name="ThrowStatement" id="prod-grammar-notation-ThrowStatement">
|
||
<emu-nt><a href="#prod-grammar-notation-ThrowStatement">ThrowStatement</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="ff4ec866"><emu-t>throw</emu-t><emu-gann>[no <emu-nt id="_ref_8911"><a href="#prod-LineTerminator">LineTerminator</a></emu-nt> here]</emu-gann><emu-nt id="_ref_8912"><a href="#prod-Expression">Expression</a></emu-nt><emu-t>;</emu-t></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>indicates that the production may not be used if a <emu-nt id="_ref_8913"><a href="#prod-LineTerminator">LineTerminator</a></emu-nt> occurs in the script between the <code>throw</code> token and the <emu-nt id="_ref_8914"><a href="#prod-Expression">Expression</a></emu-nt>.</p>
|
||
<p>Unless the presence of a <emu-nt id="_ref_8915"><a href="#prod-LineTerminator">LineTerminator</a></emu-nt> is forbidden by a restricted production, any number of occurrences of <emu-nt id="_ref_8916"><a href="#prod-LineTerminator">LineTerminator</a></emu-nt>
|
||
may appear between any two consecutive tokens in the stream of input
|
||
elements without affecting the syntactic acceptability of the script.</p>
|
||
<p>When an alternative in a production of the lexical grammar or
|
||
the numeric string grammar appears to be a multi-code point token, it
|
||
represents the sequence of code points that would make up such a token.</p>
|
||
<p>The right-hand side of a production may specify that certain expansions are not permitted by using the phrase “<b>but not</b>” and then indicating the expansions to be excluded. For example, the production:</p>
|
||
<emu-grammar type="example"><emu-production name="Identifier" type="lexical" id="prod-grammar-notation-Identifier">
|
||
<emu-nt><a href="#prod-grammar-notation-Identifier">Identifier</a></emu-nt><emu-geq>::</emu-geq><emu-rhs a="bfa5c374"><emu-nt id="_ref_8917"><a href="#prod-IdentifierName">IdentifierName</a></emu-nt><emu-gmod>but not <emu-nt id="_ref_8918"><a href="#prod-ReservedWord">ReservedWord</a></emu-nt></emu-gmod></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>means that the nonterminal <emu-nt id="_ref_8919"><a href="#prod-grammar-notation-Identifier">Identifier</a></emu-nt> may be replaced by any sequence of code points that could replace <emu-nt id="_ref_8920"><a href="#prod-IdentifierName">IdentifierName</a></emu-nt> provided that the same sequence of code points could not replace <emu-nt id="_ref_8921"><a href="#prod-ReservedWord">ReservedWord</a></emu-nt>.</p>
|
||
<p>Finally, a few nonterminal symbols are described by a
|
||
descriptive phrase in sans-serif type in cases where it would be
|
||
impractical to list all the alternatives:</p>
|
||
<emu-grammar type="example"><emu-production name="SourceCharacter" type="lexical" id="prod-grammar-notation-SourceCharacter">
|
||
<emu-nt><a href="#prod-grammar-notation-SourceCharacter">SourceCharacter</a></emu-nt><emu-geq>::</emu-geq><emu-rhs a="c64b38bd"><emu-gprose>any Unicode code point</emu-gprose></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-algorithm-conventions">
|
||
<h1><span class="secnum">5.2</span>Algorithm Conventions</h1>
|
||
<p>The specification often uses a numbered list to specify steps in
|
||
an algorithm. These algorithms are used to precisely specify the
|
||
required semantics of ECMAScript language constructs. The algorithms are
|
||
not intended to imply the use of any specific implementation technique.
|
||
In practice, there may be more efficient algorithms available to
|
||
implement a given feature.</p>
|
||
<p>Algorithms may be explicitly parameterized, in which case the
|
||
names and usage of the parameters must be provided as part of the
|
||
algorithm's definition.</p>
|
||
<p>Algorithm steps may be subdivided into sequential substeps.
|
||
Substeps are indented and may themselves be further divided into
|
||
indented substeps. Outline numbering conventions are used to identify
|
||
substeps with the first level of substeps labelled with lower case
|
||
alphabetic characters and the second level of substeps labelled with
|
||
lower case roman numerals. If more than three levels are required these
|
||
rules repeat with the fourth level using numeric labels. For example:</p>
|
||
<emu-alg><ol><li>Top-level step<ol><li>Substep.</li><li>Substep.<ol><li>Subsubstep.<ol><li>Subsubsubstep<ol><li>Subsubsubsubstep<ol><li>Subsubsubsubsubstep
|
||
</li></ol></li></ol></li></ol></li></ol></li></ol></li></ol></emu-alg>
|
||
<p>A step or substep may be written as an “if” predicate that
|
||
conditions its substeps. In this case, the substeps are only applied if
|
||
the predicate is true. If a step or substep begins with the word “else”,
|
||
it is a predicate that is the negation of the preceding “if” predicate
|
||
step at the same level.</p>
|
||
<p>A step may specify the iterative application of its substeps.</p>
|
||
<p>A step that begins with “<dfn id="assert">Assert</dfn>:” asserts
|
||
an invariant condition of its algorithm. Such assertions are used to
|
||
make explicit algorithmic invariants that would otherwise be implicit.
|
||
Such assertions add no additional semantic requirements and hence need
|
||
not be checked by an implementation. They are used simply to clarify
|
||
algorithms.</p>
|
||
<p>Algorithm steps may declare named aliases for any value using the form “Let <var>x</var> be <var>someValue</var>”. These aliases are reference-like in that both <var>x</var> and <var>someValue</var>
|
||
refer to the same underlying data and modifications to either are
|
||
visible to both. Algorithm steps that want to avoid this reference-like
|
||
behaviour should explicitly make a copy of the right-hand side: “Let <var>x</var> be a copy of <var>someValue</var>” creates a shallow copy of <var>someValue</var>.</p>
|
||
<p>Once declared, an alias may be referenced in any subsequent steps
|
||
and must not be referenced from steps prior to the alias's declaration.
|
||
Aliases may be modified using the form “Set <var>x</var> to <var>someOtherValue</var>”.</p>
|
||
|
||
<emu-clause id="sec-algorithm-conventions-abstract-operations">
|
||
<h1><span class="secnum">5.2.1</span>Abstract Operations</h1>
|
||
<p>In order to facilitate their use in multiple parts of this specification, some algorithms, called <dfn>abstract operations</dfn>,
|
||
are named and written in parameterized functional form so that they may
|
||
be referenced by name from within other algorithms. Abstract operations
|
||
are typically referenced using a functional application style such as
|
||
OperationName(<var>arg1</var>, <var>arg2</var>). Some abstract
|
||
operations are treated as polymorphically dispatched methods of
|
||
class-like specification abstractions. Such method-like abstract
|
||
operations are typically referenced using a method application style
|
||
such as <var>someValue</var>.OperationName(<var>arg1</var>, <var>arg2</var>).</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-algorithm-conventions-syntax-directed-operations" namespace="algorithm-conventions">
|
||
<h1><span class="secnum">5.2.2</span>Syntax-Directed Operations</h1>
|
||
<p>A <dfn>syntax-directed operation</dfn> is a named operation
|
||
whose definition consists of algorithms, each of which is associated
|
||
with one or more productions from one of the ECMAScript grammars. A
|
||
production that has multiple alternative definitions will typically have
|
||
a distinct algorithm for each alternative. When an algorithm is
|
||
associated with a grammar production, it may reference the terminal and
|
||
nonterminal symbols of the production alternative as if they were
|
||
parameters of the algorithm. When used in this manner, nonterminal
|
||
symbols refer to the actual alternative definition that is matched when
|
||
parsing the source text. The <dfn>source text matched by</dfn> a
|
||
grammar production is the portion of the source text that starts at the
|
||
beginning of the first terminal that participated in the match and ends
|
||
at the end of the last terminal that participated in the match.</p>
|
||
<p>When an algorithm is associated with a production alternative,
|
||
the alternative is typically shown without any “[ ]” grammar
|
||
annotations. Such annotations should only affect the syntactic
|
||
recognition of the alternative and have no effect on the associated
|
||
semantics for the alternative.</p>
|
||
<p>Syntax-directed operations are invoked with a parse node and,
|
||
optionally, other parameters by using the conventions on steps 1, 3, and
|
||
4 in the following algorithm:</p>
|
||
<emu-alg><ol><li>Let <var>status</var> be the result of performing SyntaxDirectedOperation of <emu-nt>SomeNonTerminal</emu-nt>.</li><li>Let <var>someParseNode</var> be the parse of some source text.</li><li>Perform SyntaxDirectedOperation of <var>someParseNode</var>.</li><li>Perform SyntaxDirectedOperation of <var>someParseNode</var> passing <code>"value"</code> as the argument.
|
||
</li></ol></emu-alg>
|
||
<p>Unless explicitly specified otherwise, all chain productions
|
||
have an implicit definition for every operation that might be applied to
|
||
that production's left-hand side nonterminal. The implicit definition
|
||
simply reapplies the same operation with the same parameters, if any, to
|
||
the <emu-xref href="#sec-context-free-grammars" id="_ref_8632"><a href="#sec-context-free-grammars">chain production</a></emu-xref>'s
|
||
sole right-hand side nonterminal and then returns the result. For
|
||
example, assume that some algorithm has a step of the form: “Return the
|
||
result of evaluating <emu-nt id="_ref_8922"><a href="#prod-algorithm-conventions-Block">Block</a></emu-nt>” and that there is a production:</p>
|
||
<emu-grammar type="example"><emu-production name="Block" id="prod-algorithm-conventions-Block">
|
||
<emu-nt><a href="#prod-algorithm-conventions-Block">Block</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="6782c9a7"><emu-t>{</emu-t><emu-nt id="_ref_8923"><a href="#prod-StatementList">StatementList</a></emu-nt><emu-t>}</emu-t></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>but the Evaluation operation does not associate an algorithm
|
||
with that production. In that case, the Evaluation operation implicitly
|
||
includes an association of the form:</p>
|
||
<p><b>Runtime Semantics: Evaluation</b></p>
|
||
<emu-grammar type="example"><emu-production name="Block" collapsed="">
|
||
<emu-nt><a href="#prod-algorithm-conventions-Block">Block</a></emu-nt><emu-geq>:</emu-geq><emu-rhs a="6782c9a7"><emu-t>{</emu-t><emu-nt id="_ref_8924"><a href="#prod-StatementList">StatementList</a></emu-nt><emu-t>}</emu-t></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<emu-alg><ol><li>Return the result of evaluating <emu-nt id="_ref_8925"><a href="#prod-StatementList">StatementList</a></emu-nt>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-runtime-semantics">
|
||
<h1><span class="secnum">5.2.3</span>Runtime Semantics</h1>
|
||
<p>Algorithms which specify semantics that must be called at runtime are called <dfn>runtime semantics</dfn>. Runtime semantics are defined by <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_891"><a href="#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref> or syntax-directed operations. Such algorithms always return a completion record.</p>
|
||
<emu-clause id="sec-implicit-completion-values">
|
||
<h1><span class="secnum">5.2.3.1</span>Implicit Completion Values</h1>
|
||
<p>The algorithms of this specification often implicitly return <emu-xref aoid="Completion" id="_ref_892"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref> Records whose [[Type]] is <emu-const>normal</emu-const>. Unless it is otherwise obvious from the context, an algorithm statement that returns a value that is not a <emu-xref href="#sec-completion-record-specification-type" id="_ref_893"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>, such as:</p>
|
||
<emu-alg><ol><li>Return <code>"Infinity"</code>.
|
||
</li></ol></emu-alg>
|
||
<p>means the same thing as:</p>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="NormalCompletion" id="_ref_894"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<code>"Infinity"</code>).
|
||
</li></ol></emu-alg>
|
||
<p>However, if the value expression of a “return” statement is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_895"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref> construction literal, the resulting <emu-xref href="#sec-completion-record-specification-type" id="_ref_896"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref> is returned. If the value expression is a call to an abstract operation, the “return” statement simply returns the <emu-xref href="#sec-completion-record-specification-type" id="_ref_897"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref> produced by the abstract operation.</p>
|
||
<p>The abstract operation <emu-xref aoid="Completion" id="_ref_898"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>(<var>completionRecord</var>) is used to emphasize that a previously computed <emu-xref href="#sec-completion-record-specification-type" id="_ref_899"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref> is being returned. The <emu-xref aoid="Completion" id="_ref_900"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref> abstract operation takes a single argument, <var>completionRecord</var>, and performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_901"><a href="#assert">Assert</a></emu-xref>: <var>completionRecord</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_902"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>.</li><li>Return <var>completionRecord</var> as the <emu-xref href="#sec-completion-record-specification-type" id="_ref_903"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref> of this abstract operation.
|
||
</li></ol></emu-alg>
|
||
<p>A “return” statement without a value in an algorithm step means the same thing as:</p>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="NormalCompletion" id="_ref_904"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-val>undefined</emu-val>).
|
||
</li></ol></emu-alg>
|
||
<p>Any reference to a <emu-xref href="#sec-completion-record-specification-type" id="_ref_905"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref> value that is in a context that does not explicitly require a complete <emu-xref href="#sec-completion-record-specification-type" id="_ref_906"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref> value is equivalent to an explicit reference to the [[Value]] field of the <emu-xref href="#sec-completion-record-specification-type" id="_ref_907"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref> value unless the <emu-xref href="#sec-completion-record-specification-type" id="_ref_908"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_909"><a href="#sec-completion-record-specification-type">abrupt completion</a></emu-xref>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-throw-an-exception">
|
||
<h1><span class="secnum">5.2.3.2</span>Throw an Exception</h1>
|
||
<p>Algorithms steps that say to throw an exception, such as</p>
|
||
<emu-alg><ol><li>Throw a <emu-val>TypeError</emu-val> exception.
|
||
</li></ol></emu-alg>
|
||
<p>mean the same things as:</p>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ThrowCompletion" id="_ref_910"><a href="#sec-throwcompletion">ThrowCompletion</a></emu-xref>(a newly created <emu-val>TypeError</emu-val> object).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-returnifabrupt" aoid="ReturnIfAbrupt">
|
||
<h1><span class="secnum">5.2.3.3</span>ReturnIfAbrupt</h1>
|
||
<p>Algorithms steps that say or are otherwise equivalent to:</p>
|
||
<emu-alg><ol><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_911"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>argument</var>).
|
||
</li></ol></emu-alg>
|
||
<p>mean the same thing as:</p>
|
||
<emu-alg><ol><li>If <var>argument</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_912"><a href="#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, return <var>argument</var>.</li><li>Else if <var>argument</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_913"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>, set <var>argument</var> to <var>argument</var>.[[Value]].
|
||
</li></ol></emu-alg>
|
||
<p>Algorithms steps that say or are otherwise equivalent to:</p>
|
||
<emu-alg><ol><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_914"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(AbstractOperation()).
|
||
</li></ol></emu-alg>
|
||
<p>mean the same thing as:</p>
|
||
<emu-alg><ol><li>Let <var>hygienicTemp</var> be AbstractOperation().</li><li>If <var>hygienicTemp</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_915"><a href="#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, return <var>hygienicTemp</var>.</li><li>Else if <var>hygienicTemp</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_916"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>, set <var>hygienicTemp</var> to <var>hygienicTemp</var>.[[Value]].
|
||
</li></ol></emu-alg>
|
||
<p>Where <var>hygienicTemp</var> is ephemeral and visible only in the steps pertaining to ReturnIfAbrupt.</p>
|
||
<p>Algorithms steps that say or are otherwise equivalent to:</p>
|
||
<emu-alg><ol><li>Let <var>result</var> be AbstractOperation(<emu-xref aoid="ReturnIfAbrupt" id="_ref_917"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>argument</var>)).
|
||
</li></ol></emu-alg>
|
||
<p>mean the same thing as:</p>
|
||
<emu-alg><ol><li>If <var>argument</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_918"><a href="#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, return <var>argument</var>.</li><li>If <var>argument</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_919"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>, set <var>argument</var> to <var>argument</var>.[[Value]].</li><li>Let <var>result</var> be AbstractOperation(<var>argument</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
<emu-clause id="sec-returnifabrupt-shorthands">
|
||
<h1><span class="secnum">5.2.3.4</span>ReturnIfAbrupt Shorthands</h1>
|
||
<p>Invocations of <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_920"><a href="#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref> and syntax-directed operations that are prefixed by <code>?</code> indicate that <emu-xref aoid="ReturnIfAbrupt" id="_ref_921"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref> should be applied to the resulting <emu-xref href="#sec-completion-record-specification-type" id="_ref_922"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>. For example, the step:</p>
|
||
<emu-alg><ol><li>? OperationName().
|
||
</li></ol></emu-alg>
|
||
<p>is equivalent to the following step:</p>
|
||
<emu-alg><ol><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_923"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(OperationName()).
|
||
</li></ol></emu-alg>
|
||
<p>Similarly, for method application style, the step:</p>
|
||
<emu-alg><ol><li>? <var>someValue</var>.OperationName().
|
||
</li></ol></emu-alg>
|
||
<p>is equivalent to:</p>
|
||
<emu-alg><ol><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_924"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>someValue</var>.OperationName()).
|
||
</li></ol></emu-alg>
|
||
<p>Similarly, prefix <code>!</code> is used to indicate that the following invocation of an abstract or syntax-directed operation will never return an <emu-xref href="#sec-completion-record-specification-type" id="_ref_925"><a href="#sec-completion-record-specification-type">abrupt completion</a></emu-xref> and that the resulting <emu-xref href="#sec-completion-record-specification-type" id="_ref_926"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>'s [[Value]] field should be used in place of the return value of the operation. For example, the step:</p>
|
||
<emu-alg><ol><li>Let <var>val</var> be ! OperationName().
|
||
</li></ol></emu-alg>
|
||
<p>is equivalent to the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>val</var> be OperationName().</li><li><emu-xref href="#assert" id="_ref_927"><a href="#assert">Assert</a></emu-xref>: <var>val</var> is never an <emu-xref href="#sec-completion-record-specification-type" id="_ref_928"><a href="#sec-completion-record-specification-type">abrupt completion</a></emu-xref>.</li><li>If <var>val</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_929"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>, set <var>val</var> to <var>val</var>.[[Value]].
|
||
</li></ol></emu-alg>
|
||
<p>Syntax-directed operations for <emu-xref href="#sec-runtime-semantics" id="_ref_930"><a href="#sec-runtime-semantics">runtime semantics</a></emu-xref> make use of this shorthand by placing <code>!</code> or <code>?</code> before the invocation of the operation:</p>
|
||
<emu-alg><ol><li>Perform ! SyntaxDirectedOperation of <emu-nt>NonTerminal</emu-nt>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
<emu-clause id="sec-static-semantic-rules">
|
||
<h1><span class="secnum">5.2.4</span>Static Semantics</h1>
|
||
<p>Context-free grammars are not sufficiently powerful to express
|
||
all the rules that define whether a stream of input elements form a
|
||
valid ECMAScript <emu-nt id="_ref_8926"><a href="#prod-Script">Script</a></emu-nt> or <emu-nt id="_ref_8927"><a href="#prod-Module">Module</a></emu-nt>
|
||
that may be evaluated. In some situations additional rules are needed
|
||
that may be expressed using either ECMAScript algorithm conventions or
|
||
prose requirements. Such rules are always associated with a production
|
||
of a grammar and are called the <dfn>static semantics</dfn> of the production.</p>
|
||
<p>Static Semantic Rules have names and typically are defined
|
||
using an algorithm. Named Static Semantic Rules are associated with
|
||
grammar productions and a production that has multiple alternative
|
||
definitions will typically have for each alternative a distinct
|
||
algorithm for each applicable named static semantic rule.</p>
|
||
<p>Unless otherwise specified every grammar production alternative
|
||
in this specification implicitly has a definition for a static semantic
|
||
rule named Contains which takes an argument named <var>symbol</var>
|
||
whose value is a terminal or nonterminal of the grammar that includes
|
||
the associated production. The default definition of Contains is:</p>
|
||
<emu-alg><ol><li>For each child node <var>child</var> of this <emu-xref href="#sec-syntactic-grammar" id="_ref_931"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref>, do<ol><li>If <var>child</var> is an instance of <var>symbol</var>, return <emu-val>true</emu-val>.</li><li>If <var>child</var> is an instance of a nonterminal, then<ol><li>Let <var>contained</var> be the result of <var>child</var> Contains <var>symbol</var>.</li><li>If <var>contained</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li></ol></li></ol></li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
<p>The above definition is explicitly over-ridden for specific productions.</p>
|
||
<p>A special kind of static semantic rule is an <dfn id="early-error-rule">Early Error Rule</dfn>. <emu-xref href="#early-error" id="_ref_932"><a href="#early-error">Early error</a></emu-xref> rules define <emu-xref href="#early-error" id="_ref_933"><a href="#early-error">early error</a></emu-xref> conditions (see clause <emu-xref href="#sec-error-handling-and-language-extensions" id="_ref_13"><a href="#sec-error-handling-and-language-extensions">16</a></emu-xref>) that are associated with specific grammar productions. Evaluation of most <emu-xref href="#early-error" id="_ref_934"><a href="#early-error">early error</a></emu-xref>
|
||
rules are not explicitly invoked within the algorithms of this
|
||
specification. A conforming implementation must, prior to the first
|
||
evaluation of a <emu-nt id="_ref_8928"><a href="#prod-Script">Script</a></emu-nt> or <emu-nt id="_ref_8929"><a href="#prod-Module">Module</a></emu-nt>, validate all of the <emu-xref href="#early-error" id="_ref_935"><a href="#early-error">early error</a></emu-xref> rules of the productions used to parse that <emu-nt id="_ref_8930"><a href="#prod-Script">Script</a></emu-nt> or <emu-nt id="_ref_8931"><a href="#prod-Module">Module</a></emu-nt>. If any of the <emu-xref href="#early-error" id="_ref_936"><a href="#early-error">early error</a></emu-xref> rules are violated the <emu-nt id="_ref_8932"><a href="#prod-Script">Script</a></emu-nt> or <emu-nt id="_ref_8933"><a href="#prod-Module">Module</a></emu-nt> is invalid and cannot be evaluated.</p>
|
||
</emu-clause>
|
||
<emu-clause id="sec-mathematical-operations">
|
||
<h1><span class="secnum">5.2.5</span>Mathematical Operations</h1>
|
||
<p>Mathematical operations such as addition, subtraction,
|
||
negation, multiplication, division, and the mathematical functions
|
||
defined later in this clause should always be understood as computing
|
||
exact mathematical results on mathematical real numbers, which unless
|
||
otherwise noted do not include infinities and do not include a negative
|
||
zero that is distinguished from positive zero. Algorithms in this
|
||
standard that model floating-point arithmetic include explicit steps,
|
||
where necessary, to handle infinities and signed zero and to perform
|
||
rounding. If a mathematical operation or function is applied to a
|
||
floating-point number, it should be understood as being applied to the
|
||
exact mathematical value represented by that floating-point number; such
|
||
a floating-point number must be finite, and if it is <emu-val>+0</emu-val> or <emu-val>-0</emu-val> then the corresponding mathematical value is simply 0.</p>
|
||
<p>The mathematical function <emu-eqn id="eqn-abs" aoid="abs" class="inline">abs(<var>x</var>)</emu-eqn> produces the absolute value of <var>x</var>, which is <emu-eqn class="inline">-<var>x</var></emu-eqn> if <var>x</var> is negative (less than zero) and otherwise is <var>x</var> itself.</p>
|
||
<p>The mathematical function <emu-eqn id="eqn-min" aoid="min" class="inline">min(<var>x1</var>, <var>x2</var>, ..., <var>xN</var>)</emu-eqn> produces the mathematically smallest of <emu-eqn class="inline"><var>x1</var></emu-eqn> through <emu-eqn class="inline"><var>xN</var></emu-eqn>. The mathematical function <emu-eqn id="eqn-max" aoid="max" class="inline">max(<var>x1</var>, <var>x2</var>, ..., <var>xN</var>)</emu-eqn> produces the mathematically largest of <emu-eqn class="inline"><var>x1</var></emu-eqn> through <emu-eqn class="inline"><var>xN</var></emu-eqn>. The domain and range of these mathematical functions include <emu-val>+∞</emu-val> and <emu-val>-∞</emu-val>.</p>
|
||
<p>The notation “<emu-eqn id="eqn-modulo" aoid="modulo" class="inline"><var>x</var> modulo <var>y</var></emu-eqn>” (<var>y</var> must be finite and nonzero) computes a value <var>k</var> of the same sign as <var>y</var> (or zero) such that <emu-eqn class="inline"><emu-xref aoid="abs" id="_ref_937"><a href="#eqn-abs">abs</a></emu-xref>(<var>k</var>) < <emu-xref aoid="abs" id="_ref_938"><a href="#eqn-abs">abs</a></emu-xref>(<var>y</var>) and <var>x</var> - <var>k</var> = <var>q</var> × <var>y</var></emu-eqn> for some integer <var>q</var>.</p>
|
||
<p>The mathematical function <emu-eqn id="eqn-floor" aoid="floor" class="inline">floor(<var>x</var>)</emu-eqn> produces the largest integer (closest to positive infinity) that is not larger than <var>x</var>.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p><emu-eqn class="inline"><emu-xref aoid="floor" id="_ref_939"><a href="#eqn-floor">floor</a></emu-xref>(<var>x</var>) = <var>x</var> - (<var>x</var> <emu-xref aoid="modulo" id="_ref_940"><a href="#eqn-modulo">modulo</a></emu-xref> 1)</emu-eqn>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ecmascript-data-types-and-values" aoid="Type">
|
||
<h1><span class="secnum">6</span>ECMAScript Data Types and Values</h1>
|
||
<p>Algorithms within this specification manipulate values each of
|
||
which has an associated type. The possible value types are exactly those
|
||
defined in this clause. Types are further subclassified into ECMAScript
|
||
language types and specification types.</p>
|
||
<p>Within this specification, the notation “Type(<var>x</var>)” is used as shorthand for “the <dfn id="type">type</dfn> of <var>x</var>”
|
||
where “type” refers to the ECMAScript language and specification types
|
||
defined in this clause. When the term “empty” is used as if it was
|
||
naming a value, it is equivalent to saying “no value of any type”.</p>
|
||
|
||
<emu-clause id="sec-ecmascript-language-types">
|
||
<h1><span class="secnum">6.1</span>ECMAScript Language Types</h1>
|
||
<p>An <dfn>ECMAScript language type</dfn> corresponds to values
|
||
that are directly manipulated by an ECMAScript programmer using the
|
||
ECMAScript language. The ECMAScript language types are Undefined, Null,
|
||
Boolean, String, Symbol, Number, and Object. An <dfn>ECMAScript language value</dfn> is a value that is characterized by an ECMAScript language type.</p>
|
||
|
||
<emu-clause id="sec-ecmascript-language-types-undefined-type">
|
||
<h1><span class="secnum">6.1.1</span>The Undefined Type</h1>
|
||
<p>The Undefined type has exactly one value, called <emu-val>undefined</emu-val>. Any variable that has not been assigned a value has the value <emu-val>undefined</emu-val>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ecmascript-language-types-null-type">
|
||
<h1><span class="secnum">6.1.2</span>The Null Type</h1>
|
||
<p>The Null type has exactly one value, called <emu-val>null</emu-val>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ecmascript-language-types-boolean-type">
|
||
<h1><span class="secnum">6.1.3</span>The Boolean Type</h1>
|
||
<p>The Boolean type represents a logical entity having two values, called <emu-val>true</emu-val> and <emu-val>false</emu-val>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ecmascript-language-types-string-type">
|
||
<h1><span class="secnum">6.1.4</span>The String Type</h1>
|
||
<p>The String type is the set of all ordered sequences of zero or
|
||
more 16-bit unsigned integer values (“elements”) up to a maximum length
|
||
of 2<sup>53</sup> - 1 elements. The String type is generally used to
|
||
represent textual data in a running ECMAScript program, in which case
|
||
each element in the String is treated as a UTF-16 code unit value. Each
|
||
element is regarded as occupying a position within the sequence. These
|
||
positions are indexed with nonnegative integers. The first element (if
|
||
any) is at index 0, the next element (if any) at index 1, and so on. The
|
||
length of a String is the number of elements (i.e., 16-bit values)
|
||
within it. The empty String has length zero and therefore contains no
|
||
elements.</p>
|
||
<p>ECMAScript operations that do not interpret String contents
|
||
apply no further semantics. Operations that do interpret String values
|
||
treat each element as a single UTF-16 code unit. However, ECMAScript
|
||
does not restrict the value of or relationships between these code
|
||
units, so operations that further interpret String contents as sequences
|
||
of Unicode code points encoded in UTF-16 must account for ill-formed
|
||
subsequences. Such operations apply special treatment to every code unit
|
||
with a numeric value in the inclusive range 0xD800 to 0xDBFF (defined
|
||
by the Unicode Standard as a <dfn id="leading-surrogate">leading surrogate</dfn>, or more formally as a <dfn id="high-surrogate-code-unit">high-surrogate code unit</dfn>) and every code unit with a numeric value in the inclusive range 0xDC00 to 0xDFFF (defined as a <dfn id="trailing-surrogate">trailing surrogate</dfn>, or more formally as a <dfn id="low-surrogate-code-unit">low-surrogate code unit</dfn>) using the following rules:</p>
|
||
<ul>
|
||
<li>
|
||
A code unit that is not a <emu-xref href="#leading-surrogate" id="_ref_14"><a href="#leading-surrogate">leading surrogate</a></emu-xref> and not a <emu-xref href="#trailing-surrogate" id="_ref_15"><a href="#trailing-surrogate">trailing surrogate</a></emu-xref> is interpreted as a code point with the same value.
|
||
|
||
</li>
|
||
<li>
|
||
A sequence of two code units, where the first code unit <var>c1</var> is a <emu-xref href="#leading-surrogate" id="_ref_16"><a href="#leading-surrogate">leading surrogate</a></emu-xref> and the second code unit <var>c2</var> a <emu-xref href="#trailing-surrogate" id="_ref_17"><a href="#trailing-surrogate">trailing surrogate</a></emu-xref>, is a <dfn id="surrogate-pair">surrogate pair</dfn> and is interpreted as a code point with the value (<var>c1</var> - 0xD800) × 0x400 + (<var>c2</var> - 0xDC00) + 0x10000. (See <emu-xref href="#sec-utf16decode" id="_ref_18"><a href="#sec-utf16decode">10.1.2</a></emu-xref>)
|
||
|
||
</li>
|
||
<li>
|
||
A code unit that is a <emu-xref href="#leading-surrogate" id="_ref_19"><a href="#leading-surrogate">leading surrogate</a></emu-xref> or <emu-xref href="#trailing-surrogate" id="_ref_20"><a href="#trailing-surrogate">trailing surrogate</a></emu-xref>, but is not part of a <emu-xref href="#surrogate-pair" id="_ref_21"><a href="#surrogate-pair">surrogate pair</a></emu-xref>, is interpreted as a code point with the same value.
|
||
|
||
</li>
|
||
</ul>
|
||
<p>The function <code>String.prototype.normalize</code> (see <emu-xref href="#sec-string.prototype.normalize" id="_ref_22"><a href="#sec-string.prototype.normalize">21.1.3.12</a></emu-xref>) can be used to explicitly normalize a String value. <code>String.prototype.localeCompare</code> (see <emu-xref href="#sec-string.prototype.localecompare" id="_ref_23"><a href="#sec-string.prototype.localecompare">21.1.3.10</a></emu-xref>)
|
||
internally normalizes String values, but no other operations implicitly
|
||
normalize the strings upon which they operate. Only operations that are
|
||
explicitly specified to be language or locale sensitive produce
|
||
language-sensitive results.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The rationale behind this design was to keep the
|
||
implementation of Strings as simple and high-performing as possible. If
|
||
ECMAScript source text is in Normalized Form C, string literals are
|
||
guaranteed to also be normalized, as long as they do not contain any
|
||
Unicode escape sequences.</p>
|
||
</div></emu-note>
|
||
<p>In this specification, the phrase "the <dfn>string-concatenation</dfn> of <var>A</var>, <var>B</var>,
|
||
..." (where each argument is a String value, a code unit, or a sequence
|
||
of code units) denotes the String value whose sequence of code units is
|
||
the concatenation of the code units (in order) of each of the arguments
|
||
(in order).</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ecmascript-language-types-symbol-type">
|
||
<h1><span class="secnum">6.1.5</span>The Symbol Type</h1>
|
||
<p>The Symbol type is the set of all non-String values that may be used as the key of an Object property (<emu-xref href="#sec-object-type" id="_ref_24"><a href="#sec-object-type">6.1.7</a></emu-xref>).</p>
|
||
<p>Each possible Symbol value is unique and immutable.</p>
|
||
<p>Each Symbol value immutably holds an associated value called [[Description]] that is either <emu-val>undefined</emu-val> or a String value.</p>
|
||
|
||
<emu-clause id="sec-well-known-symbols">
|
||
<h1><span class="secnum">6.1.5.1</span>Well-Known Symbols</h1>
|
||
<p>Well-known symbols are built-in Symbol values that are
|
||
explicitly referenced by algorithms of this specification. They are
|
||
typically used as the keys of properties whose values serve as extension
|
||
points of a specification algorithm. Unless otherwise specified,
|
||
well-known symbols values are shared by all realms (<emu-xref href="#sec-code-realms" id="_ref_25"><a href="#sec-code-realms">8.2</a></emu-xref>).</p>
|
||
<p>Within this specification a well-known symbol is referred to
|
||
by using a notation of the form @@name, where “name” is one of the
|
||
values listed in <emu-xref href="#table-1" id="_ref_26"><a href="#table-1">Table 1</a></emu-xref>.</p>
|
||
<emu-table id="table-1" caption="Well-known Symbols"><figure><figcaption>Table 1: Well-known Symbols</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Specification Name
|
||
|
||
</th>
|
||
<th>
|
||
[[Description]]
|
||
|
||
</th>
|
||
<th>
|
||
Value and Purpose
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@asyncIterator
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.asyncIterator"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A method that returns the default AsyncIterator for an object. Called by the semantics of the <code>for</code>-<code>await</code>-<code>of</code> statement.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@hasInstance
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.hasInstance"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A method that determines if a <emu-xref href="#constructor" id="_ref_941"><a href="#constructor">constructor</a></emu-xref> object recognizes an object as one of the <emu-xref href="#constructor" id="_ref_942"><a href="#constructor">constructor</a></emu-xref>'s instances. Called by the semantics of the <code>instanceof</code> operator.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@isConcatSpreadable
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.isConcatSpreadable"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A Boolean valued property that if true indicates that an object should be flattened to its array elements by <emu-xref href="#sec-array.prototype.concat" id="_ref_27"><a href="#sec-array.prototype.concat"><code>Array.prototype.concat</code></a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@iterator
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.iterator"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A method that returns the default Iterator for an object. Called by the semantics of the for-of statement.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@match
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.match"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A regular expression method that matches the regular expression against a string. Called by the <emu-xref href="#sec-string.prototype.match" id="_ref_28"><a href="#sec-string.prototype.match"><code>String.prototype.match</code></a></emu-xref> method.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@replace
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.replace"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A regular expression method that replaces matched substrings of a string. Called by the <emu-xref href="#sec-string.prototype.replace" id="_ref_29"><a href="#sec-string.prototype.replace"><code>String.prototype.replace</code></a></emu-xref> method.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@search
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.search"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A regular expression method that returns the index
|
||
within a string that matches the regular expression. Called by the <emu-xref href="#sec-string.prototype.search" id="_ref_30"><a href="#sec-string.prototype.search"><code>String.prototype.search</code></a></emu-xref> method.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@species
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.species"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A function valued property that is the <emu-xref href="#constructor" id="_ref_943"><a href="#constructor">constructor</a></emu-xref> function that is used to create derived objects.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@split
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.split"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A regular expression method that splits a string at the
|
||
indices that match the regular expression. Called by the <emu-xref href="#sec-string.prototype.split" id="_ref_31"><a href="#sec-string.prototype.split"><code>String.prototype.split</code></a></emu-xref> method.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@toPrimitive
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.toPrimitive"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A method that converts an object to a corresponding primitive value. Called by the <emu-xref aoid="ToPrimitive" id="_ref_944"><a href="#sec-toprimitive">ToPrimitive</a></emu-xref> abstract operation.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@toStringTag
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.toStringTag"</code>
|
||
|
||
</td>
|
||
<td>
|
||
A String valued property that is used in the creation of
|
||
the default string description of an object. Accessed by the built-in
|
||
method <emu-xref href="#sec-object.prototype.tostring" id="_ref_32"><a href="#sec-object.prototype.tostring"><code>Object.prototype.toString</code></a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
@@unscopables
|
||
|
||
</td>
|
||
<td>
|
||
<code>"Symbol.unscopables"</code>
|
||
|
||
</td>
|
||
<td>
|
||
An object valued property whose own and inherited property names are property names that are excluded from the <code>with</code> environment bindings of the associated object.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ecmascript-language-types-number-type">
|
||
<h1><span class="secnum">6.1.6</span>The Number Type</h1>
|
||
<p>The Number type has exactly 18437736874454810627 (that is, <emu-eqn class="inline">2<sup>64</sup> - 2<sup>53</sup> + 3</emu-eqn>)
|
||
values, representing the double-precision 64-bit format IEEE 754-2008
|
||
values as specified in the IEEE Standard for Binary Floating-Point
|
||
Arithmetic, except that the 9007199254740990 (that is, <emu-eqn class="inline">2<sup>53</sup> - 2</emu-eqn>) distinct “Not-a-Number” values of the IEEE Standard are represented in ECMAScript as a single special <emu-val>NaN</emu-val> value. (Note that the <emu-val>NaN</emu-val> value is produced by the program expression <code>NaN</code>.)
|
||
In some implementations, external code might be able to detect a
|
||
difference between various Not-a-Number values, but such behaviour is
|
||
implementation-dependent; to ECMAScript code, all <emu-val>NaN</emu-val> values are indistinguishable from each other.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The bit pattern that might be observed in an ArrayBuffer (see <emu-xref href="#sec-arraybuffer-objects" id="_ref_33"><a href="#sec-arraybuffer-objects">24.1</a></emu-xref>) or a SharedArrayBuffer (see <emu-xref href="#sec-sharedarraybuffer-objects" id="_ref_34"><a href="#sec-sharedarraybuffer-objects">24.2</a></emu-xref>)
|
||
after a Number value has been stored into it is not necessarily the
|
||
same as the internal representation of that Number value used by the
|
||
ECMAScript implementation.</p>
|
||
</div></emu-note>
|
||
<p>There are two other special values, called <emu-val>positive Infinity</emu-val> and <emu-val>negative Infinity</emu-val>. For brevity, these values are also referred to for expository purposes by the symbols <emu-val>+∞</emu-val> and <emu-val>-∞</emu-val>, respectively. (Note that these two infinite Number values are produced by the program expressions <code>+Infinity</code> (or simply <code>Infinity</code>) and <code>-Infinity</code>.)</p>
|
||
<p>The other 18437736874454810624 (that is, <emu-eqn class="inline">2<sup>64</sup> - 2<sup>53</sup></emu-eqn>)
|
||
values are called the finite numbers. Half of these are positive
|
||
numbers and half are negative numbers; for every finite positive Number
|
||
value there is a corresponding negative value having the same magnitude.</p>
|
||
<p>Note that there is both a <emu-val>positive zero</emu-val> and a <emu-val>negative zero</emu-val>. For brevity, these values are also referred to for expository purposes by the symbols <emu-val>+0</emu-val> and <emu-val>-0</emu-val>, respectively. (Note that these two different zero Number values are produced by the program expressions <code>+0</code> (or simply <code>0</code>) and <code>-0</code>.)</p>
|
||
<p>The 18437736874454810622 (that is, <emu-eqn class="inline">2<sup>64</sup> - 2<sup>53</sup> - 2</emu-eqn>) finite nonzero values are of two kinds:</p>
|
||
<p>18428729675200069632 (that is, <emu-eqn class="inline">2<sup>64</sup> - 2<sup>54</sup></emu-eqn>) of them are normalized, having the form</p>
|
||
<div class="math-display">
|
||
<var>s</var> × <var>m</var> × 2<sup><var>e</var></sup>
|
||
</div>
|
||
<p>where <var>s</var> is +1 or -1, <var>m</var> is a positive integer less than 2<sup>53</sup> but not less than 2<sup>52</sup>, and <var>e</var> is an integer ranging from -1074 to 971, inclusive.</p>
|
||
<p>The remaining 9007199254740990 (that is, <emu-eqn class="inline">2<sup>53</sup> - 2</emu-eqn>) values are denormalized, having the form</p>
|
||
<div class="math-display">
|
||
<var>s</var> × <var>m</var> × 2<sup><var>e</var></sup>
|
||
</div>
|
||
<p>where <var>s</var> is +1 or -1, <var>m</var> is a positive integer less than 2<sup>52</sup>, and <var>e</var> is -1074.</p>
|
||
<p>Note that all the positive and negative integers whose magnitude is no greater than 2<sup>53</sup> are representable in the Number type (indeed, the integer 0 has two representations, <emu-val>+0</emu-val> and <emu-val>-0</emu-val>).</p>
|
||
<p>A finite number has an <em>odd significand</em> if it is nonzero and the integer <var>m</var> used to express it (in one of the two forms shown above) is odd. Otherwise, it has an <em>even significand</em>.</p>
|
||
<p>In this specification, the phrase “the Number value for <var>x</var>” where <var>x</var>
|
||
represents an exact real mathematical quantity (which might even be an
|
||
irrational number such as π) means a Number value chosen in the
|
||
following manner. Consider the set of all finite values of the Number
|
||
type, with <emu-val>-0</emu-val> removed and with two additional values added to it that are not representable in the Number type, namely 2<sup>1024</sup> (which is <emu-eqn class="inline">+1 × 2<sup>53</sup> × 2<sup>971</sup></emu-eqn>) and <emu-eqn class="inline">-2<sup>1024</sup></emu-eqn> (which is <emu-eqn class="inline">-1 × 2<sup>53</sup> × 2<sup>971</sup></emu-eqn>). Choose the member of this set that is closest in value to <var>x</var>.
|
||
If two values of the set are equally close, then the one with an even
|
||
significand is chosen; for this purpose, the two extra values 2<sup>1024</sup> and <emu-eqn class="inline">-2<sup>1024</sup></emu-eqn> are considered to have even significands. Finally, if 2<sup>1024</sup> was chosen, replace it with <emu-val>+∞</emu-val>; if <emu-eqn class="inline">-2<sup>1024</sup></emu-eqn> was chosen, replace it with <emu-val>-∞</emu-val>; if <emu-val>+0</emu-val> was chosen, replace it with <emu-val>-0</emu-val> if and only if <var>x</var> is less than zero; any other chosen value is used unchanged. The result is the Number value for <var>x</var>. (This procedure corresponds exactly to the behaviour of the IEEE 754-2008 “round to nearest, ties to even” mode.)</p>
|
||
<p>Some ECMAScript operators deal only with integers in specific ranges such as <emu-eqn class="inline">-2<sup>31</sup></emu-eqn> through <emu-eqn class="inline">2<sup>31</sup> - 1</emu-eqn>, inclusive, or in the range 0 through <emu-eqn class="inline">2<sup>16</sup> - 1</emu-eqn>,
|
||
inclusive. These operators accept any value of the Number type but
|
||
first convert each such value to an integer value in the expected range.
|
||
See the descriptions of the numeric conversion operations in <emu-xref href="#sec-type-conversion" id="_ref_35"><a href="#sec-type-conversion">7.1</a></emu-xref>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-type">
|
||
<h1><span class="secnum">6.1.7</span>The Object Type</h1>
|
||
<p>An Object is logically a collection of properties. Each property is either a data property, or an accessor property:</p>
|
||
<ul>
|
||
<li>
|
||
A <dfn>data property</dfn> associates a key value with an <emu-xref href="#sec-ecmascript-language-types" id="_ref_945"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> and a set of Boolean attributes.
|
||
|
||
</li>
|
||
<li>
|
||
An <dfn>accessor property</dfn> associates a key value with
|
||
one or two accessor functions, and a set of Boolean attributes. The
|
||
accessor functions are used to store or retrieve an <emu-xref href="#sec-ecmascript-language-types" id="_ref_946"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> that is associated with the property.
|
||
|
||
</li>
|
||
</ul>
|
||
<p>Properties are identified using key values. A property key
|
||
value is either an ECMAScript String value or a Symbol value. All String
|
||
and Symbol values, including the empty string, are valid as property
|
||
keys. A <dfn id="property-name">property name</dfn> is a property key that is a String value.</p>
|
||
<p>An <dfn id="integer-index">integer index</dfn> is a String-valued property key that is a canonical numeric String (see <emu-xref href="#sec-canonicalnumericindexstring" id="_ref_36"><a href="#sec-canonicalnumericindexstring">7.1.16</a></emu-xref>) and whose numeric value is either <emu-val>+0</emu-val> or a positive integer ≤ 2<sup>53</sup> - 1. An <dfn id="array-index">array index</dfn> is an <emu-xref href="#integer-index" id="_ref_947"><a href="#integer-index">integer index</a></emu-xref> whose numeric value <var>i</var> is in the range <emu-eqn class="inline">+0 ≤ <var>i</var> < 2<sup>32</sup> - 1</emu-eqn>.</p>
|
||
<p>Property keys are used to access properties and their values. There are two kinds of access for properties: <em>get</em> and <em>set</em>,
|
||
corresponding to value retrieval and assignment, respectively. The
|
||
properties accessible via get and set access includes both <em>own properties</em> that are a direct part of an object and <em>inherited properties</em>
|
||
which are provided by another associated object via a property
|
||
inheritance relationship. Inherited properties may be either own or
|
||
inherited properties of the associated object. Each own property of an
|
||
object must each have a key value that is distinct from the key values
|
||
of the other own properties of that object.</p>
|
||
<p>All objects are logically collections of properties, but there
|
||
are multiple forms of objects that differ in their semantics for
|
||
accessing and manipulating their properties. <dfn id="ordinary-objects">Ordinary objects</dfn> are the most common form of objects and have the default object semantics. An <dfn id="exotic-object">exotic object</dfn> is any form of object whose property semantics differ in any way from the default semantics.</p>
|
||
|
||
<emu-clause id="sec-property-attributes">
|
||
<h1><span class="secnum">6.1.7.1</span>Property Attributes</h1>
|
||
<p>Attributes are used in this specification to define and explain the state of Object properties. A <emu-xref href="#sec-object-type" id="_ref_948"><a href="#sec-object-type">data property</a></emu-xref> associates a key value with the attributes listed in <emu-xref href="#table-2" id="_ref_37"><a href="#table-2">Table 2</a></emu-xref>.</p>
|
||
<emu-table id="table-2" caption="Attributes of a Data Property"><figure><figcaption>Table 2: Attributes of a Data Property</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Attribute Name
|
||
|
||
</th>
|
||
<th>
|
||
Value Domain
|
||
|
||
</th>
|
||
<th>
|
||
Description
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Value]]
|
||
|
||
</td>
|
||
<td>
|
||
Any <emu-xref href="#sec-ecmascript-language-types" id="_ref_949"><a href="#sec-ecmascript-language-types">ECMAScript language type</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The value retrieved by a get access of the property.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Writable]]
|
||
|
||
</td>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
If <emu-val>false</emu-val>, attempts by ECMAScript code to change the property's [[Value]] attribute using [[Set]] will not succeed.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Enumerable]]
|
||
|
||
</td>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
If <emu-val>true</emu-val>, the property will be enumerated by a for-in enumeration (see <emu-xref href="#sec-for-in-and-for-of-statements" id="_ref_38"><a href="#sec-for-in-and-for-of-statements">13.7.5</a></emu-xref>). Otherwise, the property is said to be non-enumerable.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Configurable]]
|
||
|
||
</td>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
If <emu-val>false</emu-val>, attempts to delete the property, change the property to be an <emu-xref href="#sec-object-type" id="_ref_950"><a href="#sec-object-type">accessor property</a></emu-xref>, or change its attributes (other than [[Value]], or changing [[Writable]] to <emu-val>false</emu-val>) will fail.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>An <emu-xref href="#sec-object-type" id="_ref_951"><a href="#sec-object-type">accessor property</a></emu-xref> associates a key value with the attributes listed in <emu-xref href="#table-3" id="_ref_39"><a href="#table-3">Table 3</a></emu-xref>.</p>
|
||
<emu-table id="table-3" caption="Attributes of an Accessor Property"><figure><figcaption>Table 3: Attributes of an Accessor Property</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Attribute Name
|
||
|
||
</th>
|
||
<th>
|
||
Value Domain
|
||
|
||
</th>
|
||
<th>
|
||
Description
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Get]]
|
||
|
||
</td>
|
||
<td>
|
||
Object | Undefined
|
||
|
||
</td>
|
||
<td>
|
||
If the value is an Object it must be a <emu-xref href="#function-object" id="_ref_952"><a href="#function-object">function object</a></emu-xref>. The function's [[Call]] internal method (<emu-xref href="#table-6" id="_ref_40"><a href="#table-6">Table 6</a></emu-xref>) is called with an empty arguments list to retrieve the property value each time a get access of the property is performed.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Set]]
|
||
|
||
</td>
|
||
<td>
|
||
Object | Undefined
|
||
|
||
</td>
|
||
<td>
|
||
If the value is an Object it must be a <emu-xref href="#function-object" id="_ref_953"><a href="#function-object">function object</a></emu-xref>. The function's [[Call]] internal method (<emu-xref href="#table-6" id="_ref_41"><a href="#table-6">Table 6</a></emu-xref>)
|
||
is called with an arguments list containing the assigned value as its
|
||
sole argument each time a set access of the property is performed. The
|
||
effect of a property's [[Set]] internal method may, but is not required
|
||
to, have an effect on the value returned by subsequent calls to the
|
||
property's [[Get]] internal method.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Enumerable]]
|
||
|
||
</td>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
If <emu-val>true</emu-val>, the property is to be enumerated by a for-in enumeration (see <emu-xref href="#sec-for-in-and-for-of-statements" id="_ref_42"><a href="#sec-for-in-and-for-of-statements">13.7.5</a></emu-xref>). Otherwise, the property is said to be non-enumerable.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Configurable]]
|
||
|
||
</td>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
If <emu-val>false</emu-val>, attempts to delete the property, change the property to be a <emu-xref href="#sec-object-type" id="_ref_954"><a href="#sec-object-type">data property</a></emu-xref>, or change its attributes will fail.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>If the initial values of a property's attributes are not
|
||
explicitly specified by this specification, the default value defined in
|
||
<emu-xref href="#table-4" id="_ref_43"><a href="#table-4">Table 4</a></emu-xref> is used.</p>
|
||
<emu-table id="table-4" caption="Default Attribute Values"><figure><figcaption>Table 4: Default Attribute Values</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Attribute Name
|
||
|
||
</th>
|
||
<th>
|
||
Default Value
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Value]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-val>undefined</emu-val>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Get]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-val>undefined</emu-val>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Set]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-val>undefined</emu-val>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Writable]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-val>false</emu-val>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Enumerable]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-val>false</emu-val>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Configurable]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-val>false</emu-val>
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-internal-methods-and-internal-slots">
|
||
<h1><span class="secnum">6.1.7.2</span>Object Internal Methods and Internal Slots</h1>
|
||
<p>The actual semantics of objects, in ECMAScript, are specified via algorithms called <em>internal methods</em>.
|
||
Each object in an ECMAScript engine is associated with a set of
|
||
internal methods that defines its runtime behaviour. These internal
|
||
methods are not part of the ECMAScript language. They are defined by
|
||
this specification purely for expository purposes. However, each object
|
||
within an implementation of ECMAScript must behave as specified by the
|
||
internal methods associated with it. The exact manner in which this is
|
||
accomplished is determined by the implementation.</p>
|
||
<p>Internal method names are polymorphic. This means that
|
||
different object values may perform different algorithms when a common
|
||
internal method name is invoked upon them. That actual object upon which
|
||
an internal method is invoked is the “target” of the invocation. If, at
|
||
runtime, the implementation of an algorithm attempts to use an internal
|
||
method of an object that the object does not support, a <emu-val>TypeError</emu-val> exception is thrown.</p>
|
||
<p>Internal slots correspond to internal state that is
|
||
associated with objects and used by various ECMAScript specification
|
||
algorithms. Internal slots are not object properties and they are not
|
||
inherited. Depending upon the specific internal slot specification, such
|
||
state may consist of values of any <emu-xref href="#sec-ecmascript-language-types" id="_ref_955"><a href="#sec-ecmascript-language-types">ECMAScript language type</a></emu-xref>
|
||
or of specific ECMAScript specification type values. Unless explicitly
|
||
specified otherwise, internal slots are allocated as part of the process
|
||
of creating an object and may not be dynamically added to an object.
|
||
Unless specified otherwise, the initial value of an internal slot is the
|
||
value <emu-val>undefined</emu-val>. Various algorithms within this
|
||
specification create objects that have internal slots. However, the
|
||
ECMAScript language provides no direct way to associate internal slots
|
||
with an object.</p>
|
||
<p>Internal methods and internal slots are identified within
|
||
this specification using names enclosed in double square brackets [[ ]].</p>
|
||
<p><emu-xref href="#table-5" id="_ref_44"><a href="#table-5">Table 5</a></emu-xref> summarizes the <em>essential internal methods</em>
|
||
used by this specification that are applicable to all objects created
|
||
or manipulated by ECMAScript code. Every object must have algorithms for
|
||
all of the essential internal methods. However, all objects do not
|
||
necessarily use the same algorithms for those methods.</p>
|
||
<p>The “Signature” column of <emu-xref href="#table-5" id="_ref_45"><a href="#table-5">Table 5</a></emu-xref>
|
||
and other similar tables describes the invocation pattern for each
|
||
internal method. The invocation pattern always includes a parenthesized
|
||
list of descriptive parameter names. If a parameter name is the same as
|
||
an ECMAScript type name then the name describes the required type of the
|
||
parameter value. If an internal method explicitly returns a value, its
|
||
parameter list is followed by the symbol “→” and the type name of the
|
||
returned value. The type names used in signatures refer to the types
|
||
defined in clause <emu-xref href="#sec-ecmascript-data-types-and-values" id="_ref_46"><a href="#sec-ecmascript-data-types-and-values">6</a></emu-xref> augmented by the following additional names. “<em>any</em>” means the value may be any <emu-xref href="#sec-ecmascript-language-types" id="_ref_956"><a href="#sec-ecmascript-language-types">ECMAScript language type</a></emu-xref>. An internal method implicitly returns a <emu-xref href="#sec-completion-record-specification-type" id="_ref_957"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>. In addition to its parameters, an internal method always has access to the object that is the target of the method invocation.</p>
|
||
<emu-table id="table-5" caption="Essential Internal Methods"><figure><figcaption>Table 5: Essential Internal Methods</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Internal Method
|
||
|
||
</th>
|
||
<th>
|
||
Signature
|
||
|
||
</th>
|
||
<th>
|
||
Description
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[GetPrototypeOf]]
|
||
|
||
</td>
|
||
<td>
|
||
( ) <b>→</b> Object | Null
|
||
|
||
</td>
|
||
<td>
|
||
Determine the object that provides inherited properties for this object. A <emu-val>null</emu-val> value indicates that there are no inherited properties.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[SetPrototypeOf]]
|
||
|
||
</td>
|
||
<td>
|
||
(Object | Null) <b>→</b> Boolean
|
||
|
||
</td>
|
||
<td>
|
||
Associate this object with another object that provides inherited properties. Passing <emu-val>null</emu-val> indicates that there are no inherited properties. Returns <emu-val>true</emu-val> indicating that the operation was completed successfully or <emu-val>false</emu-val> indicating that the operation was not successful.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[IsExtensible]]
|
||
|
||
</td>
|
||
<td>
|
||
( ) <b>→</b> Boolean
|
||
|
||
</td>
|
||
<td>
|
||
Determine whether it is permitted to add additional properties to this object.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[PreventExtensions]]
|
||
|
||
</td>
|
||
<td>
|
||
( ) <b>→</b> Boolean
|
||
|
||
</td>
|
||
<td>
|
||
Control whether new properties may be added to this object. Returns <emu-val>true</emu-val> if the operation was successful or <emu-val>false</emu-val> if the operation was unsuccessful.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[GetOwnProperty]]
|
||
|
||
</td>
|
||
<td>
|
||
(<var>propertyKey</var>) <b>→</b> Undefined | <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_958"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
Return a <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_959"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> for the own property of this object whose key is <var>propertyKey</var>, or <emu-val>undefined</emu-val> if no such property exists.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[DefineOwnProperty]]
|
||
|
||
</td>
|
||
<td>
|
||
(<var>propertyKey</var>, <var>PropertyDescriptor</var>) <b>→</b> Boolean
|
||
|
||
</td>
|
||
<td>
|
||
Create or alter the own property, whose key is <var>propertyKey</var>, to have the state described by <var>PropertyDescriptor</var>. Return <emu-val>true</emu-val> if that property was successfully created/updated or <emu-val>false</emu-val> if the property could not be created or updated.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[HasProperty]]
|
||
|
||
</td>
|
||
<td>
|
||
(<var>propertyKey</var>) <b>→</b> Boolean
|
||
|
||
</td>
|
||
<td>
|
||
Return a Boolean value indicating whether this object
|
||
already has either an own or inherited property whose key is <var>propertyKey</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Get]]
|
||
|
||
</td>
|
||
<td>
|
||
(<var>propertyKey</var>, <var>Receiver</var>) <b>→</b> <em>any</em>
|
||
</td>
|
||
<td>
|
||
Return the value of the property whose key is <var>propertyKey</var> from this object. If any ECMAScript code must be executed to retrieve the property value, <var>Receiver</var> is used as the <emu-val>this</emu-val> value when evaluating the code.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Set]]
|
||
|
||
</td>
|
||
<td>
|
||
(<var>propertyKey</var>, <var>value</var>, <var>Receiver</var>) <b>→</b> Boolean
|
||
|
||
</td>
|
||
<td>
|
||
Set the value of the property whose key is <var>propertyKey</var> to <var>value</var>. If any ECMAScript code must be executed to set the property value, <var>Receiver</var> is used as the <emu-val>this</emu-val> value when evaluating the code. Returns <emu-val>true</emu-val> if the property value was set or <emu-val>false</emu-val> if it could not be set.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Delete]]
|
||
|
||
</td>
|
||
<td>
|
||
(<var>propertyKey</var>) <b>→</b> Boolean
|
||
|
||
</td>
|
||
<td>
|
||
Remove the own property whose key is <var>propertyKey</var> from this object. Return <emu-val>false</emu-val> if the property was not deleted and is still present. Return <emu-val>true</emu-val> if the property was deleted or is not present.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[OwnPropertyKeys]]
|
||
|
||
</td>
|
||
<td>
|
||
( ) <b>→</b> <emu-xref href="#sec-list-and-record-specification-type" id="_ref_960"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of propertyKey
|
||
|
||
</td>
|
||
<td>
|
||
Return a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_961"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> whose elements are all of the own property keys for the object.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p><emu-xref href="#table-6" id="_ref_47"><a href="#table-6">Table 6</a></emu-xref> summarizes additional essential internal methods that are supported by objects that may be called as functions. A <dfn id="function-object">function object</dfn> is an object that supports the [[Call]] internal method. A <dfn id="constructor">constructor</dfn>
|
||
is an object that supports the [[Construct]] internal method. Every
|
||
object that supports [[Construct]] must support [[Call]]; that is, every
|
||
<emu-xref href="#constructor" id="_ref_962"><a href="#constructor">constructor</a></emu-xref> must be a <emu-xref href="#function-object" id="_ref_963"><a href="#function-object">function object</a></emu-xref>. Therefore, a <emu-xref href="#constructor" id="_ref_964"><a href="#constructor">constructor</a></emu-xref> may also be referred to as a <em><emu-xref href="#constructor" id="_ref_965"><a href="#constructor">constructor</a></emu-xref> function</em> or <em><emu-xref href="#constructor" id="_ref_966"><a href="#constructor">constructor</a></emu-xref> <emu-xref href="#function-object" id="_ref_967"><a href="#function-object">function object</a></emu-xref></em>.</p>
|
||
<emu-table id="table-6" caption="Additional Essential Internal Methods of Function Objects"><figure><figcaption>Table 6: Additional Essential Internal Methods of Function Objects</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Internal Method
|
||
|
||
</th>
|
||
<th>
|
||
Signature
|
||
|
||
</th>
|
||
<th>
|
||
Description
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Call]]
|
||
|
||
</td>
|
||
<td>
|
||
(<em>any</em>, a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_968"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of <em>any</em>) <b>→</b> <em>any</em>
|
||
</td>
|
||
<td>
|
||
Executes code associated with this object. Invoked via a
|
||
function call expression. The arguments to the internal method are a <emu-val>this</emu-val>
|
||
value and a list containing the arguments passed to the function by a
|
||
call expression. Objects that implement this internal method are <em>callable</em>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Construct]]
|
||
|
||
</td>
|
||
<td>
|
||
(a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_969"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of <em>any</em>, Object) <b>→</b> Object
|
||
|
||
</td>
|
||
<td>
|
||
Creates an object. Invoked via the <code>new</code> or <code>super</code>
|
||
operators. The first argument to the internal method is a list
|
||
containing the arguments of the operator. The second argument is the
|
||
object to which the <code>new</code> operator was initially applied. Objects that implement this internal method are called <em>constructors</em>. A <emu-xref href="#function-object" id="_ref_970"><a href="#function-object">function object</a></emu-xref> is not necessarily a <emu-xref href="#constructor" id="_ref_971"><a href="#constructor">constructor</a></emu-xref> and such non-<emu-xref href="#constructor" id="_ref_972"><a href="#constructor">constructor</a></emu-xref> function objects do not have a [[Construct]] internal method.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>The semantics of the essential internal methods for ordinary objects and standard exotic objects are specified in clause <emu-xref href="#sec-ordinary-and-exotic-objects-behaviours" id="_ref_48"><a href="#sec-ordinary-and-exotic-objects-behaviours">9</a></emu-xref>. If any specified use of an internal method of an <emu-xref href="#exotic-object" id="_ref_973"><a href="#exotic-object">exotic object</a></emu-xref> is not supported by an implementation, that usage must throw a <emu-val>TypeError</emu-val> exception when attempted.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-invariants-of-the-essential-internal-methods">
|
||
<h1><span class="secnum">6.1.7.3</span>Invariants of the Essential Internal Methods</h1>
|
||
<p>The Internal Methods of Objects of an ECMAScript engine must
|
||
conform to the list of invariants specified below. Ordinary ECMAScript
|
||
Objects as well as all standard exotic objects in this specification
|
||
maintain these invariants. ECMAScript Proxy objects maintain these
|
||
invariants by means of runtime checks on the result of traps invoked on
|
||
the [[ProxyHandler]] object.</p>
|
||
<p>Any implementation provided exotic objects must also maintain
|
||
these invariants for those objects. Violation of these invariants may
|
||
cause ECMAScript code to have unpredictable behaviour and create
|
||
security issues. However, violation of these invariants must never
|
||
compromise the memory safety of an implementation.</p>
|
||
<p>An implementation must not allow these invariants to be
|
||
circumvented in any manner such as by providing alternative interfaces
|
||
that implement the functionality of the essential internal methods
|
||
without enforcing their invariants.</p>
|
||
<h2>Definitions:</h2>
|
||
<ul>
|
||
<li>
|
||
The <em>target</em> of an internal method is the object upon which the internal method is called.
|
||
|
||
</li>
|
||
<li>
|
||
A target is <em>non-extensible</em> if it has been observed to return <emu-val>false</emu-val> from its [[IsExtensible]] internal method, or <emu-val>true</emu-val> from its [[PreventExtensions]] internal method.
|
||
|
||
</li>
|
||
<li>
|
||
A <em>non-existent</em> property is a property that does not exist as an own property on a non-extensible target.
|
||
|
||
</li>
|
||
<li>
|
||
All references to <em><emu-xref aoid="SameValue" id="_ref_974"><a href="#sec-samevalue">SameValue</a></emu-xref></em> are according to the definition of the <emu-xref aoid="SameValue" id="_ref_975"><a href="#sec-samevalue">SameValue</a></emu-xref> algorithm.
|
||
|
||
</li>
|
||
</ul>
|
||
<h2>[[GetPrototypeOf]] ( )</h2>
|
||
<ul>
|
||
<li>
|
||
The Type of the return value must be either Object or Null.
|
||
|
||
</li>
|
||
<li>
|
||
If target is non-extensible, and [[GetPrototypeOf]] returns a value <var>V</var>, then any future calls to [[GetPrototypeOf]] should return the <emu-xref aoid="SameValue" id="_ref_976"><a href="#sec-samevalue">SameValue</a></emu-xref> as <var>V</var>.
|
||
|
||
</li>
|
||
</ul>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>An object's prototype chain should have finite length (that
|
||
is, starting from any object, recursively applying the
|
||
[[GetPrototypeOf]] internal method to its result should eventually lead
|
||
to the value <emu-val>null</emu-val>). However, this requirement is not
|
||
enforceable as an object level invariant if the prototype chain includes
|
||
any exotic objects that do not use the ordinary object definition of
|
||
[[GetPrototypeOf]]. Such a circular prototype chain may result in
|
||
infinite loops when accessing object properties.</p>
|
||
</div></emu-note>
|
||
<h2>[[SetPrototypeOf]] ( <var>V</var> )</h2>
|
||
<ul>
|
||
<li>
|
||
The Type of the return value must be Boolean.
|
||
|
||
</li>
|
||
<li>
|
||
If target is non-extensible, [[SetPrototypeOf]] must return <emu-val>false</emu-val>, unless <var>V</var> is the <emu-xref aoid="SameValue" id="_ref_977"><a href="#sec-samevalue">SameValue</a></emu-xref> as the target's observed [[GetPrototypeOf]] value.
|
||
|
||
</li>
|
||
</ul>
|
||
<h2>[[IsExtensible]] ( )</h2>
|
||
<ul>
|
||
<li>
|
||
The Type of the return value must be Boolean.
|
||
|
||
</li>
|
||
<li>
|
||
If [[IsExtensible]] returns <emu-val>false</emu-val>, all future calls to [[IsExtensible]] on the target must return <emu-val>false</emu-val>.
|
||
|
||
</li>
|
||
</ul>
|
||
<h2>[[PreventExtensions]] ( )</h2>
|
||
<ul>
|
||
<li>
|
||
The Type of the return value must be Boolean.
|
||
|
||
</li>
|
||
<li>
|
||
If [[PreventExtensions]] returns <emu-val>true</emu-val>, all future calls to [[IsExtensible]] on the target must return <emu-val>false</emu-val> and the target is now considered non-extensible.
|
||
|
||
</li>
|
||
</ul>
|
||
<h2>[[GetOwnProperty]] ( <var>P</var> )</h2>
|
||
<ul>
|
||
<li>
|
||
The Type of the return value must be either <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_978"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> or Undefined.
|
||
|
||
</li>
|
||
<li>
|
||
If the Type of the return value is <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_979"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref>, the return value must be a <emu-xref href="#sec-completepropertydescriptor" id="_ref_49"><a href="#sec-completepropertydescriptor">complete property descriptor</a></emu-xref>.
|
||
|
||
</li>
|
||
<li>
|
||
If <var>P</var> is described as a non-configurable, non-writable own <emu-xref href="#sec-object-type" id="_ref_980"><a href="#sec-object-type">data property</a></emu-xref>, all future calls to [[GetOwnProperty]] ( <var>P</var> ) must return Property Descritor whose [[Value]] is <emu-xref aoid="SameValue" id="_ref_981"><a href="#sec-samevalue">SameValue</a></emu-xref> as <var>P</var>'s [[Value]] attribute.
|
||
|
||
</li>
|
||
<li>
|
||
If <var>P</var>'s attributes other than [[Writable]] may change over time or if the property might be deleted, then <var>P</var>'s [[Configurable]] attribute must be <emu-val>true</emu-val>.
|
||
|
||
</li>
|
||
<li>
|
||
If the [[Writable]] attribute may change from <emu-val>false</emu-val> to <emu-val>true</emu-val>, then the [[Configurable]] attribute must be <emu-val>true</emu-val>.
|
||
|
||
</li>
|
||
<li>
|
||
If the target is non-extensible and <var>P</var> is non-existent, then all future calls to [[GetOwnProperty]] (<var>P</var>) on the target must describe <var>P</var> as non-existent (i.e. [[GetOwnProperty]] (<var>P</var>) must return <emu-val>undefined</emu-val>).
|
||
|
||
</li>
|
||
</ul>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>As a consequence of the third invariant, if a property is described as a <emu-xref href="#sec-object-type" id="_ref_982"><a href="#sec-object-type">data property</a></emu-xref> and it may return different values over time, then either or both of the [[Writable]] and [[Configurable]] attributes must be <emu-val>true</emu-val> even if no mechanism to change the value is exposed via the other internal methods.</p>
|
||
</div></emu-note>
|
||
<h2>[[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )</h2>
|
||
<ul>
|
||
<li>
|
||
The Type of the return value must be Boolean.
|
||
|
||
</li>
|
||
<li>
|
||
[[DefineOwnProperty]] must return <emu-val>false</emu-val> if <var>P</var> has previously been observed as a non-configurable own property of the target, unless either:
|
||
|
||
<ol>
|
||
<li>
|
||
<var>P</var> is a writable <emu-xref href="#sec-object-type" id="_ref_983"><a href="#sec-object-type">data property</a></emu-xref>. A non-configurable writable <emu-xref href="#sec-object-type" id="_ref_984"><a href="#sec-object-type">data property</a></emu-xref> can be changed into a non-configurable non-writable <emu-xref href="#sec-object-type" id="_ref_985"><a href="#sec-object-type">data property</a></emu-xref>.
|
||
|
||
</li>
|
||
<li>
|
||
All attributes of <var>Desc</var> are the <emu-xref aoid="SameValue" id="_ref_986"><a href="#sec-samevalue">SameValue</a></emu-xref> as <var>P</var>'s attributes.
|
||
|
||
</li>
|
||
</ol>
|
||
</li>
|
||
<li>
|
||
[[DefineOwnProperty]] (<var>P</var>, <var>Desc</var>) must return <emu-val>false</emu-val> if target is non-extensible and <var>P</var> is a non-existent own property. That is, a non-extensible target object cannot be extended with new properties.
|
||
|
||
</li>
|
||
</ul>
|
||
<h2>[[HasProperty]] ( <var>P</var> )</h2>
|
||
<ul>
|
||
<li>
|
||
The Type of the return value must be Boolean.
|
||
|
||
</li>
|
||
<li>
|
||
If <var>P</var> was previously observed as a non-configurable own data or <emu-xref href="#sec-object-type" id="_ref_987"><a href="#sec-object-type">accessor property</a></emu-xref> of the target, [[HasProperty]] must return <emu-val>true</emu-val>.
|
||
|
||
</li>
|
||
</ul>
|
||
<h2>[[Get]] ( <var>P</var>, <var>Receiver</var> )</h2>
|
||
<ul>
|
||
<li>
|
||
If <var>P</var> was previously observed as a non-configurable, non-writable own <emu-xref href="#sec-object-type" id="_ref_988"><a href="#sec-object-type">data property</a></emu-xref> of the target with value <var>V</var>, then [[Get]] must return the <emu-xref aoid="SameValue" id="_ref_989"><a href="#sec-samevalue">SameValue</a></emu-xref> as <var>V</var>.
|
||
|
||
</li>
|
||
<li>
|
||
If <var>P</var> was previously observed as a non-configurable own <emu-xref href="#sec-object-type" id="_ref_990"><a href="#sec-object-type">accessor property</a></emu-xref> of the target whose [[Get]] attribute is <emu-val>undefined</emu-val>, the [[Get]] operation must return <emu-val>undefined</emu-val>.
|
||
|
||
</li>
|
||
</ul>
|
||
<h2>[[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</h2>
|
||
<ul>
|
||
<li>
|
||
The Type of the return value must be Boolean.
|
||
|
||
</li>
|
||
<li>
|
||
If <var>P</var> was previously observed as a non-configurable, non-writable own <emu-xref href="#sec-object-type" id="_ref_991"><a href="#sec-object-type">data property</a></emu-xref> of the target, then [[Set]] must return <emu-val>false</emu-val> unless <var>V</var> is the <emu-xref aoid="SameValue" id="_ref_992"><a href="#sec-samevalue">SameValue</a></emu-xref> as <var>P</var>'s [[Value]] attribute.
|
||
|
||
</li>
|
||
<li>
|
||
If <var>P</var> was previously observed as a non-configurable own <emu-xref href="#sec-object-type" id="_ref_993"><a href="#sec-object-type">accessor property</a></emu-xref> of the target whose [[Set]] attribute is <emu-val>undefined</emu-val>, the [[Set]] operation must return <emu-val>false</emu-val>.
|
||
|
||
</li>
|
||
</ul>
|
||
<h2>[[Delete]] ( <var>P</var> )</h2>
|
||
<ul>
|
||
<li>
|
||
The Type of the return value must be Boolean.
|
||
|
||
</li>
|
||
<li>
|
||
If <var>P</var> was previously observed as a non-configurable own data or <emu-xref href="#sec-object-type" id="_ref_994"><a href="#sec-object-type">accessor property</a></emu-xref> of the target, [[Delete]] must return <emu-val>false</emu-val>.
|
||
|
||
</li>
|
||
</ul>
|
||
<h2>[[OwnPropertyKeys]] ( )</h2>
|
||
<ul>
|
||
<li>
|
||
The return value must be a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_995"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>.
|
||
|
||
</li>
|
||
<li>
|
||
The returned <emu-xref href="#sec-list-and-record-specification-type" id="_ref_996"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> must not contain any duplicate entries.
|
||
|
||
</li>
|
||
<li>
|
||
The Type of each element of the returned <emu-xref href="#sec-list-and-record-specification-type" id="_ref_997"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> is either String or Symbol.
|
||
|
||
</li>
|
||
<li>
|
||
The returned <emu-xref href="#sec-list-and-record-specification-type" id="_ref_998"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> must contain at least the keys of all non-configurable own properties that have previously been observed.
|
||
|
||
</li>
|
||
<li>
|
||
If the object is non-extensible, the returned <emu-xref href="#sec-list-and-record-specification-type" id="_ref_999"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> must contain only the keys of all own properties of the object that are observable using [[GetOwnProperty]].
|
||
|
||
</li>
|
||
</ul>
|
||
<h2>[[Construct]] ( )</h2>
|
||
<ul>
|
||
<li>
|
||
The Type of the return value must be Object.
|
||
|
||
</li>
|
||
</ul>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-well-known-intrinsic-objects">
|
||
<h1><span class="secnum">6.1.7.4</span>Well-Known Intrinsic Objects</h1>
|
||
<p>Well-known intrinsics are built-in objects that are
|
||
explicitly referenced by the algorithms of this specification and which
|
||
usually have <emu-xref href="#realm" id="_ref_1000"><a href="#realm">realm</a></emu-xref>-specific
|
||
identities. Unless otherwise specified each intrinsic object actually
|
||
corresponds to a set of similar objects, one per <emu-xref href="#realm" id="_ref_1001"><a href="#realm">realm</a></emu-xref>.</p>
|
||
<p>Within this specification a reference such as %name% means the intrinsic object, associated with the current <emu-xref href="#realm" id="_ref_1002"><a href="#realm">realm</a></emu-xref>, corresponding to the name. Determination of the current <emu-xref href="#realm" id="_ref_1003"><a href="#realm">realm</a></emu-xref> and its intrinsics is described in <emu-xref href="#sec-execution-contexts" id="_ref_50"><a href="#sec-execution-contexts">8.3</a></emu-xref>. The well-known intrinsics are listed in <emu-xref href="#table-7" id="_ref_51"><a href="#table-7">Table 7</a></emu-xref>.</p>
|
||
<emu-table id="table-7" caption="Well-Known Intrinsic Objects"><figure><figcaption>Table 7: Well-Known Intrinsic Objects</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Intrinsic Name
|
||
|
||
</th>
|
||
<th>
|
||
Global Name
|
||
|
||
</th>
|
||
<th>
|
||
ECMAScript Language Association
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-array-constructor" id="_ref_1004"><a href="#sec-array-constructor">%Array%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Array</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Array</code> <emu-xref href="#constructor" id="_ref_1005"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-array-constructor" id="_ref_52"><a href="#sec-array-constructor">22.1.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-arraybuffer-constructor" id="_ref_1006"><a href="#sec-arraybuffer-constructor">%ArrayBuffer%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>ArrayBuffer</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>ArrayBuffer</code> <emu-xref href="#constructor" id="_ref_1007"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-arraybuffer-constructor" id="_ref_53"><a href="#sec-arraybuffer-constructor">24.1.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-arraybuffer-prototype-object" id="_ref_1008"><a href="#sec-properties-of-the-arraybuffer-prototype-object">%ArrayBufferPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>ArrayBuffer.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1009"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-arraybuffer-constructor" id="_ref_1010"><a href="#sec-arraybuffer-constructor">%ArrayBuffer%</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-%arrayiteratorprototype%-object" id="_ref_1011"><a href="#sec-%arrayiteratorprototype%-object">%ArrayIteratorPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The prototype of Array iterator objects (<emu-xref href="#sec-array-iterator-objects" id="_ref_54"><a href="#sec-array-iterator-objects">22.1.5</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-array-prototype-object" id="_ref_1012"><a href="#sec-properties-of-the-array-prototype-object">%ArrayPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Array.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1013"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-array-constructor" id="_ref_1014"><a href="#sec-array-constructor">%Array%</a></emu-xref> (<emu-xref href="#sec-properties-of-the-array-prototype-object" id="_ref_55"><a href="#sec-properties-of-the-array-prototype-object">22.1.3</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-array.prototype.entries" id="_ref_1015"><a href="#sec-array.prototype.entries">%ArrayProto_entries%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Array.prototype.entries</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>entries</code> <emu-xref href="#sec-object-type" id="_ref_1016"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-properties-of-the-array-prototype-object" id="_ref_1017"><a href="#sec-properties-of-the-array-prototype-object">%ArrayPrototype%</a></emu-xref> (<emu-xref href="#sec-array.prototype.entries" id="_ref_56"><a href="#sec-array.prototype.entries">22.1.3.4</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-array.prototype.foreach" id="_ref_1018"><a href="#sec-array.prototype.foreach">%ArrayProto_forEach%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Array.prototype.forEach</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>forEach</code> <emu-xref href="#sec-object-type" id="_ref_1019"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-properties-of-the-array-prototype-object" id="_ref_1020"><a href="#sec-properties-of-the-array-prototype-object">%ArrayPrototype%</a></emu-xref> (<emu-xref href="#sec-array.prototype.foreach" id="_ref_57"><a href="#sec-array.prototype.foreach">22.1.3.12</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-array.prototype.keys" id="_ref_1021"><a href="#sec-array.prototype.keys">%ArrayProto_keys%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Array.prototype.keys</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>keys</code> <emu-xref href="#sec-object-type" id="_ref_1022"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-properties-of-the-array-prototype-object" id="_ref_1023"><a href="#sec-properties-of-the-array-prototype-object">%ArrayPrototype%</a></emu-xref> (<emu-xref href="#sec-array.prototype.keys" id="_ref_58"><a href="#sec-array.prototype.keys">22.1.3.16</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-array.prototype.values" id="_ref_1024"><a href="#sec-array.prototype.values">%ArrayProto_values%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Array.prototype.values</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>values</code> <emu-xref href="#sec-object-type" id="_ref_1025"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-properties-of-the-array-prototype-object" id="_ref_1026"><a href="#sec-properties-of-the-array-prototype-object">%ArrayPrototype%</a></emu-xref> (<emu-xref href="#sec-array.prototype.values" id="_ref_59"><a href="#sec-array.prototype.values">22.1.3.32</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-%asyncfromsynciteratorprototype%-object" id="_ref_1027"><a href="#sec-%asyncfromsynciteratorprototype%-object">%AsyncFromSyncIteratorPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The prototype of async-from-sync iterator objects (<emu-xref href="#sec-async-from-sync-iterator-objects" id="_ref_60"><a href="#sec-async-from-sync-iterator-objects">25.1.4</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-async-function-constructor" id="_ref_1028"><a href="#sec-async-function-constructor">%AsyncFunction%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#constructor" id="_ref_1029"><a href="#constructor">constructor</a></emu-xref> of async function objects (<emu-xref href="#sec-async-function-constructor" id="_ref_61"><a href="#sec-async-function-constructor">25.7.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-async-function-prototype-properties" id="_ref_1030"><a href="#sec-async-function-prototype-properties">%AsyncFunctionPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1031"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-async-function-constructor" id="_ref_1032"><a href="#sec-async-function-constructor">%AsyncFunction%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-asyncgeneratorfunction-prototype" id="_ref_1033"><a href="#sec-asyncgeneratorfunction-prototype">%AsyncGenerator%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> property of <emu-xref href="#sec-asyncgeneratorfunction-constructor" id="_ref_1034"><a href="#sec-asyncgeneratorfunction-constructor">%AsyncGeneratorFunction%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-asyncgeneratorfunction-constructor" id="_ref_1035"><a href="#sec-asyncgeneratorfunction-constructor">%AsyncGeneratorFunction%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#constructor" id="_ref_1036"><a href="#constructor">constructor</a></emu-xref> of async iterator objects (<emu-xref href="#sec-asyncgeneratorfunction-constructor" id="_ref_62"><a href="#sec-asyncgeneratorfunction-constructor">25.3.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-asyncgenerator-prototype" id="_ref_1037"><a href="#sec-properties-of-asyncgenerator-prototype">%AsyncGeneratorPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> property of <emu-xref href="#sec-asyncgeneratorfunction-prototype" id="_ref_1038"><a href="#sec-asyncgeneratorfunction-prototype">%AsyncGenerator%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-asynciteratorprototype" id="_ref_1039"><a href="#sec-asynciteratorprototype">%AsyncIteratorPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
An object that all standard built-in async iterator objects indirectly inherit from
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-atomics-object" id="_ref_1040"><a href="#sec-atomics-object">%Atomics%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Atomics</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Atomics</code> object (<emu-xref href="#sec-atomics-object" id="_ref_63"><a href="#sec-atomics-object">24.4</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-boolean-constructor" id="_ref_1041"><a href="#sec-boolean-constructor">%Boolean%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Boolean</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Boolean</code> <emu-xref href="#constructor" id="_ref_1042"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-boolean-constructor" id="_ref_64"><a href="#sec-boolean-constructor">19.3.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-boolean-prototype-object" id="_ref_1043"><a href="#sec-properties-of-the-boolean-prototype-object">%BooleanPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Boolean.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1044"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-boolean-constructor" id="_ref_1045"><a href="#sec-boolean-constructor">%Boolean%</a></emu-xref> (<emu-xref href="#sec-properties-of-the-boolean-prototype-object" id="_ref_65"><a href="#sec-properties-of-the-boolean-prototype-object">19.3.3</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-dataview-constructor" id="_ref_1046"><a href="#sec-dataview-constructor">%DataView%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>DataView</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>DataView</code> <emu-xref href="#constructor" id="_ref_1047"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-dataview-constructor" id="_ref_66"><a href="#sec-dataview-constructor">24.3.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-dataview-prototype-object" id="_ref_1048"><a href="#sec-properties-of-the-dataview-prototype-object">%DataViewPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>DataView.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1049"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-dataview-constructor" id="_ref_1050"><a href="#sec-dataview-constructor">%DataView%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-date-constructor" id="_ref_1051"><a href="#sec-date-constructor">%Date%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Date</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Date</code> <emu-xref href="#constructor" id="_ref_1052"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-date-constructor" id="_ref_67"><a href="#sec-date-constructor">20.3.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-date-prototype-object" id="_ref_1053"><a href="#sec-properties-of-the-date-prototype-object">%DatePrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Date.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1054"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-date-constructor" id="_ref_1055"><a href="#sec-date-constructor">%Date%</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-decodeuri-encodeduri" id="_ref_1056"><a href="#sec-decodeuri-encodeduri">%decodeURI%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>decodeURI</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>decodeURI</code> function (<emu-xref href="#sec-decodeuri-encodeduri" id="_ref_68"><a href="#sec-decodeuri-encodeduri">18.2.6.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-decodeuricomponent-encodeduricomponent" id="_ref_1057"><a href="#sec-decodeuricomponent-encodeduricomponent">%decodeURIComponent%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>decodeURIComponent</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>decodeURIComponent</code> function (<emu-xref href="#sec-decodeuricomponent-encodeduricomponent" id="_ref_69"><a href="#sec-decodeuricomponent-encodeduricomponent">18.2.6.3</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-encodeuri-uri" id="_ref_1058"><a href="#sec-encodeuri-uri">%encodeURI%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>encodeURI</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>encodeURI</code> function (<emu-xref href="#sec-encodeuri-uri" id="_ref_70"><a href="#sec-encodeuri-uri">18.2.6.4</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-encodeuricomponent-uricomponent" id="_ref_1059"><a href="#sec-encodeuricomponent-uricomponent">%encodeURIComponent%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>encodeURIComponent</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>encodeURIComponent</code> function (<emu-xref href="#sec-encodeuricomponent-uricomponent" id="_ref_71"><a href="#sec-encodeuricomponent-uricomponent">18.2.6.5</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-error-constructor" id="_ref_1060"><a href="#sec-error-constructor">%Error%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Error</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Error</code> <emu-xref href="#constructor" id="_ref_1061"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-error-constructor" id="_ref_72"><a href="#sec-error-constructor">19.5.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-error-prototype-object" id="_ref_1062"><a href="#sec-properties-of-the-error-prototype-object">%ErrorPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Error.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1063"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-error-constructor" id="_ref_1064"><a href="#sec-error-constructor">%Error%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-eval-x" id="_ref_1065"><a href="#sec-eval-x">%eval%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>eval</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>eval</code> function (<emu-xref href="#sec-eval-x" id="_ref_73"><a href="#sec-eval-x">18.2.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%EvalError%
|
||
|
||
</td>
|
||
<td>
|
||
<code>EvalError</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>EvalError</code> <emu-xref href="#constructor" id="_ref_1066"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-native-error-types-used-in-this-standard-evalerror" id="_ref_74"><a href="#sec-native-error-types-used-in-this-standard-evalerror">19.5.5.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%EvalErrorPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>EvalError.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1067"><a href="#sec-object-type">data property</a></emu-xref> of %EvalError%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Float32Array%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Float32Array</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Float32Array</code> <emu-xref href="#constructor" id="_ref_1068"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-typedarray-objects" id="_ref_75"><a href="#sec-typedarray-objects">22.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Float32ArrayPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Float32Array.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1069"><a href="#sec-object-type">data property</a></emu-xref> of %Float32Array%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Float64Array%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Float64Array</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Float64Array</code> <emu-xref href="#constructor" id="_ref_1070"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-typedarray-objects" id="_ref_76"><a href="#sec-typedarray-objects">22.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Float64ArrayPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Float64Array.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1071"><a href="#sec-object-type">data property</a></emu-xref> of %Float64Array%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-function-constructor" id="_ref_1072"><a href="#sec-function-constructor">%Function%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Function</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Function</code> <emu-xref href="#constructor" id="_ref_1073"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-function-constructor" id="_ref_77"><a href="#sec-function-constructor">19.2.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-function-prototype-object" id="_ref_1074"><a href="#sec-properties-of-the-function-prototype-object">%FunctionPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Function.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1075"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-function-constructor" id="_ref_1076"><a href="#sec-function-constructor">%Function%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-generatorfunction-prototype-object" id="_ref_1077"><a href="#sec-properties-of-the-generatorfunction-prototype-object">%Generator%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1078"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-generatorfunction-constructor" id="_ref_1079"><a href="#sec-generatorfunction-constructor">%GeneratorFunction%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-generatorfunction-constructor" id="_ref_1080"><a href="#sec-generatorfunction-constructor">%GeneratorFunction%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#constructor" id="_ref_1081"><a href="#constructor">constructor</a></emu-xref> of generator objects (<emu-xref href="#sec-generatorfunction-constructor" id="_ref_78"><a href="#sec-generatorfunction-constructor">25.2.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-generator-prototype" id="_ref_1082"><a href="#sec-properties-of-generator-prototype">%GeneratorPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1083"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-properties-of-the-generatorfunction-prototype-object" id="_ref_1084"><a href="#sec-properties-of-the-generatorfunction-prototype-object">%Generator%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Int8Array%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Int8Array</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Int8Array</code> <emu-xref href="#constructor" id="_ref_1085"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-typedarray-objects" id="_ref_79"><a href="#sec-typedarray-objects">22.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Int8ArrayPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Int8Array.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1086"><a href="#sec-object-type">data property</a></emu-xref> of %Int8Array%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Int16Array%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Int16Array</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Int16Array</code> <emu-xref href="#constructor" id="_ref_1087"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-typedarray-objects" id="_ref_80"><a href="#sec-typedarray-objects">22.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Int16ArrayPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Int16Array.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1088"><a href="#sec-object-type">data property</a></emu-xref> of %Int16Array%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Int32Array%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Int32Array</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Int32Array</code> <emu-xref href="#constructor" id="_ref_1089"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-typedarray-objects" id="_ref_81"><a href="#sec-typedarray-objects">22.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Int32ArrayPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Int32Array.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1090"><a href="#sec-object-type">data property</a></emu-xref> of %Int32Array%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-isfinite-number" id="_ref_1091"><a href="#sec-isfinite-number">%isFinite%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>isFinite</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>isFinite</code> function (<emu-xref href="#sec-isfinite-number" id="_ref_82"><a href="#sec-isfinite-number">18.2.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-isnan-number" id="_ref_1092"><a href="#sec-isnan-number">%isNaN%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>isNaN</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>isNaN</code> function (<emu-xref href="#sec-isnan-number" id="_ref_83"><a href="#sec-isnan-number">18.2.3</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-%iteratorprototype%-object" id="_ref_1093"><a href="#sec-%iteratorprototype%-object">%IteratorPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
An object that all standard built-in iterator objects indirectly inherit from
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-json-object" id="_ref_1094"><a href="#sec-json-object">%JSON%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>JSON</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>JSON</code> object (<emu-xref href="#sec-json-object" id="_ref_84"><a href="#sec-json-object">24.5</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-json.parse" id="_ref_1095"><a href="#sec-json.parse">%JSONParse%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>JSON.parse</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>parse</code> <emu-xref href="#sec-object-type" id="_ref_1096"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-json-object" id="_ref_1097"><a href="#sec-json-object">%JSON%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%JSONStringify%
|
||
|
||
</td>
|
||
<td>
|
||
<code>JSON.stringify</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>stringify</code> <emu-xref href="#sec-object-type" id="_ref_1098"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-json-object" id="_ref_1099"><a href="#sec-json-object">%JSON%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-map-constructor" id="_ref_1100"><a href="#sec-map-constructor">%Map%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Map</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Map</code> <emu-xref href="#constructor" id="_ref_1101"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-map-constructor" id="_ref_85"><a href="#sec-map-constructor">23.1.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-%mapiteratorprototype%-object" id="_ref_1102"><a href="#sec-%mapiteratorprototype%-object">%MapIteratorPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The prototype of Map iterator objects (<emu-xref href="#sec-map-iterator-objects" id="_ref_86"><a href="#sec-map-iterator-objects">23.1.5</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-map-prototype-object" id="_ref_1103"><a href="#sec-properties-of-the-map-prototype-object">%MapPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Map.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1104"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-map-constructor" id="_ref_1105"><a href="#sec-map-constructor">%Map%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-math-object" id="_ref_1106"><a href="#sec-math-object">%Math%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Math</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Math</code> object (<emu-xref href="#sec-math-object" id="_ref_87"><a href="#sec-math-object">20.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-number-constructor" id="_ref_1107"><a href="#sec-number-constructor">%Number%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Number</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Number</code> <emu-xref href="#constructor" id="_ref_1108"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-number-constructor" id="_ref_88"><a href="#sec-number-constructor">20.1.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-number-prototype-object" id="_ref_1109"><a href="#sec-properties-of-the-number-prototype-object">%NumberPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Number.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1110"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-number-constructor" id="_ref_1111"><a href="#sec-number-constructor">%Number%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-object-constructor" id="_ref_1112"><a href="#sec-object-constructor">%Object%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Object</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Object</code> <emu-xref href="#constructor" id="_ref_1113"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-object-constructor" id="_ref_89"><a href="#sec-object-constructor">19.1.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_1114"><a href="#sec-properties-of-the-object-prototype-object">%ObjectPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Object.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1115"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-object-constructor" id="_ref_1116"><a href="#sec-object-constructor">%Object%</a></emu-xref> (<emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_90"><a href="#sec-properties-of-the-object-prototype-object">19.1.3</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-object.prototype.tostring" id="_ref_1117"><a href="#sec-object.prototype.tostring">%ObjProto_toString%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Object.prototype.toString</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>toString</code> <emu-xref href="#sec-object-type" id="_ref_1118"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_1119"><a href="#sec-properties-of-the-object-prototype-object">%ObjectPrototype%</a></emu-xref> (<emu-xref href="#sec-object.prototype.tostring" id="_ref_91"><a href="#sec-object.prototype.tostring">19.1.3.6</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-object.prototype.valueof" id="_ref_1120"><a href="#sec-object.prototype.valueof">%ObjProto_valueOf%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Object.prototype.valueOf</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>valueOf</code> <emu-xref href="#sec-object-type" id="_ref_1121"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_1122"><a href="#sec-properties-of-the-object-prototype-object">%ObjectPrototype%</a></emu-xref> (<emu-xref href="#sec-object.prototype.valueof" id="_ref_92"><a href="#sec-object.prototype.valueof">19.1.3.7</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-parsefloat-string" id="_ref_1123"><a href="#sec-parsefloat-string">%parseFloat%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>parseFloat</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>parseFloat</code> function (<emu-xref href="#sec-parsefloat-string" id="_ref_93"><a href="#sec-parsefloat-string">18.2.4</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-parseint-string-radix" id="_ref_1124"><a href="#sec-parseint-string-radix">%parseInt%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>parseInt</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>parseInt</code> function (<emu-xref href="#sec-parseint-string-radix" id="_ref_94"><a href="#sec-parseint-string-radix">18.2.5</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-promise-constructor" id="_ref_1125"><a href="#sec-promise-constructor">%Promise%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Promise</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Promise</code> <emu-xref href="#constructor" id="_ref_1126"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-promise-constructor" id="_ref_95"><a href="#sec-promise-constructor">25.6.3</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-promise-prototype-object" id="_ref_1127"><a href="#sec-properties-of-the-promise-prototype-object">%PromisePrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Promise.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1128"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-promise-constructor" id="_ref_1129"><a href="#sec-promise-constructor">%Promise%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-promise.prototype.then" id="_ref_1130"><a href="#sec-promise.prototype.then">%PromiseProto_then%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Promise.prototype.then</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>then</code> <emu-xref href="#sec-object-type" id="_ref_1131"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-properties-of-the-promise-prototype-object" id="_ref_1132"><a href="#sec-properties-of-the-promise-prototype-object">%PromisePrototype%</a></emu-xref> (<emu-xref href="#sec-promise.prototype.then" id="_ref_96"><a href="#sec-promise.prototype.then">25.6.5.4</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-promise.all" id="_ref_1133"><a href="#sec-promise.all">%Promise_all%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Promise.all</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>all</code> <emu-xref href="#sec-object-type" id="_ref_1134"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-promise-constructor" id="_ref_1135"><a href="#sec-promise-constructor">%Promise%</a></emu-xref> (<emu-xref href="#sec-promise.all" id="_ref_97"><a href="#sec-promise.all">25.6.4.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-promise.reject" id="_ref_1136"><a href="#sec-promise.reject">%Promise_reject%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Promise.reject</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>reject</code> <emu-xref href="#sec-object-type" id="_ref_1137"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-promise-constructor" id="_ref_1138"><a href="#sec-promise-constructor">%Promise%</a></emu-xref> (<emu-xref href="#sec-promise.reject" id="_ref_98"><a href="#sec-promise.reject">25.6.4.4</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-promise.resolve" id="_ref_1139"><a href="#sec-promise.resolve">%Promise_resolve%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Promise.resolve</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>resolve</code> <emu-xref href="#sec-object-type" id="_ref_1140"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-promise-constructor" id="_ref_1141"><a href="#sec-promise-constructor">%Promise%</a></emu-xref> (<emu-xref href="#sec-promise.resolve" id="_ref_99"><a href="#sec-promise.resolve">25.6.4.5</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-proxy-constructor" id="_ref_1142"><a href="#sec-proxy-constructor">%Proxy%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Proxy</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Proxy</code> <emu-xref href="#constructor" id="_ref_1143"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-proxy-constructor" id="_ref_100"><a href="#sec-proxy-constructor">26.2.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%RangeError%
|
||
|
||
</td>
|
||
<td>
|
||
<code>RangeError</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>RangeError</code> <emu-xref href="#constructor" id="_ref_1144"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-native-error-types-used-in-this-standard-rangeerror" id="_ref_101"><a href="#sec-native-error-types-used-in-this-standard-rangeerror">19.5.5.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%RangeErrorPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>RangeError.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1145"><a href="#sec-object-type">data property</a></emu-xref> of %RangeError%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%ReferenceError%
|
||
|
||
</td>
|
||
<td>
|
||
<code>ReferenceError</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>ReferenceError</code> <emu-xref href="#constructor" id="_ref_1146"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-native-error-types-used-in-this-standard-referenceerror" id="_ref_102"><a href="#sec-native-error-types-used-in-this-standard-referenceerror">19.5.5.3</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%ReferenceErrorPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>ReferenceError.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1147"><a href="#sec-object-type">data property</a></emu-xref> of %ReferenceError%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-reflect-object" id="_ref_1148"><a href="#sec-reflect-object">%Reflect%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Reflect</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Reflect</code> object (<emu-xref href="#sec-reflect-object" id="_ref_103"><a href="#sec-reflect-object">26.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-regexp-constructor" id="_ref_1149"><a href="#sec-regexp-constructor">%RegExp%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>RegExp</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>RegExp</code> <emu-xref href="#constructor" id="_ref_1150"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-regexp-constructor" id="_ref_104"><a href="#sec-regexp-constructor">21.2.3</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-regexp-prototype-object" id="_ref_1151"><a href="#sec-properties-of-the-regexp-prototype-object">%RegExpPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>RegExp.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1152"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-regexp-constructor" id="_ref_1153"><a href="#sec-regexp-constructor">%RegExp%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-set-constructor" id="_ref_1154"><a href="#sec-set-constructor">%Set%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Set</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Set</code> <emu-xref href="#constructor" id="_ref_1155"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-set-constructor" id="_ref_105"><a href="#sec-set-constructor">23.2.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-%setiteratorprototype%-object" id="_ref_1156"><a href="#sec-%setiteratorprototype%-object">%SetIteratorPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The prototype of Set iterator objects (<emu-xref href="#sec-set-iterator-objects" id="_ref_106"><a href="#sec-set-iterator-objects">23.2.5</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-set-prototype-object" id="_ref_1157"><a href="#sec-properties-of-the-set-prototype-object">%SetPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Set.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1158"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-set-constructor" id="_ref_1159"><a href="#sec-set-constructor">%Set%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-sharedarraybuffer-constructor" id="_ref_1160"><a href="#sec-sharedarraybuffer-constructor">%SharedArrayBuffer%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>SharedArrayBuffer</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>SharedArrayBuffer</code> <emu-xref href="#constructor" id="_ref_1161"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-sharedarraybuffer-constructor" id="_ref_107"><a href="#sec-sharedarraybuffer-constructor">24.2.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-sharedarraybuffer-prototype-object" id="_ref_1162"><a href="#sec-properties-of-the-sharedarraybuffer-prototype-object">%SharedArrayBufferPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>SharedArrayBuffer.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1163"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-sharedarraybuffer-constructor" id="_ref_1164"><a href="#sec-sharedarraybuffer-constructor">%SharedArrayBuffer%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-string-constructor" id="_ref_1165"><a href="#sec-string-constructor">%String%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>String</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>String</code> <emu-xref href="#constructor" id="_ref_1166"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-string-constructor" id="_ref_108"><a href="#sec-string-constructor">21.1.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-%stringiteratorprototype%-object" id="_ref_1167"><a href="#sec-%stringiteratorprototype%-object">%StringIteratorPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The prototype of String iterator objects (<emu-xref href="#sec-string-iterator-objects" id="_ref_109"><a href="#sec-string-iterator-objects">21.1.5</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-string-prototype-object" id="_ref_1168"><a href="#sec-properties-of-the-string-prototype-object">%StringPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>String.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1169"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-string-constructor" id="_ref_1170"><a href="#sec-string-constructor">%String%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-symbol-constructor" id="_ref_1171"><a href="#sec-symbol-constructor">%Symbol%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Symbol</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Symbol</code> <emu-xref href="#constructor" id="_ref_1172"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-symbol-constructor" id="_ref_110"><a href="#sec-symbol-constructor">19.4.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-symbol-prototype-object" id="_ref_1173"><a href="#sec-properties-of-the-symbol-prototype-object">%SymbolPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>Symbol.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1174"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-symbol-constructor" id="_ref_1175"><a href="#sec-symbol-constructor">%Symbol%</a></emu-xref> (<emu-xref href="#sec-properties-of-the-symbol-prototype-object" id="_ref_111"><a href="#sec-properties-of-the-symbol-prototype-object">19.4.3</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%SyntaxError%
|
||
|
||
</td>
|
||
<td>
|
||
<code>SyntaxError</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>SyntaxError</code> <emu-xref href="#constructor" id="_ref_1176"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-native-error-types-used-in-this-standard-syntaxerror" id="_ref_112"><a href="#sec-native-error-types-used-in-this-standard-syntaxerror">19.5.5.4</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%SyntaxErrorPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>SyntaxError.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1177"><a href="#sec-object-type">data property</a></emu-xref> of %SyntaxError%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-%throwtypeerror%" id="_ref_1178"><a href="#sec-%throwtypeerror%">%ThrowTypeError%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
A <emu-xref href="#function-object" id="_ref_1179"><a href="#function-object">function object</a></emu-xref> that unconditionally throws a new instance of %TypeError%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_1180"><a href="#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The super class of all typed Array constructors (<emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_113"><a href="#sec-%typedarray%-intrinsic-object">22.2.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-%typedarrayprototype%-object" id="_ref_1181"><a href="#sec-properties-of-the-%typedarrayprototype%-object">%TypedArrayPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1182"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-%typedarray%-intrinsic-object" id="_ref_1183"><a href="#sec-%typedarray%-intrinsic-object">%TypedArray%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%TypeError%
|
||
|
||
</td>
|
||
<td>
|
||
<code>TypeError</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>TypeError</code> <emu-xref href="#constructor" id="_ref_1184"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-native-error-types-used-in-this-standard-typeerror" id="_ref_114"><a href="#sec-native-error-types-used-in-this-standard-typeerror">19.5.5.5</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%TypeErrorPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>TypeError.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1185"><a href="#sec-object-type">data property</a></emu-xref> of %TypeError%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Uint8Array%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Uint8Array</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Uint8Array</code> <emu-xref href="#constructor" id="_ref_1186"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-typedarray-objects" id="_ref_115"><a href="#sec-typedarray-objects">22.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Uint8ArrayPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Uint8Array.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1187"><a href="#sec-object-type">data property</a></emu-xref> of %Uint8Array%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Uint8ClampedArray%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Uint8ClampedArray</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Uint8ClampedArray</code> <emu-xref href="#constructor" id="_ref_1188"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-typedarray-objects" id="_ref_116"><a href="#sec-typedarray-objects">22.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Uint8ClampedArrayPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Uint8ClampedArray.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1189"><a href="#sec-object-type">data property</a></emu-xref> of %Uint8ClampedArray%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Uint16Array%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Uint16Array</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Uint16Array</code> <emu-xref href="#constructor" id="_ref_1190"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-typedarray-objects" id="_ref_117"><a href="#sec-typedarray-objects">22.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Uint16ArrayPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Uint16Array.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1191"><a href="#sec-object-type">data property</a></emu-xref> of %Uint16Array%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Uint32Array%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Uint32Array</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>Uint32Array</code> <emu-xref href="#constructor" id="_ref_1192"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-typedarray-objects" id="_ref_118"><a href="#sec-typedarray-objects">22.2</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%Uint32ArrayPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>Uint32Array.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1193"><a href="#sec-object-type">data property</a></emu-xref> of %Uint32Array%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%URIError%
|
||
|
||
</td>
|
||
<td>
|
||
<code>URIError</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>URIError</code> <emu-xref href="#constructor" id="_ref_1194"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-native-error-types-used-in-this-standard-urierror" id="_ref_119"><a href="#sec-native-error-types-used-in-this-standard-urierror">19.5.5.6</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
%URIErrorPrototype%
|
||
|
||
</td>
|
||
<td>
|
||
<code>URIError.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1195"><a href="#sec-object-type">data property</a></emu-xref> of %URIError%
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-weakmap-constructor" id="_ref_1196"><a href="#sec-weakmap-constructor">%WeakMap%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>WeakMap</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>WeakMap</code> <emu-xref href="#constructor" id="_ref_1197"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-weakmap-constructor" id="_ref_120"><a href="#sec-weakmap-constructor">23.3.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-weakmap-prototype-object" id="_ref_1198"><a href="#sec-properties-of-the-weakmap-prototype-object">%WeakMapPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>WeakMap.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1199"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-weakmap-constructor" id="_ref_1200"><a href="#sec-weakmap-constructor">%WeakMap%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-weakset-constructor" id="_ref_1201"><a href="#sec-weakset-constructor">%WeakSet%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>WeakSet</code>
|
||
|
||
</td>
|
||
<td>
|
||
The <code>WeakSet</code> <emu-xref href="#constructor" id="_ref_1202"><a href="#constructor">constructor</a></emu-xref> (<emu-xref href="#sec-weakset-constructor" id="_ref_121"><a href="#sec-weakset-constructor">23.4.1</a></emu-xref>)
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#sec-properties-of-the-weakset-prototype-object" id="_ref_1203"><a href="#sec-properties-of-the-weakset-prototype-object">%WeakSetPrototype%</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
<code>WeakSet.prototype</code>
|
||
|
||
</td>
|
||
<td>
|
||
The initial value of the <code>prototype</code> <emu-xref href="#sec-object-type" id="_ref_1204"><a href="#sec-object-type">data property</a></emu-xref> of <emu-xref href="#sec-weakset-constructor" id="_ref_1205"><a href="#sec-weakset-constructor">%WeakSet%</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ecmascript-specification-types">
|
||
<h1><span class="secnum">6.2</span>ECMAScript Specification Types</h1>
|
||
<p>A specification type corresponds to meta-values that are used
|
||
within algorithms to describe the semantics of ECMAScript language
|
||
constructs and ECMAScript language types. The specification types
|
||
include <emu-xref href="#sec-reference-specification-type" id="_ref_1206"><a href="#sec-reference-specification-type">Reference</a></emu-xref>, <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1207"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>, <emu-xref aoid="Completion" id="_ref_1208"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>, <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_1209"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref>, <emu-xref href="#sec-lexical-environments" id="_ref_1210"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref>, <emu-xref href="#sec-environment-records" id="_ref_1211"><a href="#sec-environment-records">Environment Record</a></emu-xref>, and <emu-xref href="#sec-data-blocks" id="_ref_1212"><a href="#sec-data-blocks">Data Block</a></emu-xref>.
|
||
Specification type values are specification artefacts that do not
|
||
necessarily correspond to any specific entity within an ECMAScript
|
||
implementation. Specification type values may be used to describe
|
||
intermediate results of ECMAScript expression evaluation but such values
|
||
cannot be stored as properties of objects or values of ECMAScript
|
||
language variables.</p>
|
||
|
||
<emu-clause id="sec-list-and-record-specification-type">
|
||
<h1><span class="secnum">6.2.1</span>The List and Record Specification Types</h1>
|
||
<p>The <dfn>List</dfn> type is used to explain the evaluation of argument lists (see <emu-xref href="#sec-argument-lists" id="_ref_122"><a href="#sec-argument-lists">12.3.6</a></emu-xref>) in <code>new</code>
|
||
expressions, in function calls, and in other algorithms where a simple
|
||
ordered list of values is needed. Values of the List type are simply
|
||
ordered sequences of list elements containing the individual values.
|
||
These sequences may be of any length. The elements of a list may be
|
||
randomly accessed using 0-origin indices. For notational convenience an
|
||
array-like syntax can be used to access List elements. For example, <var>arguments</var>[2] is shorthand for saying the 3<sup>rd</sup> element of the List <var>arguments</var>.</p>
|
||
<p>For notational convenience within this specification, a literal
|
||
syntax can be used to express a new List value. For example, « 1, 2 »
|
||
defines a List value that has two elements each of which is initialized
|
||
to a specific value. A new empty List can be expressed as « ».</p>
|
||
<p>The <dfn>Record</dfn> type is used to describe data
|
||
aggregations within the algorithms of this specification. A Record type
|
||
value consists of one or more named fields. The value of each field is
|
||
either an ECMAScript value or an abstract value represented by a name
|
||
associated with the Record type. Field names are always enclosed in
|
||
double brackets, for example [[Value]].</p>
|
||
<p>For notational convenience within this specification, an object
|
||
literal-like syntax can be used to express a Record value. For example,
|
||
{ [[Field1]]: 42, [[Field2]]: <emu-val>false</emu-val>, [[Field3]]: <emu-const>empty</emu-const>
|
||
} defines a Record value that has three fields, each of which is
|
||
initialized to a specific value. Field name order is not significant.
|
||
Any fields that are not explicitly listed are considered to be absent.</p>
|
||
<p>In specification text and algorithms, dot notation may be used
|
||
to refer to a specific field of a Record value. For example, if R is the
|
||
record shown in the previous paragraph then R.[[Field2]] is shorthand
|
||
for “the field of R named [[Field2]]”.</p>
|
||
<p>Schema for commonly used Record field combinations may be
|
||
named, and that name may be used as a prefix to a literal Record value
|
||
to identify the specific kind of aggregations that is being described.
|
||
For example: PropertyDescriptor { [[Value]]: 42, [[Writable]]: <emu-val>false</emu-val>, [[Configurable]]: <emu-val>true</emu-val> }.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-set-and-relation-specification-type">
|
||
<h1><span class="secnum">6.2.2</span>The Set and Relation Specification Types</h1>
|
||
<p>The <dfn>Set</dfn> type is used to explain a collection of unordered elements for use in the <emu-xref href="#sec-memory-model" id="_ref_1213"><a href="#sec-memory-model">memory model</a></emu-xref>.
|
||
Values of the Set type are simple collections of elements, where no
|
||
element appears more than once. Elements may be added to and removed
|
||
from Sets. Sets may be unioned, intersected, or subtracted from each
|
||
other.</p>
|
||
<p>The <dfn>Relation</dfn> type is used to explain constraints on
|
||
Sets. Values of the Relation type are Sets of ordered pairs of values
|
||
from its value domain. For example, a Relation on events is a set of
|
||
ordered pairs of events. For a Relation <var>R</var> and two values <var>a</var> and <var>b</var> in the value domain of <var>R</var>, <var>a</var> <var>R</var> <var>b</var> is shorthand for saying the ordered pair (<var>a</var>, <var>b</var>) is a member of <var>R</var>. A Relation is least with respect to some conditions when it is the smallest Relation that satisfies those conditions.</p>
|
||
<p>A <dfn>strict partial order</dfn> is a Relation value <var>R</var> that satisfies the following.</p>
|
||
<ul>
|
||
<li>
|
||
<p>For all <var>a</var>, <var>b</var>, and <var>c</var> in <var>R</var>'s domain:</p>
|
||
<ul>
|
||
<li>It is not the case that <var>a</var> <var>R</var> <var>a</var>, and</li>
|
||
<li>If <var>a</var> <var>R</var> <var>b</var> and <var>b</var> <var>R</var> <var>c</var>, then <var>a</var> <var>R</var> <var>c</var>.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>The two properties above are called, in order, irreflexivity and transitivity.</p>
|
||
</div></emu-note>
|
||
<p>A <dfn>strict total order</dfn> is a Relation value <var>R</var> that satisfies the following.</p>
|
||
<ul>
|
||
<li>
|
||
<p>For all <var>a</var>, <var>b</var>, and <var>c</var> in <var>R</var>'s domain:</p>
|
||
<ul>
|
||
<li><var>a</var> is identical to <var>b</var> or <var>a</var> <var>R</var> <var>b</var> or <var>b</var> <var>R</var> <var>a</var>, and</li>
|
||
<li>It is not the case that <var>a</var> <var>R</var> <var>a</var>, and</li>
|
||
<li>If <var>a</var> <var>R</var> <var>b</var> and <var>b</var> <var>R</var> <var>c</var>, then <var>a</var> <var>R</var> <var>c</var>.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>The three properties above are called, in order, totality, irreflexivity, and transitivity.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-completion-record-specification-type" aoid="Completion">
|
||
<h1><span class="secnum">6.2.3</span>The Completion Record Specification Type</h1>
|
||
<p>The Completion type is a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1214"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> used to explain the runtime propagation of values and control flow such as the behaviour of statements (<code>break</code>, <code>continue</code>, <code>return</code> and <code>throw</code>) that perform nonlocal transfers of control.</p>
|
||
<p>Values of the Completion type are <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1215"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> values whose fields are defined as by <emu-xref href="#table-8" id="_ref_123"><a href="#table-8">Table 8</a></emu-xref>. Such values are referred to as <dfn>Completion Record</dfn>s.</p>
|
||
<emu-table id="table-8" caption="Completion Record Fields"><figure><figcaption>Table 8: <emu-xref href="#sec-completion-record-specification-type" id="_ref_1216"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref> Fields</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Field Name
|
||
|
||
</th>
|
||
<th>
|
||
Value
|
||
|
||
</th>
|
||
<th>
|
||
Meaning
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Type]]
|
||
|
||
</td>
|
||
<td>
|
||
One of <emu-const>normal</emu-const>, <emu-const>break</emu-const>, <emu-const>continue</emu-const>, <emu-const>return</emu-const>, or <emu-const>throw</emu-const>
|
||
|
||
</td>
|
||
<td>
|
||
The type of completion that occurred.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Value]]
|
||
|
||
</td>
|
||
<td>
|
||
any <emu-xref href="#sec-ecmascript-language-types" id="_ref_1217"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> or <emu-const>empty</emu-const>
|
||
|
||
</td>
|
||
<td>
|
||
The value that was produced.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Target]]
|
||
|
||
</td>
|
||
<td>
|
||
any ECMAScript string or <emu-const>empty</emu-const>
|
||
|
||
</td>
|
||
<td>
|
||
The target label for directed control transfers.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>The term “<dfn>abrupt completion</dfn>” refers to any completion with a [[Type]] value other than <emu-const>normal</emu-const>.</p>
|
||
|
||
<emu-clause id="await" aoid="Await">
|
||
<h1><span class="secnum">6.2.3.1</span>Await</h1>
|
||
|
||
<p>Algorithm steps that say</p>
|
||
|
||
<emu-alg><ol><li>Let <var>completion</var> be <emu-xref aoid="Await" id="_ref_1218"><a href="#await">Await</a></emu-xref>(<var>value</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<p>mean the same thing as:</p>
|
||
|
||
<emu-alg><ol><li>Let <var>asyncContext</var> be the <emu-xref href="#running-execution-context" id="_ref_1219"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Let <var>promise</var> be ? <emu-xref aoid="PromiseResolve" id="_ref_1220"><a href="#sec-promise-resolve">PromiseResolve</a></emu-xref>(<emu-xref href="#sec-promise-constructor" id="_ref_1221"><a href="#sec-promise-constructor">%Promise%</a></emu-xref>, « <var>value</var> »).</li><li>Let <var>stepsFulfilled</var> be the algorithm steps defined in <emu-xref href="#await-fulfilled" title="" id="_ref_124"><a href="#await-fulfilled">Await Fulfilled Functions</a></emu-xref>.</li><li>Let <var>onFulfilled</var> be <emu-xref aoid="CreateBuiltinFunction" id="_ref_1222"><a href="#sec-createbuiltinfunction">CreateBuiltinFunction</a></emu-xref>(<var>stepsFulfilled</var>, « [[AsyncContext]] »).</li><li>Set <var>onFulfilled</var>.[[AsyncContext]] to <var>asyncContext</var>.</li><li>Let <var>stepsRejected</var> be the algorithm steps defined in <emu-xref href="#await-rejected" title="" id="_ref_125"><a href="#await-rejected">Await Rejected Functions</a></emu-xref>.</li><li>Let <var>onRejected</var> be <emu-xref aoid="CreateBuiltinFunction" id="_ref_1223"><a href="#sec-createbuiltinfunction">CreateBuiltinFunction</a></emu-xref>(<var>stepsRejected</var>, « [[AsyncContext]] »).</li><li>Set <var>onRejected</var>.[[AsyncContext]] to <var>asyncContext</var>.</li><li>Perform ! <emu-xref aoid="PerformPromiseThen" id="_ref_1224"><a href="#sec-performpromisethen">PerformPromiseThen</a></emu-xref>(<var>promise</var>, <var>onFulfilled</var>, <var>onRejected</var>).</li><li>Remove <var>asyncContext</var> from the <emu-xref href="#execution-context-stack" id="_ref_1225"><a href="#execution-context-stack">execution context stack</a></emu-xref> and restore the <emu-xref href="#sec-execution-contexts" id="_ref_1226"><a href="#sec-execution-contexts">execution context</a></emu-xref> that is at the top of the <emu-xref href="#execution-context-stack" id="_ref_1227"><a href="#execution-context-stack">execution context stack</a></emu-xref> as the <emu-xref href="#running-execution-context" id="_ref_1228"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Set the code evaluation state of <var>asyncContext</var> such that when evaluation is resumed with a <emu-xref aoid="Completion" id="_ref_1229"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref> <var>completion</var>, the following steps of the algorithm that invoked <emu-xref aoid="Await" id="_ref_1230"><a href="#await">Await</a></emu-xref> will be performed, with <var>completion</var> available.</li><li>Return.</li><li>NOTE: This returns to the evaluation of the operation that had most previously resumed evaluation of <var>asyncContext</var>.
|
||
</li></ol></emu-alg>
|
||
|
||
<p>where all variables in the above steps, with the exception of <var>completion</var>, are ephemeral and visible only in the steps pertaining to Await.</p>
|
||
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Await can be combined with the <code>?</code> and <code>!</code> prefixes, so that for example</p>
|
||
|
||
<emu-alg><ol><li>Let <var>result</var> be ? <emu-xref aoid="Await" id="_ref_1231"><a href="#await">Await</a></emu-xref>(<var>value</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<p>means the same thing as:</p>
|
||
|
||
<emu-alg><ol><li>Let <var>result</var> be <emu-xref aoid="Await" id="_ref_1232"><a href="#await">Await</a></emu-xref>(<var>value</var>).</li><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_1233"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>result</var>).
|
||
</li></ol></emu-alg>
|
||
</div></emu-note>
|
||
|
||
<emu-clause id="await-fulfilled">
|
||
<h1><span class="secnum">6.2.3.1.1</span>Await Fulfilled Functions</h1>
|
||
|
||
<p>An <emu-xref aoid="Await" id="_ref_1234"><a href="#await">Await</a></emu-xref> fulfilled function is an anonymous built-in function that is used as part of the <emu-xref aoid="Await" id="_ref_1235"><a href="#await">Await</a></emu-xref> specification device to deliver the promise fulfillment value to the caller as a normal completion. Each <emu-xref aoid="Await" id="_ref_1236"><a href="#await">Await</a></emu-xref> fulfilled function has an [[AsyncContext]] internal slot.</p>
|
||
|
||
<p>When an <emu-xref aoid="Await" id="_ref_1237"><a href="#await">Await</a></emu-xref> fulfilled function is called with argument <var>value</var>, the following steps are taken:</p>
|
||
|
||
<emu-alg><ol><li>Let <var>F</var> be the <emu-xref href="#active-function-object" id="_ref_1238"><a href="#active-function-object">active function object</a></emu-xref>.</li><li>Let <var>asyncContext</var> be <var>F</var>.[[AsyncContext]].</li><li>Let <var>prevContext</var> be the <emu-xref href="#running-execution-context" id="_ref_1239"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li><emu-xref aoid="Suspend" id="_ref_1240"><a href="#sec-suspend">Suspend</a></emu-xref> <var>prevContext</var>.</li><li>Push <var>asyncContext</var> onto the <emu-xref href="#execution-context-stack" id="_ref_1241"><a href="#execution-context-stack">execution context stack</a></emu-xref>; <var>asyncContext</var> is now the <emu-xref href="#running-execution-context" id="_ref_1242"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Resume the suspended evaluation of <var>asyncContext</var> using <emu-xref aoid="NormalCompletion" id="_ref_1243"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<var>value</var>) as the result of the operation that suspended it.</li><li><emu-xref href="#assert" id="_ref_1244"><a href="#assert">Assert</a></emu-xref>: When we reach this step, <var>asyncContext</var> has already been removed from the <emu-xref href="#execution-context-stack" id="_ref_1245"><a href="#execution-context-stack">execution context stack</a></emu-xref> and <var>prevContext</var> is the currently <emu-xref href="#running-execution-context" id="_ref_1246"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Return <emu-val>undefined</emu-val>.
|
||
</li></ol></emu-alg>
|
||
|
||
<p>The <code>"length"</code> property of an <emu-xref aoid="Await" id="_ref_1247"><a href="#await">Await</a></emu-xref> fulfilled function is 1.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="await-rejected">
|
||
<h1><span class="secnum">6.2.3.1.2</span>Await Rejected Functions</h1>
|
||
|
||
<p>An <emu-xref aoid="Await" id="_ref_1248"><a href="#await">Await</a></emu-xref> rejected function is an anonymous built-in function that is used as part of the <emu-xref aoid="Await" id="_ref_1249"><a href="#await">Await</a></emu-xref> specification device to deliver the promise rejection reason to the caller as an abrupt throw completion. Each <emu-xref aoid="Await" id="_ref_1250"><a href="#await">Await</a></emu-xref> rejected function has an [[AsyncContext]] internal slot.</p>
|
||
|
||
<p>When an <emu-xref aoid="Await" id="_ref_1251"><a href="#await">Await</a></emu-xref> rejected function is called with argument <var>reason</var>, the following steps are taken:</p>
|
||
|
||
<emu-alg><ol><li>Let <var>F</var> be the <emu-xref href="#active-function-object" id="_ref_1252"><a href="#active-function-object">active function object</a></emu-xref>.</li><li>Let <var>asyncContext</var> be <var>F</var>.[[AsyncContext]].</li><li>Let <var>prevContext</var> be the <emu-xref href="#running-execution-context" id="_ref_1253"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li><emu-xref aoid="Suspend" id="_ref_1254"><a href="#sec-suspend">Suspend</a></emu-xref> <var>prevContext</var>.</li><li>Push <var>asyncContext</var> onto the <emu-xref href="#execution-context-stack" id="_ref_1255"><a href="#execution-context-stack">execution context stack</a></emu-xref>; <var>asyncContext</var> is now the <emu-xref href="#running-execution-context" id="_ref_1256"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Resume the suspended evaluation of <var>asyncContext</var> using <emu-xref aoid="ThrowCompletion" id="_ref_1257"><a href="#sec-throwcompletion">ThrowCompletion</a></emu-xref>(<var>reason</var>) as the result of the operation that suspended it.</li><li><emu-xref href="#assert" id="_ref_1258"><a href="#assert">Assert</a></emu-xref>: When we reach this step, <var>asyncContext</var> has already been removed from the <emu-xref href="#execution-context-stack" id="_ref_1259"><a href="#execution-context-stack">execution context stack</a></emu-xref> and <var>prevContext</var> is the currently <emu-xref href="#running-execution-context" id="_ref_1260"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Return <emu-val>undefined</emu-val>.
|
||
</li></ol></emu-alg>
|
||
|
||
<p>The <code>"length"</code> property of an <emu-xref aoid="Await" id="_ref_1261"><a href="#await">Await</a></emu-xref> rejected function is 1.</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-normalcompletion" aoid="NormalCompletion">
|
||
<h1><span class="secnum">6.2.3.2</span>NormalCompletion</h1>
|
||
<p>The abstract operation NormalCompletion with a single <var>argument</var>, such as:</p>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="NormalCompletion" id="_ref_1262"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<var>argument</var>).
|
||
</li></ol></emu-alg>
|
||
<p>Is a shorthand that is defined as follows:</p>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="Completion" id="_ref_1263"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref> { [[Type]]: <emu-const>normal</emu-const>, [[Value]]: <var>argument</var>, [[Target]]: <emu-const>empty</emu-const> }.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-throwcompletion" aoid="ThrowCompletion">
|
||
<h1><span class="secnum">6.2.3.3</span>ThrowCompletion</h1>
|
||
<p>The abstract operation ThrowCompletion with a single <var>argument</var>, such as:</p>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ThrowCompletion" id="_ref_1264"><a href="#sec-throwcompletion">ThrowCompletion</a></emu-xref>(<var>argument</var>).
|
||
</li></ol></emu-alg>
|
||
<p>Is a shorthand that is defined as follows:</p>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="Completion" id="_ref_1265"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref> { [[Type]]: <emu-const>throw</emu-const>, [[Value]]: <var>argument</var>, [[Target]]: <emu-const>empty</emu-const> }.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-updateempty" aoid="UpdateEmpty">
|
||
<h1><span class="secnum">6.2.3.4</span>UpdateEmpty ( <var>completionRecord</var>, <var>value</var> )</h1>
|
||
<p>The abstract operation UpdateEmpty with arguments <var>completionRecord</var> and <var>value</var> performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1266"><a href="#assert">Assert</a></emu-xref>: If <var>completionRecord</var>.[[Type]] is either <emu-const>return</emu-const> or <emu-const>throw</emu-const>, then <var>completionRecord</var>.[[Value]] is not <emu-const>empty</emu-const>.</li><li>If <var>completionRecord</var>.[[Value]] is not <emu-const>empty</emu-const>, return <emu-xref aoid="Completion" id="_ref_1267"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>(<var>completionRecord</var>).</li><li>Return <emu-xref aoid="Completion" id="_ref_1268"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref> { [[Type]]: <var>completionRecord</var>.[[Type]], [[Value]]: <var>value</var>, [[Target]]: <var>completionRecord</var>.[[Target]] }.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-reference-specification-type">
|
||
<h1><span class="secnum">6.2.4</span>The Reference Specification Type</h1>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The Reference type is used to explain the behaviour of such operators as <code>delete</code>, <code>typeof</code>, the assignment operators, the <code>super</code> keyword and other language features. For example, the left-hand operand of an assignment is expected to produce a reference.</p>
|
||
</div></emu-note>
|
||
<p>A <dfn>Reference</dfn> is a resolved name or property binding.
|
||
A Reference consists of three components, the base value component, the
|
||
referenced name component, and the Boolean-valued strict reference
|
||
flag. The base value component is either <emu-val>undefined</emu-val>, an Object, a Boolean, a String, a Symbol, a Number, or an <emu-xref href="#sec-environment-records" id="_ref_1269"><a href="#sec-environment-records">Environment Record</a></emu-xref>. A base value component of <emu-val>undefined</emu-val> indicates that the Reference could not be resolved to a binding. The referenced name component is a String or Symbol value.</p>
|
||
<p>A <dfn id="super-reference">Super Reference</dfn> is a Reference that is used to represent a name binding that was expressed using the super keyword. A <emu-xref href="#super-reference" id="_ref_1270"><a href="#super-reference">Super Reference</a></emu-xref> has an additional thisValue component, and its base value component will never be an <emu-xref href="#sec-environment-records" id="_ref_1271"><a href="#sec-environment-records">Environment Record</a></emu-xref>.</p>
|
||
<p>The following <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_1272"><a href="#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref> are used in this specification to operate on references:</p>
|
||
|
||
<emu-clause id="sec-getbase" aoid="GetBase" oldids="ao-getbase">
|
||
<span id="ao-getbase"></span><h1><span class="secnum">6.2.4.1</span>GetBase ( <var>V</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1273"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1274"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is <emu-xref href="#sec-reference-specification-type" id="_ref_1275"><a href="#sec-reference-specification-type">Reference</a></emu-xref>.</li><li>Return the base value component of <var>V</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getreferencedname" aoid="GetReferencedName" oldids="ao-getreferencedname">
|
||
<span id="ao-getreferencedname"></span><h1><span class="secnum">6.2.4.2</span>GetReferencedName ( <var>V</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1276"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1277"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is <emu-xref href="#sec-reference-specification-type" id="_ref_1278"><a href="#sec-reference-specification-type">Reference</a></emu-xref>.</li><li>Return the referenced name component of <var>V</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isstrictreference" aoid="IsStrictReference" oldids="ao-isstrictreference">
|
||
<span id="ao-isstrictreference"></span><h1><span class="secnum">6.2.4.3</span>IsStrictReference ( <var>V</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1279"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1280"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is <emu-xref href="#sec-reference-specification-type" id="_ref_1281"><a href="#sec-reference-specification-type">Reference</a></emu-xref>.</li><li>Return the strict reference flag of <var>V</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-hasprimitivebase" aoid="HasPrimitiveBase" oldids="ao-hasprimitivebase">
|
||
<span id="ao-hasprimitivebase"></span><h1><span class="secnum">6.2.4.4</span>HasPrimitiveBase ( <var>V</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1282"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1283"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is <emu-xref href="#sec-reference-specification-type" id="_ref_1284"><a href="#sec-reference-specification-type">Reference</a></emu-xref>.</li><li>If <emu-xref aoid="Type" id="_ref_1285"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>'s base value component) is Boolean, String, Symbol, or Number, return <emu-val>true</emu-val>; otherwise return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ispropertyreference" aoid="IsPropertyReference" oldids="ao-ispropertyreference">
|
||
<span id="ao-ispropertyreference"></span><h1><span class="secnum">6.2.4.5</span>IsPropertyReference ( <var>V</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1286"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1287"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is <emu-xref href="#sec-reference-specification-type" id="_ref_1288"><a href="#sec-reference-specification-type">Reference</a></emu-xref>.</li><li>If either the base value component of <var>V</var> is an Object or <emu-xref aoid="HasPrimitiveBase" id="_ref_1289"><a href="#sec-hasprimitivebase">HasPrimitiveBase</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>, return <emu-val>true</emu-val>; otherwise return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isunresolvablereference" aoid="IsUnresolvableReference" oldids="ao-isunresolvablereference">
|
||
<span id="ao-isunresolvablereference"></span><h1><span class="secnum">6.2.4.6</span>IsUnresolvableReference ( <var>V</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1290"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1291"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is <emu-xref href="#sec-reference-specification-type" id="_ref_1292"><a href="#sec-reference-specification-type">Reference</a></emu-xref>.</li><li>If the base value component of <var>V</var> is <emu-val>undefined</emu-val>, return <emu-val>true</emu-val>; otherwise return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-issuperreference" aoid="IsSuperReference" oldids="ao-issuperreference">
|
||
<span id="ao-issuperreference"></span><h1><span class="secnum">6.2.4.7</span>IsSuperReference ( <var>V</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1293"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1294"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is <emu-xref href="#sec-reference-specification-type" id="_ref_1295"><a href="#sec-reference-specification-type">Reference</a></emu-xref>.</li><li>If <var>V</var> has a thisValue component, return <emu-val>true</emu-val>; otherwise return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getvalue" aoid="GetValue">
|
||
<h1><span class="secnum">6.2.4.8</span>GetValue ( <var>V</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_1296"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>V</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1297"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is not <emu-xref href="#sec-reference-specification-type" id="_ref_1298"><a href="#sec-reference-specification-type">Reference</a></emu-xref>, return <var>V</var>.</li><li>Let <var>base</var> be <emu-xref aoid="GetBase" id="_ref_1299"><a href="#sec-getbase">GetBase</a></emu-xref>(<var>V</var>).</li><li>If <emu-xref aoid="IsUnresolvableReference" id="_ref_1300"><a href="#sec-isunresolvablereference">IsUnresolvableReference</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>, throw a <emu-val>ReferenceError</emu-val> exception.</li><li>If <emu-xref aoid="IsPropertyReference" id="_ref_1301"><a href="#sec-ispropertyreference">IsPropertyReference</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>, then<ol><li>If <emu-xref aoid="HasPrimitiveBase" id="_ref_1302"><a href="#sec-hasprimitivebase">HasPrimitiveBase</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>, then<ol><li><emu-xref href="#assert" id="_ref_1303"><a href="#assert">Assert</a></emu-xref>: In this case, <var>base</var> will never be <emu-val>undefined</emu-val> or <emu-val>null</emu-val>.</li><li>Set <var>base</var> to ! <emu-xref aoid="ToObject" id="_ref_1304"><a href="#sec-toobject">ToObject</a></emu-xref>(<var>base</var>).</li></ol></li><li>Return ? <var>base</var>.[[Get]](<emu-xref aoid="GetReferencedName" id="_ref_1305"><a href="#sec-getreferencedname">GetReferencedName</a></emu-xref>(<var>V</var>), <emu-xref aoid="GetThisValue" id="_ref_1306"><a href="#sec-getthisvalue">GetThisValue</a></emu-xref>(<var>V</var>)).</li></ol></li><li>Else <var>base</var> must be an <emu-xref href="#sec-environment-records" id="_ref_1307"><a href="#sec-environment-records">Environment Record</a></emu-xref>,<ol><li>Return ? <var>base</var>.GetBindingValue(<emu-xref aoid="GetReferencedName" id="_ref_1308"><a href="#sec-getreferencedname">GetReferencedName</a></emu-xref>(<var>V</var>), <emu-xref aoid="IsStrictReference" id="_ref_1309"><a href="#sec-isstrictreference">IsStrictReference</a></emu-xref>(<var>V</var>)) (see <emu-xref href="#sec-environment-records" id="_ref_126"><a href="#sec-environment-records">8.1.1</a></emu-xref>).
|
||
</li></ol></li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The object that may be created in step 5.a.ii is not
|
||
accessible outside of the above abstract operation and the ordinary
|
||
object [[Get]] internal method. An implementation might choose to avoid
|
||
the actual creation of the object.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-putvalue" aoid="PutValue">
|
||
<h1><span class="secnum">6.2.4.9</span>PutValue ( <var>V</var>, <var>W</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_1310"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>V</var>).</li><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_1311"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>W</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1312"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is not <emu-xref href="#sec-reference-specification-type" id="_ref_1313"><a href="#sec-reference-specification-type">Reference</a></emu-xref>, throw a <emu-val>ReferenceError</emu-val> exception.</li><li>Let <var>base</var> be <emu-xref aoid="GetBase" id="_ref_1314"><a href="#sec-getbase">GetBase</a></emu-xref>(<var>V</var>).</li><li>If <emu-xref aoid="IsUnresolvableReference" id="_ref_1315"><a href="#sec-isunresolvablereference">IsUnresolvableReference</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>, then<ol><li>If <emu-xref aoid="IsStrictReference" id="_ref_1316"><a href="#sec-isstrictreference">IsStrictReference</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>, then<ol><li>Throw a <emu-val>ReferenceError</emu-val> exception.</li></ol></li><li>Let <var>globalObj</var> be <emu-xref aoid="GetGlobalObject" id="_ref_1317"><a href="#sec-getglobalobject">GetGlobalObject</a></emu-xref>().</li><li>Return ? <emu-xref aoid="Set" id="_ref_1318"><a href="#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>globalObj</var>, <emu-xref aoid="GetReferencedName" id="_ref_1319"><a href="#sec-getreferencedname">GetReferencedName</a></emu-xref>(<var>V</var>), <var>W</var>, <emu-val>false</emu-val>).</li></ol></li><li>Else if <emu-xref aoid="IsPropertyReference" id="_ref_1320"><a href="#sec-ispropertyreference">IsPropertyReference</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>, then<ol><li>If <emu-xref aoid="HasPrimitiveBase" id="_ref_1321"><a href="#sec-hasprimitivebase">HasPrimitiveBase</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>, then<ol><li><emu-xref href="#assert" id="_ref_1322"><a href="#assert">Assert</a></emu-xref>: In this case, <var>base</var> will never be <emu-val>undefined</emu-val> or <emu-val>null</emu-val>.</li><li>Set <var>base</var> to ! <emu-xref aoid="ToObject" id="_ref_1323"><a href="#sec-toobject">ToObject</a></emu-xref>(<var>base</var>).</li></ol></li><li>Let <var>succeeded</var> be ? <var>base</var>.[[Set]](<emu-xref aoid="GetReferencedName" id="_ref_1324"><a href="#sec-getreferencedname">GetReferencedName</a></emu-xref>(<var>V</var>), <var>W</var>, <emu-xref aoid="GetThisValue" id="_ref_1325"><a href="#sec-getthisvalue">GetThisValue</a></emu-xref>(<var>V</var>)).</li><li>If <var>succeeded</var> is <emu-val>false</emu-val> and <emu-xref aoid="IsStrictReference" id="_ref_1326"><a href="#sec-isstrictreference">IsStrictReference</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return.</li></ol></li><li>Else <var>base</var> must be an <emu-xref href="#sec-environment-records" id="_ref_1327"><a href="#sec-environment-records">Environment Record</a></emu-xref>,<ol><li>Return ? <var>base</var>.SetMutableBinding(<emu-xref aoid="GetReferencedName" id="_ref_1328"><a href="#sec-getreferencedname">GetReferencedName</a></emu-xref>(<var>V</var>), <var>W</var>, <emu-xref aoid="IsStrictReference" id="_ref_1329"><a href="#sec-isstrictreference">IsStrictReference</a></emu-xref>(<var>V</var>)) (see <emu-xref href="#sec-environment-records" id="_ref_127"><a href="#sec-environment-records">8.1.1</a></emu-xref>).
|
||
</li></ol></li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The object that may be created in step 6.a.ii is not
|
||
accessible outside of the above algorithm and the ordinary object
|
||
[[Set]] internal method. An implementation might choose to avoid the
|
||
actual creation of that object.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getthisvalue" aoid="GetThisValue">
|
||
<h1><span class="secnum">6.2.4.10</span>GetThisValue ( <var>V</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1330"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyReference" id="_ref_1331"><a href="#sec-ispropertyreference">IsPropertyReference</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>.</li><li>If <emu-xref aoid="IsSuperReference" id="_ref_1332"><a href="#sec-issuperreference">IsSuperReference</a></emu-xref>(<var>V</var>) is <emu-val>true</emu-val>, then<ol><li>Return the value of the thisValue component of the reference <var>V</var>.</li></ol></li><li>Return <emu-xref aoid="GetBase" id="_ref_1333"><a href="#sec-getbase">GetBase</a></emu-xref>(<var>V</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-initializereferencedbinding" aoid="InitializeReferencedBinding">
|
||
<h1><span class="secnum">6.2.4.11</span>InitializeReferencedBinding ( <var>V</var>, <var>W</var> )</h1>
|
||
<emu-alg><ol><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_1334"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>V</var>).</li><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_1335"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>W</var>).</li><li><emu-xref href="#assert" id="_ref_1336"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1337"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is <emu-xref href="#sec-reference-specification-type" id="_ref_1338"><a href="#sec-reference-specification-type">Reference</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_1339"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsUnresolvableReference" id="_ref_1340"><a href="#sec-isunresolvablereference">IsUnresolvableReference</a></emu-xref>(<var>V</var>) is <emu-val>false</emu-val>.</li><li>Let <var>base</var> be <emu-xref aoid="GetBase" id="_ref_1341"><a href="#sec-getbase">GetBase</a></emu-xref>(<var>V</var>).</li><li><emu-xref href="#assert" id="_ref_1342"><a href="#assert">Assert</a></emu-xref>: <var>base</var> is an <emu-xref href="#sec-environment-records" id="_ref_1343"><a href="#sec-environment-records">Environment Record</a></emu-xref>.</li><li>Return <var>base</var>.InitializeBinding(<emu-xref aoid="GetReferencedName" id="_ref_1344"><a href="#sec-getreferencedname">GetReferencedName</a></emu-xref>(<var>V</var>), <var>W</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-property-descriptor-specification-type">
|
||
<h1><span class="secnum">6.2.5</span>The Property Descriptor Specification Type</h1>
|
||
<p>The <dfn>Property Descriptor</dfn> type is used to explain the
|
||
manipulation and reification of Object property attributes. Values of
|
||
the Property Descriptor type are Records. Each field's name is an
|
||
attribute name and its value is a corresponding attribute value as
|
||
specified in <emu-xref href="#sec-property-attributes" id="_ref_128"><a href="#sec-property-attributes">6.1.7.1</a></emu-xref>.
|
||
In addition, any field may be present or absent. The schema name used
|
||
within this specification to tag literal descriptions of Property
|
||
Descriptor records is “PropertyDescriptor”.</p>
|
||
<p>Property Descriptor values may be further classified as data
|
||
Property Descriptors and accessor Property Descriptors based upon the
|
||
existence or use of certain fields. A data Property Descriptor is one
|
||
that includes any fields named either [[Value]] or [[Writable]]. An
|
||
accessor Property Descriptor is one that includes any fields named
|
||
either [[Get]] or [[Set]]. Any Property Descriptor may have fields named
|
||
[[Enumerable]] and [[Configurable]]. A Property Descriptor value may
|
||
not be both a data Property Descriptor and an accessor Property
|
||
Descriptor; however, it may be neither. A generic Property Descriptor is
|
||
a Property Descriptor value that is neither a data Property Descriptor
|
||
nor an accessor Property Descriptor. A fully populated Property
|
||
Descriptor is one that is either an accessor Property Descriptor or a
|
||
data Property Descriptor and that has all of the fields that correspond
|
||
to the property attributes defined in either <emu-xref href="#table-2" id="_ref_129"><a href="#table-2">Table 2</a></emu-xref> or <emu-xref href="#table-3" id="_ref_130"><a href="#table-3">Table 3</a></emu-xref>.</p>
|
||
<p>The following <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_1345"><a href="#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref> are used in this specification to operate upon Property Descriptor values:</p>
|
||
|
||
<emu-clause id="sec-isaccessordescriptor" aoid="IsAccessorDescriptor">
|
||
<h1><span class="secnum">6.2.5.1</span>IsAccessorDescriptor ( <var>Desc</var> )</h1>
|
||
<p>When the abstract operation IsAccessorDescriptor is called with <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_1346"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> <var>Desc</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>If <var>Desc</var> is <emu-val>undefined</emu-val>, return <emu-val>false</emu-val>.</li><li>If both <var>Desc</var>.[[Get]] and <var>Desc</var>.[[Set]] are absent, return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isdatadescriptor" aoid="IsDataDescriptor">
|
||
<h1><span class="secnum">6.2.5.2</span>IsDataDescriptor ( <var>Desc</var> )</h1>
|
||
<p>When the abstract operation IsDataDescriptor is called with <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_1347"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> <var>Desc</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>If <var>Desc</var> is <emu-val>undefined</emu-val>, return <emu-val>false</emu-val>.</li><li>If both <var>Desc</var>.[[Value]] and <var>Desc</var>.[[Writable]] are absent, return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isgenericdescriptor" aoid="IsGenericDescriptor">
|
||
<h1><span class="secnum">6.2.5.3</span>IsGenericDescriptor ( <var>Desc</var> )</h1>
|
||
<p>When the abstract operation IsGenericDescriptor is called with <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_1348"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> <var>Desc</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>If <var>Desc</var> is <emu-val>undefined</emu-val>, return <emu-val>false</emu-val>.</li><li>If <emu-xref aoid="IsAccessorDescriptor" id="_ref_1349"><a href="#sec-isaccessordescriptor">IsAccessorDescriptor</a></emu-xref>(<var>Desc</var>) and <emu-xref aoid="IsDataDescriptor" id="_ref_1350"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>Desc</var>) are both <emu-val>false</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-frompropertydescriptor" aoid="FromPropertyDescriptor">
|
||
<h1><span class="secnum">6.2.5.4</span>FromPropertyDescriptor ( <var>Desc</var> )</h1>
|
||
<p>When the abstract operation FromPropertyDescriptor is called with <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_1351"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> <var>Desc</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>If <var>Desc</var> is <emu-val>undefined</emu-val>, return <emu-val>undefined</emu-val>.</li><li>Let <var>obj</var> be <emu-xref aoid="ObjectCreate" id="_ref_1352"><a href="#sec-objectcreate">ObjectCreate</a></emu-xref>(<emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_1353"><a href="#sec-properties-of-the-object-prototype-object">%ObjectPrototype%</a></emu-xref>).</li><li><emu-xref href="#assert" id="_ref_1354"><a href="#assert">Assert</a></emu-xref>: <var>obj</var> is an extensible ordinary object with no own properties.</li><li>If <var>Desc</var> has a [[Value]] field, then<ol><li>Perform <emu-xref aoid="CreateDataProperty" id="_ref_1355"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>obj</var>, <code>"value"</code>, <var>Desc</var>.[[Value]]).</li></ol></li><li>If <var>Desc</var> has a [[Writable]] field, then<ol><li>Perform <emu-xref aoid="CreateDataProperty" id="_ref_1356"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>obj</var>, <code>"writable"</code>, <var>Desc</var>.[[Writable]]).</li></ol></li><li>If <var>Desc</var> has a [[Get]] field, then<ol><li>Perform <emu-xref aoid="CreateDataProperty" id="_ref_1357"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>obj</var>, <code>"get"</code>, <var>Desc</var>.[[Get]]).</li></ol></li><li>If <var>Desc</var> has a [[Set]] field, then<ol><li>Perform <emu-xref aoid="CreateDataProperty" id="_ref_1358"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>obj</var>, <code>"set"</code>, <var>Desc</var>.[[Set]]).</li></ol></li><li>If <var>Desc</var> has an [[Enumerable]] field, then<ol><li>Perform <emu-xref aoid="CreateDataProperty" id="_ref_1359"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>obj</var>, <code>"enumerable"</code>, <var>Desc</var>.[[Enumerable]]).</li></ol></li><li>If <var>Desc</var> has a [[Configurable]] field, then<ol><li>Perform <emu-xref aoid="CreateDataProperty" id="_ref_1360"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>obj</var>, <code>"configurable"</code>, <var>Desc</var>.[[Configurable]]).</li></ol></li><li><emu-xref href="#assert" id="_ref_1361"><a href="#assert">Assert</a></emu-xref>: All of the above <emu-xref aoid="CreateDataProperty" id="_ref_1362"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref> operations return <emu-val>true</emu-val>.</li><li>Return <var>obj</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-topropertydescriptor" aoid="ToPropertyDescriptor">
|
||
<h1><span class="secnum">6.2.5.5</span>ToPropertyDescriptor ( <var>Obj</var> )</h1>
|
||
<p>When the abstract operation ToPropertyDescriptor is called with object <var>Obj</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1363"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>Obj</var>) is not Object, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>desc</var> be a new <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_1364"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> that initially has no fields.</li><li>Let <var>hasEnumerable</var> be ? <emu-xref aoid="HasProperty" id="_ref_1365"><a href="#sec-hasproperty">HasProperty</a></emu-xref>(<var>Obj</var>, <code>"enumerable"</code>).</li><li>If <var>hasEnumerable</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>enumerable</var> be <emu-xref aoid="ToBoolean" id="_ref_1366"><a href="#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Get" id="_ref_1367"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>Obj</var>, <code>"enumerable"</code>)).</li><li>Set <var>desc</var>.[[Enumerable]] to <var>enumerable</var>.</li></ol></li><li>Let <var>hasConfigurable</var> be ? <emu-xref aoid="HasProperty" id="_ref_1368"><a href="#sec-hasproperty">HasProperty</a></emu-xref>(<var>Obj</var>, <code>"configurable"</code>).</li><li>If <var>hasConfigurable</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>configurable</var> be <emu-xref aoid="ToBoolean" id="_ref_1369"><a href="#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Get" id="_ref_1370"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>Obj</var>, <code>"configurable"</code>)).</li><li>Set <var>desc</var>.[[Configurable]] to <var>configurable</var>.</li></ol></li><li>Let <var>hasValue</var> be ? <emu-xref aoid="HasProperty" id="_ref_1371"><a href="#sec-hasproperty">HasProperty</a></emu-xref>(<var>Obj</var>, <code>"value"</code>).</li><li>If <var>hasValue</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>value</var> be ? <emu-xref aoid="Get" id="_ref_1372"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>Obj</var>, <code>"value"</code>).</li><li>Set <var>desc</var>.[[Value]] to <var>value</var>.</li></ol></li><li>Let <var>hasWritable</var> be ? <emu-xref aoid="HasProperty" id="_ref_1373"><a href="#sec-hasproperty">HasProperty</a></emu-xref>(<var>Obj</var>, <code>"writable"</code>).</li><li>If <var>hasWritable</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>writable</var> be <emu-xref aoid="ToBoolean" id="_ref_1374"><a href="#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Get" id="_ref_1375"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>Obj</var>, <code>"writable"</code>)).</li><li>Set <var>desc</var>.[[Writable]] to <var>writable</var>.</li></ol></li><li>Let <var>hasGet</var> be ? <emu-xref aoid="HasProperty" id="_ref_1376"><a href="#sec-hasproperty">HasProperty</a></emu-xref>(<var>Obj</var>, <code>"get"</code>).</li><li>If <var>hasGet</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>getter</var> be ? <emu-xref aoid="Get" id="_ref_1377"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>Obj</var>, <code>"get"</code>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_1378"><a href="#sec-iscallable">IsCallable</a></emu-xref>(<var>getter</var>) is <emu-val>false</emu-val> and <var>getter</var> is not <emu-val>undefined</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Set <var>desc</var>.[[Get]] to <var>getter</var>.</li></ol></li><li>Let <var>hasSet</var> be ? <emu-xref aoid="HasProperty" id="_ref_1379"><a href="#sec-hasproperty">HasProperty</a></emu-xref>(<var>Obj</var>, <code>"set"</code>).</li><li>If <var>hasSet</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>setter</var> be ? <emu-xref aoid="Get" id="_ref_1380"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>Obj</var>, <code>"set"</code>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_1381"><a href="#sec-iscallable">IsCallable</a></emu-xref>(<var>setter</var>) is <emu-val>false</emu-val> and <var>setter</var> is not <emu-val>undefined</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Set <var>desc</var>.[[Set]] to <var>setter</var>.</li></ol></li><li>If <var>desc</var>.[[Get]] is present or <var>desc</var>.[[Set]] is present, then<ol><li>If <var>desc</var>.[[Value]] is present or <var>desc</var>.[[Writable]] is present, throw a <emu-val>TypeError</emu-val> exception.</li></ol></li><li>Return <var>desc</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-completepropertydescriptor" aoid="CompletePropertyDescriptor">
|
||
<h1><span class="secnum">6.2.5.6</span>CompletePropertyDescriptor ( <var>Desc</var> )</h1>
|
||
<p>When the abstract operation CompletePropertyDescriptor is called with <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_1382"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> <var>Desc</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1383"><a href="#assert">Assert</a></emu-xref>: <var>Desc</var> is a <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_1384"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref>.</li><li>Let <var>like</var> be <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1385"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> { [[Value]]: <emu-val>undefined</emu-val>, [[Writable]]: <emu-val>false</emu-val>, [[Get]]: <emu-val>undefined</emu-val>, [[Set]]: <emu-val>undefined</emu-val>, [[Enumerable]]: <emu-val>false</emu-val>, [[Configurable]]: <emu-val>false</emu-val> }.</li><li>If <emu-xref aoid="IsGenericDescriptor" id="_ref_1386"><a href="#sec-isgenericdescriptor">IsGenericDescriptor</a></emu-xref>(<var>Desc</var>) is <emu-val>true</emu-val> or <emu-xref aoid="IsDataDescriptor" id="_ref_1387"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>Desc</var>) is <emu-val>true</emu-val>, then<ol><li>If <var>Desc</var> does not have a [[Value]] field, set <var>Desc</var>.[[Value]] to <var>like</var>.[[Value]].</li><li>If <var>Desc</var> does not have a [[Writable]] field, set <var>Desc</var>.[[Writable]] to <var>like</var>.[[Writable]].</li></ol></li><li>Else,<ol><li>If <var>Desc</var> does not have a [[Get]] field, set <var>Desc</var>.[[Get]] to <var>like</var>.[[Get]].</li><li>If <var>Desc</var> does not have a [[Set]] field, set <var>Desc</var>.[[Set]] to <var>like</var>.[[Set]].</li></ol></li><li>If <var>Desc</var> does not have an [[Enumerable]] field, set <var>Desc</var>.[[Enumerable]] to <var>like</var>.[[Enumerable]].</li><li>If <var>Desc</var> does not have a [[Configurable]] field, set <var>Desc</var>.[[Configurable]] to <var>like</var>.[[Configurable]].</li><li>Return <var>Desc</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-lexical-environment-and-environment-record-specification-types">
|
||
<h1><span class="secnum">6.2.6</span>The Lexical Environment and Environment Record Specification Types</h1>
|
||
<p>The <emu-xref href="#sec-lexical-environments" id="_ref_1388"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> and <emu-xref href="#sec-environment-records" id="_ref_1389"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
types are used to explain the behaviour of name resolution in nested
|
||
functions and blocks. These types and the operations upon them are
|
||
defined in <emu-xref href="#sec-lexical-environments" id="_ref_131"><a href="#sec-lexical-environments">8.1</a></emu-xref>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-data-blocks">
|
||
<h1><span class="secnum">6.2.7</span>Data Blocks</h1>
|
||
<p>The <dfn>Data Block</dfn> specification type is used to
|
||
describe a distinct and mutable sequence of byte-sized (8 bit) numeric
|
||
values. A Data Block value is created with a fixed number of bytes that
|
||
each have the initial value 0.</p>
|
||
<p>For notational convenience within this specification, an
|
||
array-like syntax can be used to access the individual bytes of a Data
|
||
Block value. This notation presents a Data Block value as a 0-origined
|
||
integer-indexed sequence of bytes. For example, if <var>db</var> is a 5 byte Data Block value then <var>db</var>[2] can be used to access its 3<sup>rd</sup> byte.</p>
|
||
<p>A data block that resides in memory that can be referenced from multiple agents concurrently is designated a <dfn>Shared Data Block</dfn>. A Shared Data Block has an identity (for the purposes of equality testing Shared Data Block values) that is <em>address-free</em>:
|
||
it is tied not to the virtual addresses the block is mapped to in any
|
||
process, but to the set of locations in memory that the block
|
||
represents. Two data blocks are equal only if the sets of the locations
|
||
they contain are equal; otherwise, they are not equal and the
|
||
intersection of the sets of locations they contain is empty. Finally,
|
||
Shared Data Blocks can be distinguished from Data Blocks.</p>
|
||
<p>The semantics of Shared Data Blocks is defined using Shared Data Block events by the <emu-xref href="#sec-memory-model" id="_ref_1390"><a href="#sec-memory-model">memory model</a></emu-xref>. <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_1391"><a href="#sec-algorithm-conventions-abstract-operations">Abstract operations</a></emu-xref> below introduce Shared Data Block events and act as the interface between evaluation semantics and the event semantics of the <emu-xref href="#sec-memory-model" id="_ref_1392"><a href="#sec-memory-model">memory model</a></emu-xref>. The events form a <emu-xref href="#sec-candidate-executions" id="_ref_1393"><a href="#sec-candidate-executions">candidate execution</a></emu-xref>, on which the <emu-xref href="#sec-memory-model" id="_ref_1394"><a href="#sec-memory-model">memory model</a></emu-xref> acts as a filter. Please consult the <emu-xref href="#sec-memory-model" id="_ref_1395"><a href="#sec-memory-model">memory model</a></emu-xref> for full semantics.</p>
|
||
<p>Shared Data Block events are modeled by Records, defined in the <emu-xref href="#sec-memory-model" id="_ref_1396"><a href="#sec-memory-model">memory model</a></emu-xref>.</p>
|
||
<p>The following <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_1397"><a href="#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref> are used in this specification to operate upon Data Block values:</p>
|
||
|
||
<emu-clause id="sec-createbytedatablock" aoid="CreateByteDataBlock">
|
||
<h1><span class="secnum">6.2.7.1</span>CreateByteDataBlock ( <var>size</var> )</h1>
|
||
<p>When the abstract operation CreateByteDataBlock is called with integer argument <var>size</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1398"><a href="#assert">Assert</a></emu-xref>: <var>size</var> ≥ 0.</li><li>Let <var>db</var> be a new <emu-xref href="#sec-data-blocks" id="_ref_1399"><a href="#sec-data-blocks">Data Block</a></emu-xref> value consisting of <var>size</var> bytes. If it is impossible to create such a <emu-xref href="#sec-data-blocks" id="_ref_1400"><a href="#sec-data-blocks">Data Block</a></emu-xref>, throw a <emu-val>RangeError</emu-val> exception.</li><li>Set all of the bytes of <var>db</var> to 0.</li><li>Return <var>db</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createsharedbytedatablock" aoid="CreateSharedByteDataBlock">
|
||
<h1><span class="secnum">6.2.7.2</span>CreateSharedByteDataBlock ( <var>size</var> )</h1>
|
||
<p>When the abstract operation CreateSharedByteDataBlock is called with integer argument <var>size</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1401"><a href="#assert">Assert</a></emu-xref>: <var>size</var> ≥ 0.</li><li>Let <var>db</var> be a new <emu-xref href="#sec-data-blocks" id="_ref_1402"><a href="#sec-data-blocks">Shared Data Block</a></emu-xref> value consisting of <var>size</var> bytes. If it is impossible to create such a <emu-xref href="#sec-data-blocks" id="_ref_1403"><a href="#sec-data-blocks">Shared Data Block</a></emu-xref>, throw a <emu-val>RangeError</emu-val> exception.</li><li>Let <var>execution</var> be the [[CandidateExecution]] field of the <emu-xref href="#surrounding-agent" id="_ref_1404"><a href="#surrounding-agent">surrounding agent</a></emu-xref>'s <emu-xref href="#agent-record" id="_ref_1405"><a href="#agent-record">Agent Record</a></emu-xref>.</li><li>Let <var>eventList</var> be the [[EventList]] field of the element in <var>execution</var>.[[EventsRecords]] whose [[AgentSignifier]] is <emu-xref aoid="AgentSignifier" id="_ref_1406"><a href="#sec-agentsignifier">AgentSignifier</a></emu-xref>().</li><li>Let <var>zero</var> be « 0 ».</li><li>For each index <var>i</var> of <var>db</var>, do<ol><li>Append <emu-xref href="#sec-memory-model-fundamentals" id="_ref_1407"><a href="#sec-memory-model-fundamentals">WriteSharedMemory</a></emu-xref> { [[Order]]: <code>"Init"</code>, [[NoTear]]: <emu-val>true</emu-val>, [[Block]]: <var>db</var>, [[ByteIndex]]: <var>i</var>, [[ElementSize]]: 1, [[Payload]]: <var>zero</var> } to <var>eventList</var>.</li></ol></li><li>Return <var>db</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-copydatablockbytes" aoid="CopyDataBlockBytes">
|
||
<h1><span class="secnum">6.2.7.3</span>CopyDataBlockBytes ( <var>toBlock</var>, <var>toIndex</var>, <var>fromBlock</var>, <var>fromIndex</var>, <var>count</var> )</h1>
|
||
<p>When the abstract operation CopyDataBlockBytes is called, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1408"><a href="#assert">Assert</a></emu-xref>: <var>fromBlock</var> and <var>toBlock</var> are distinct <emu-xref href="#sec-data-blocks" id="_ref_1409"><a href="#sec-data-blocks">Data Block</a></emu-xref> or <emu-xref href="#sec-data-blocks" id="_ref_1410"><a href="#sec-data-blocks">Shared Data Block</a></emu-xref> values.</li><li><emu-xref href="#assert" id="_ref_1411"><a href="#assert">Assert</a></emu-xref>: <var>fromIndex</var>, <var>toIndex</var>, and <var>count</var> are integer values ≥ 0.</li><li>Let <var>fromSize</var> be the number of bytes in <var>fromBlock</var>.</li><li><emu-xref href="#assert" id="_ref_1412"><a href="#assert">Assert</a></emu-xref>: <var>fromIndex</var> + <var>count</var> ≤ <var>fromSize</var>.</li><li>Let <var>toSize</var> be the number of bytes in <var>toBlock</var>.</li><li><emu-xref href="#assert" id="_ref_1413"><a href="#assert">Assert</a></emu-xref>: <var>toIndex</var> + <var>count</var> ≤ <var>toSize</var>.</li><li>Repeat, while <var>count</var> > 0<ol><li>If <var>fromBlock</var> is a <emu-xref href="#sec-data-blocks" id="_ref_1414"><a href="#sec-data-blocks">Shared Data Block</a></emu-xref>, then<ol><li>Let <var>execution</var> be the [[CandidateExecution]] field of the <emu-xref href="#surrounding-agent" id="_ref_1415"><a href="#surrounding-agent">surrounding agent</a></emu-xref>'s <emu-xref href="#agent-record" id="_ref_1416"><a href="#agent-record">Agent Record</a></emu-xref>.</li><li>Let <var>eventList</var> be the [[EventList]] field of the element in <var>execution</var>.[[EventsRecords]] whose [[AgentSignifier]] is <emu-xref aoid="AgentSignifier" id="_ref_1417"><a href="#sec-agentsignifier">AgentSignifier</a></emu-xref>().</li><li>Let <var>bytes</var> be a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1418"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of length 1 that contains a nondeterministically chosen byte value.</li><li>NOTE: In implementations, <var>bytes</var>
|
||
is the result of a non-atomic read instruction on the underlying
|
||
hardware. The nondeterminism is a semantic prescription of the <emu-xref href="#sec-memory-model" id="_ref_1419"><a href="#sec-memory-model">memory model</a></emu-xref> to describe observable behaviour of hardware with weak consistency.</li><li>Let <var>readEvent</var> be <emu-xref href="#sec-memory-model-fundamentals" id="_ref_1420"><a href="#sec-memory-model-fundamentals">ReadSharedMemory</a></emu-xref> { [[Order]]: <code>"Unordered"</code>, [[NoTear]]: <emu-val>true</emu-val>, [[Block]]: <var>fromBlock</var>, [[ByteIndex]]: <var>fromIndex</var>, [[ElementSize]]: 1 }.</li><li>Append <var>readEvent</var> to <var>eventList</var>.</li><li>Append <emu-xref href="#sec-chosen-value-records" id="_ref_1421"><a href="#sec-chosen-value-records">Chosen Value Record</a></emu-xref> { [[Event]]: <var>readEvent</var>, [[ChosenValue]]: <var>bytes</var> } to <var>execution</var>.[[ChosenValues]].</li><li>If <var>toBlock</var> is a <emu-xref href="#sec-data-blocks" id="_ref_1422"><a href="#sec-data-blocks">Shared Data Block</a></emu-xref>, then<ol><li>Append <emu-xref href="#sec-memory-model-fundamentals" id="_ref_1423"><a href="#sec-memory-model-fundamentals">WriteSharedMemory</a></emu-xref> { [[Order]]: <code>"Unordered"</code>, [[NoTear]]: <emu-val>true</emu-val>, [[Block]]: <var>toBlock</var>, [[ByteIndex]]: <var>toIndex</var>, [[ElementSize]]: 1, [[Payload]]: <var>bytes</var> } to <var>eventList</var>.</li></ol></li><li>Else,<ol><li>Set <var>toBlock</var>[<var>toIndex</var>] to <var>bytes</var>[0].</li></ol></li></ol></li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_1424"><a href="#assert">Assert</a></emu-xref>: <var>toBlock</var> is not a <emu-xref href="#sec-data-blocks" id="_ref_1425"><a href="#sec-data-blocks">Shared Data Block</a></emu-xref>.</li><li>Set <var>toBlock</var>[<var>toIndex</var>] to <var>fromBlock</var>[<var>fromIndex</var>].</li></ol></li><li>Increment <var>toIndex</var> and <var>fromIndex</var> each by 1.</li><li>Decrement <var>count</var> by 1.</li></ol></li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_1426"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-abstract-operations">
|
||
<h1><span class="secnum">7</span>Abstract Operations</h1>
|
||
<p>These operations are not a part of the ECMAScript language; they
|
||
are defined here to solely to aid the specification of the semantics of
|
||
the ECMAScript language. Other, more specialized <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_1427"><a href="#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref> are defined throughout this specification.</p>
|
||
|
||
<emu-clause id="sec-type-conversion">
|
||
<h1><span class="secnum">7.1</span>Type Conversion</h1>
|
||
<p>The ECMAScript language implicitly performs automatic type
|
||
conversion as needed. To clarify the semantics of certain constructs it
|
||
is useful to define a set of conversion <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_1428"><a href="#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref>. The conversion <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_1429"><a href="#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref> are polymorphic; they can accept a value of any <emu-xref href="#sec-ecmascript-language-types" id="_ref_1430"><a href="#sec-ecmascript-language-types">ECMAScript language type</a></emu-xref>. But no other specification types are used with these operations.</p>
|
||
|
||
<emu-clause id="sec-toprimitive" aoid="ToPrimitive" oldids="table-9">
|
||
<span id="table-9"></span><h1><span class="secnum">7.1.1</span>ToPrimitive ( <var>input</var> [ , <var>PreferredType</var> ] )</h1>
|
||
<p>The abstract operation ToPrimitive takes an <var>input</var> argument and an optional argument <var>PreferredType</var>. The abstract operation ToPrimitive converts its <var>input</var>
|
||
argument to a non-Object type. If an object is capable of converting to
|
||
more than one primitive type, it may use the optional hint <var>PreferredType</var> to favour that type. Conversion occurs according to the following algorithm:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1431"><a href="#assert">Assert</a></emu-xref>: <var>input</var> is an <emu-xref href="#sec-ecmascript-language-types" id="_ref_1432"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>.</li><li>If <emu-xref aoid="Type" id="_ref_1433"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>input</var>) is Object, then<ol><li>If <var>PreferredType</var> is not present, let <var>hint</var> be <code>"default"</code>.</li><li>Else if <var>PreferredType</var> is hint String, let <var>hint</var> be <code>"string"</code>.</li><li>Else <var>PreferredType</var> is hint Number, let <var>hint</var> be <code>"number"</code>.</li><li>Let <var>exoticToPrim</var> be ? <emu-xref aoid="GetMethod" id="_ref_1434"><a href="#sec-getmethod">GetMethod</a></emu-xref>(<var>input</var>, @@toPrimitive).</li><li>If <var>exoticToPrim</var> is not <emu-val>undefined</emu-val>, then<ol><li>Let <var>result</var> be ? <emu-xref aoid="Call" id="_ref_1435"><a href="#sec-call">Call</a></emu-xref>(<var>exoticToPrim</var>, <var>input</var>, « <var>hint</var> »).</li><li>If <emu-xref aoid="Type" id="_ref_1436"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>result</var>) is not Object, return <var>result</var>.</li><li>Throw a <emu-val>TypeError</emu-val> exception.</li></ol></li><li>If <var>hint</var> is <code>"default"</code>, set <var>hint</var> to <code>"number"</code>.</li><li>Return ? <emu-xref aoid="OrdinaryToPrimitive" id="_ref_1437"><a href="#sec-ordinarytoprimitive">OrdinaryToPrimitive</a></emu-xref>(<var>input</var>, <var>hint</var>).</li></ol></li><li>Return <var>input</var>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>When ToPrimitive is called with no hint, then it generally
|
||
behaves as if the hint were Number. However, objects may over-ride this
|
||
behaviour by defining a @@toPrimitive method. Of the objects defined in
|
||
this specification only Date objects (see <emu-xref href="#sec-date.prototype-@@toprimitive" id="_ref_132"><a href="#sec-date.prototype-@@toprimitive">20.3.4.45</a></emu-xref>) and Symbol objects (see <emu-xref href="#sec-symbol.prototype-@@toprimitive" id="_ref_133"><a href="#sec-symbol.prototype-@@toprimitive">19.4.3.5</a></emu-xref>) over-ride the default ToPrimitive behaviour. Date objects treat no hint as if the hint were String.</p>
|
||
</div></emu-note>
|
||
|
||
<emu-clause id="sec-ordinarytoprimitive" aoid="OrdinaryToPrimitive">
|
||
<h1><span class="secnum">7.1.1.1</span>OrdinaryToPrimitive ( <var>O</var>, <var>hint</var> )</h1>
|
||
<p>When the abstract operation OrdinaryToPrimitive is called with arguments <var>O</var> and <var>hint</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1438"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1439"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1440"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1441"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>hint</var>) is String and its value is either <code>"string"</code> or <code>"number"</code>.</li><li>If <var>hint</var> is <code>"string"</code>, then<ol><li>Let <var>methodNames</var> be « <code>"toString"</code>, <code>"valueOf"</code> ».</li></ol></li><li>Else,<ol><li>Let <var>methodNames</var> be « <code>"valueOf"</code>, <code>"toString"</code> ».</li></ol></li><li>For each <var>name</var> in <var>methodNames</var> in <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1442"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> order, do<ol><li>Let <var>method</var> be ? <emu-xref aoid="Get" id="_ref_1443"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>name</var>).</li><li>If <emu-xref aoid="IsCallable" id="_ref_1444"><a href="#sec-iscallable">IsCallable</a></emu-xref>(<var>method</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>result</var> be ? <emu-xref aoid="Call" id="_ref_1445"><a href="#sec-call">Call</a></emu-xref>(<var>method</var>, <var>O</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1446"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>result</var>) is not Object, return <var>result</var>.</li></ol></li></ol></li><li>Throw a <emu-val>TypeError</emu-val> exception.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-toboolean" aoid="ToBoolean">
|
||
<h1><span class="secnum">7.1.2</span>ToBoolean ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToBoolean converts <var>argument</var> to a value of type Boolean according to <emu-xref href="#table-10" id="_ref_134"><a href="#table-10">Table 9</a></emu-xref>:</p>
|
||
<emu-table id="table-10" caption="ToBoolean Conversions"><figure><figcaption>Table 9: <emu-xref aoid="ToBoolean" id="_ref_1447"><a href="#sec-toboolean">ToBoolean</a></emu-xref> Conversions</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Argument Type
|
||
|
||
</th>
|
||
<th>
|
||
Result
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Undefined
|
||
|
||
</td>
|
||
<td>
|
||
Return <emu-val>false</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Null
|
||
|
||
</td>
|
||
<td>
|
||
Return <emu-val>false</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
Return <var>argument</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Number
|
||
|
||
</td>
|
||
<td>
|
||
If <var>argument</var> is <emu-val>+0</emu-val>, <emu-val>-0</emu-val>, or <emu-val>NaN</emu-val>, return <emu-val>false</emu-val>; otherwise return <emu-val>true</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
String
|
||
|
||
</td>
|
||
<td>
|
||
If <var>argument</var> is the empty String (its length is zero), return <emu-val>false</emu-val>; otherwise return <emu-val>true</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Symbol
|
||
|
||
</td>
|
||
<td>
|
||
Return <emu-val>true</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Object
|
||
|
||
</td>
|
||
<td>
|
||
Return <emu-val>true</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-tonumber" aoid="ToNumber">
|
||
<h1><span class="secnum">7.1.3</span>ToNumber ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToNumber converts <var>argument</var> to a value of type Number according to <emu-xref href="#table-11" id="_ref_135"><a href="#table-11">Table 10</a></emu-xref>:</p>
|
||
<emu-table id="table-11" caption="ToNumber Conversions"><figure><figcaption>Table 10: <emu-xref aoid="ToNumber" id="_ref_1448"><a href="#sec-tonumber">ToNumber</a></emu-xref> Conversions</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Argument Type
|
||
|
||
</th>
|
||
<th>
|
||
Result
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Undefined
|
||
|
||
</td>
|
||
<td>
|
||
Return <emu-val>NaN</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Null
|
||
|
||
</td>
|
||
<td>
|
||
Return <emu-val>+0</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
If <var>argument</var> is <emu-val>true</emu-val>, return 1. If <var>argument</var> is <emu-val>false</emu-val>, return <emu-val>+0</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Number
|
||
|
||
</td>
|
||
<td>
|
||
Return <var>argument</var> (no conversion).
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
String
|
||
|
||
</td>
|
||
<td>
|
||
See grammar and conversion algorithm below.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Symbol
|
||
|
||
</td>
|
||
<td>
|
||
Throw a <emu-val>TypeError</emu-val> exception.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Object
|
||
|
||
</td>
|
||
<td>
|
||
<p>Apply the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>primValue</var> be ? <emu-xref aoid="ToPrimitive" id="_ref_1449"><a href="#sec-toprimitive">ToPrimitive</a></emu-xref>(<var>argument</var>, hint Number).</li><li>Return ? <emu-xref aoid="ToNumber" id="_ref_1450"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>primValue</var>).
|
||
</li></ol></emu-alg>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
|
||
<emu-clause id="sec-tonumber-applied-to-the-string-type">
|
||
<h1><span class="secnum">7.1.3.1</span>ToNumber Applied to the String Type</h1>
|
||
<p><emu-xref aoid="ToNumber" id="_ref_1451"><a href="#sec-tonumber">ToNumber</a></emu-xref> applied to Strings applies the following grammar to the input String interpreted as a sequence of UTF-16 encoded code points (<emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_136"><a href="#sec-ecmascript-language-types-string-type">6.1.4</a></emu-xref>). If the grammar cannot interpret the String as an expansion of <emu-nt id="_ref_8934"><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt>, then the result of <emu-xref aoid="ToNumber" id="_ref_1452"><a href="#sec-tonumber">ToNumber</a></emu-xref> is <emu-val>NaN</emu-val>.</p>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>The terminal symbols of this grammar are all composed of
|
||
characters in the Unicode Basic Multilingual Plane (BMP). Therefore, the
|
||
result of <emu-xref aoid="ToNumber" id="_ref_1453"><a href="#sec-tonumber">ToNumber</a></emu-xref> will be <emu-val>NaN</emu-val> if the string contains any <emu-xref href="#leading-surrogate" id="_ref_137"><a href="#leading-surrogate">leading surrogate</a></emu-xref> or <emu-xref href="#trailing-surrogate" id="_ref_138"><a href="#trailing-surrogate">trailing surrogate</a></emu-xref> code units, whether paired or unpaired.</p>
|
||
</div></emu-note>
|
||
<h2>Syntax</h2>
|
||
<emu-grammar type="definition"><emu-production name="StringNumericLiteral" type="regexp" id="prod-StringNumericLiteral">
|
||
<emu-nt><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="9a4be900"><emu-nt optional="" id="_ref_8935"><a href="#prod-StrWhiteSpace">StrWhiteSpace</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt></emu-rhs>
|
||
<emu-rhs a="fe58c396"><emu-nt optional="" id="_ref_8936"><a href="#prod-StrWhiteSpace">StrWhiteSpace</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt><emu-nt id="_ref_8937"><a href="#prod-StrNumericLiteral">StrNumericLiteral</a></emu-nt><emu-nt optional="" id="_ref_8938"><a href="#prod-StrWhiteSpace">StrWhiteSpace</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StrWhiteSpace" type="regexp" id="prod-StrWhiteSpace">
|
||
<emu-nt><a href="#prod-StrWhiteSpace">StrWhiteSpace</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="2b0ea266"><emu-nt id="_ref_8939"><a href="#prod-StrWhiteSpaceChar">StrWhiteSpaceChar</a></emu-nt><emu-nt optional="" id="_ref_8940"><a href="#prod-StrWhiteSpace">StrWhiteSpace</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StrWhiteSpaceChar" type="regexp" id="prod-StrWhiteSpaceChar">
|
||
<emu-nt><a href="#prod-StrWhiteSpaceChar">StrWhiteSpaceChar</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="1424dc49"><emu-nt id="_ref_8941"><a href="#prod-WhiteSpace">WhiteSpace</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="3b331ccd"><emu-nt id="_ref_8942"><a href="#prod-LineTerminator">LineTerminator</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StrNumericLiteral" type="regexp" id="prod-StrNumericLiteral">
|
||
<emu-nt><a href="#prod-StrNumericLiteral">StrNumericLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="db369ee0"><emu-nt id="_ref_8943"><a href="#prod-StrDecimalLiteral">StrDecimalLiteral</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="d3d71ddd"><emu-nt id="_ref_8944"><a href="#prod-BinaryIntegerLiteral">BinaryIntegerLiteral</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="832f57ee"><emu-nt id="_ref_8945"><a href="#prod-OctalIntegerLiteral">OctalIntegerLiteral</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="1d0c4a66"><emu-nt id="_ref_8946"><a href="#prod-HexIntegerLiteral">HexIntegerLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StrDecimalLiteral" type="regexp" id="prod-StrDecimalLiteral">
|
||
<emu-nt><a href="#prod-StrDecimalLiteral">StrDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="477fcd23"><emu-nt id="_ref_8947"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="a3f639a9"><emu-t>+</emu-t><emu-nt id="_ref_8948"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt></emu-rhs>
|
||
<emu-rhs a="d60f01a5"><emu-t>-</emu-t><emu-nt id="_ref_8949"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production>
|
||
<emu-production name="StrUnsignedDecimalLiteral" type="regexp" id="prod-StrUnsignedDecimalLiteral">
|
||
<emu-nt><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="4afe8df8"><emu-t>Infinity</emu-t></emu-rhs>
|
||
<emu-rhs a="8a89062c"><emu-nt id="_ref_8950"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt><emu-t>.</emu-t><emu-nt optional="" id="_ref_8951"><a href="#prod-DecimalDigits">DecimalDigits</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt><emu-nt optional="" id="_ref_8952"><a href="#prod-ExponentPart">ExponentPart</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt></emu-rhs>
|
||
<emu-rhs a="5cf3aa35"><emu-t>.</emu-t><emu-nt id="_ref_8953"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt><emu-nt optional="" id="_ref_8954"><a href="#prod-ExponentPart">ExponentPart</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt></emu-rhs>
|
||
<emu-rhs a="24e27af7"><emu-nt id="_ref_8955"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt><emu-nt optional="" id="_ref_8956"><a href="#prod-ExponentPart">ExponentPart</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar>
|
||
<p>All grammar symbols not explicitly defined above have the definitions used in the Lexical Grammar for numeric literals (<emu-xref href="#sec-literals-numeric-literals" id="_ref_139"><a href="#sec-literals-numeric-literals">11.8.3</a></emu-xref>)</p>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>Some differences should be noted between the syntax of a <emu-nt id="_ref_8957"><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt> and a <emu-nt id="_ref_8958"><a href="#prod-NumericLiteral">NumericLiteral</a></emu-nt>:</p>
|
||
<ul>
|
||
<li>
|
||
A <emu-nt id="_ref_8959"><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt> may include leading and/or trailing white space and/or line terminators.
|
||
|
||
</li>
|
||
<li>
|
||
A <emu-nt id="_ref_8960"><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt> that is decimal may have any number of leading <code>0</code> digits.
|
||
|
||
</li>
|
||
<li>
|
||
A <emu-nt id="_ref_8961"><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt> that is decimal may include a <code>+</code> or <code>-</code> to indicate its sign.
|
||
|
||
</li>
|
||
<li>
|
||
A <emu-nt id="_ref_8962"><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt> that is empty or contains only white space is converted to <emu-val>+0</emu-val>.
|
||
|
||
</li>
|
||
<li>
|
||
<code>Infinity</code> and <code>-Infinity</code> are recognized as a <emu-nt id="_ref_8963"><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt> but not as a <emu-nt id="_ref_8964"><a href="#prod-NumericLiteral">NumericLiteral</a></emu-nt>.
|
||
|
||
</li>
|
||
</ul>
|
||
</div></emu-note>
|
||
|
||
<emu-clause id="sec-runtime-semantics-mv-s">
|
||
<h1><span class="secnum">7.1.3.1.1</span>Runtime Semantics: MV</h1>
|
||
<p>The conversion of a String to a Number value is similar
|
||
overall to the determination of the Number value for a numeric literal
|
||
(see <emu-xref href="#sec-literals-numeric-literals" id="_ref_140"><a href="#sec-literals-numeric-literals">11.8.3</a></emu-xref>),
|
||
but some of the details are different, so the process for converting a
|
||
String numeric literal to a value of Number type is given here. This
|
||
value is determined in two steps: first, a mathematical value (MV) is
|
||
derived from the String numeric literal; second, this mathematical value
|
||
is rounded as described below. The MV on any grammar symbol, not
|
||
provided below, is the MV for that symbol defined in <emu-xref href="#sec-static-semantics-mv" id="_ref_141"><a href="#sec-static-semantics-mv">11.8.3.1</a></emu-xref>.</p>
|
||
<ul>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StringNumericLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="37b9c04c"><emu-gann>[empty]</emu-gann></emu-rhs>
|
||
</emu-production></emu-grammar> is 0.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StringNumericLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="63c9217f"><emu-nt id="_ref_8965"><a href="#prod-StrWhiteSpace">StrWhiteSpace</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is 0.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StringNumericLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StringNumericLiteral">StringNumericLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="fe58c396"><emu-nt optional="" id="_ref_8966"><a href="#prod-StrWhiteSpace">StrWhiteSpace</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt><emu-nt id="_ref_8967"><a href="#prod-StrNumericLiteral">StrNumericLiteral</a></emu-nt><emu-nt optional="" id="_ref_8968"><a href="#prod-StrWhiteSpace">StrWhiteSpace</a><emu-mods><emu-opt>opt</emu-opt></emu-mods></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_8969"><a href="#prod-StrNumericLiteral">StrNumericLiteral</a></emu-nt>, no matter whether white space is present or not.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrNumericLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrNumericLiteral">StrNumericLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="db369ee0"><emu-nt id="_ref_8970"><a href="#prod-StrDecimalLiteral">StrDecimalLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_8971"><a href="#prod-StrDecimalLiteral">StrDecimalLiteral</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrNumericLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrNumericLiteral">StrNumericLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="d3d71ddd"><emu-nt id="_ref_8972"><a href="#prod-BinaryIntegerLiteral">BinaryIntegerLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_8973"><a href="#prod-BinaryIntegerLiteral">BinaryIntegerLiteral</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrNumericLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrNumericLiteral">StrNumericLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="832f57ee"><emu-nt id="_ref_8974"><a href="#prod-OctalIntegerLiteral">OctalIntegerLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_8975"><a href="#prod-OctalIntegerLiteral">OctalIntegerLiteral</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrNumericLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrNumericLiteral">StrNumericLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="1d0c4a66"><emu-nt id="_ref_8976"><a href="#prod-HexIntegerLiteral">HexIntegerLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_8977"><a href="#prod-HexIntegerLiteral">HexIntegerLiteral</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrDecimalLiteral">StrDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="477fcd23"><emu-nt id="_ref_8978"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_8979"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrDecimalLiteral">StrDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="a3f639a9"><emu-t>+</emu-t><emu-nt id="_ref_8980"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_8981"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrDecimalLiteral">StrDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="d60f01a5"><emu-t>-</emu-t><emu-nt id="_ref_8982"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the negative of the MV of <emu-nt id="_ref_8983"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt>. (Note that if the MV of <emu-nt id="_ref_8984"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt>
|
||
is 0, the negative of this MV is also 0. The rounding rule described
|
||
below handles the conversion of this signless mathematical zero to a
|
||
floating-point <emu-val>+0</emu-val> or <emu-val>-0</emu-val> as appropriate.)
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrUnsignedDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="4afe8df8"><emu-t>Infinity</emu-t></emu-rhs>
|
||
</emu-production></emu-grammar> is 10<sup>10000</sup> (a value so large that it will round to <emu-val>+∞</emu-val>).
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrUnsignedDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="33bf537e"><emu-nt id="_ref_8985"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt><emu-t>.</emu-t></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_8986"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrUnsignedDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="4565db95"><emu-nt id="_ref_8987"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt><emu-t>.</emu-t><emu-nt id="_ref_8988"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of the first <emu-nt id="_ref_8989"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt> plus (the MV of the second <emu-nt id="_ref_8990"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt> times 10<sup>-<var>n</var></sup>), where <var>n</var> is the number of code points in the second <emu-nt id="_ref_8991"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrUnsignedDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="6f5fda9f"><emu-nt id="_ref_8992"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt><emu-t>.</emu-t><emu-nt id="_ref_8993"><a href="#prod-ExponentPart">ExponentPart</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_8994"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt> times 10<sup><var>e</var></sup>, where <var>e</var> is the MV of <emu-nt id="_ref_8995"><a href="#prod-ExponentPart">ExponentPart</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrUnsignedDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="4694f1d2"><emu-nt id="_ref_8996"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt><emu-t>.</emu-t><emu-nt id="_ref_8997"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt><emu-nt id="_ref_8998"><a href="#prod-ExponentPart">ExponentPart</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is (the MV of the first <emu-nt id="_ref_8999"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt> plus (the MV of the second <emu-nt id="_ref_9000"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt> times 10<sup>-<var>n</var></sup>)) times 10<sup><var>e</var></sup>, where <var>n</var> is the number of code points in the second <emu-nt id="_ref_9001"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt> and <var>e</var> is the MV of <emu-nt id="_ref_9002"><a href="#prod-ExponentPart">ExponentPart</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrUnsignedDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="c1f33372"><emu-t>.</emu-t><emu-nt id="_ref_9003"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_9004"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt> times 10<sup>-<var>n</var></sup>, where <var>n</var> is the number of code points in <emu-nt id="_ref_9005"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrUnsignedDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="0cd5f3c3"><emu-t>.</emu-t><emu-nt id="_ref_9006"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt><emu-nt id="_ref_9007"><a href="#prod-ExponentPart">ExponentPart</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_9008"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt> times 10<sup><var>e</var> - <var>n</var></sup>, where <var>n</var> is the number of code points in <emu-nt id="_ref_9009"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt> and <var>e</var> is the MV of <emu-nt id="_ref_9010"><a href="#prod-ExponentPart">ExponentPart</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrUnsignedDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="6d7b4e5f"><emu-nt id="_ref_9011"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_9012"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt>.
|
||
|
||
</li>
|
||
<li>
|
||
The MV of <emu-grammar><emu-production name="StrUnsignedDecimalLiteral" type="regexp" collapsed="" class=" inline">
|
||
<emu-nt><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt><emu-geq>:::</emu-geq><emu-rhs a="2e993467"><emu-nt id="_ref_9013"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt><emu-nt id="_ref_9014"><a href="#prod-ExponentPart">ExponentPart</a></emu-nt></emu-rhs>
|
||
</emu-production></emu-grammar> is the MV of <emu-nt id="_ref_9015"><a href="#prod-DecimalDigits">DecimalDigits</a></emu-nt> times 10<sup><var>e</var></sup>, where <var>e</var> is the MV of <emu-nt id="_ref_9016"><a href="#prod-ExponentPart">ExponentPart</a></emu-nt>.
|
||
|
||
</li>
|
||
</ul>
|
||
<p>Once the exact MV for a String numeric literal has been
|
||
determined, it is then rounded to a value of the Number type. If the MV
|
||
is 0, then the rounded value is <emu-val>+0</emu-val> unless the first non white space code point in the String numeric literal is <code>"-"</code>, in which case the rounded value is <emu-val>-0</emu-val>. Otherwise, the rounded value must be the Number value for the MV (in the sense defined in <emu-xref href="#sec-ecmascript-language-types-number-type" id="_ref_142"><a href="#sec-ecmascript-language-types-number-type">6.1.6</a></emu-xref>), unless the literal includes a <emu-nt id="_ref_9017"><a href="#prod-StrUnsignedDecimalLiteral">StrUnsignedDecimalLiteral</a></emu-nt>
|
||
and the literal has more than 20 significant digits, in which case the
|
||
Number value may be either the Number value for the MV of a literal
|
||
produced by replacing each significant digit after the 20th with a 0
|
||
digit or the Number value for the MV of a literal produced by replacing
|
||
each significant digit after the 20th with a 0 digit and then
|
||
incrementing the literal at the 20th digit position. A digit is
|
||
significant if it is not part of an <emu-nt id="_ref_9018"><a href="#prod-ExponentPart">ExponentPart</a></emu-nt> and</p>
|
||
<ul>
|
||
<li>
|
||
it is not <code>0</code>; or
|
||
|
||
</li>
|
||
<li>
|
||
there is a nonzero digit to its left and there is a nonzero digit, not in the <emu-nt id="_ref_9019"><a href="#prod-ExponentPart">ExponentPart</a></emu-nt>, to its right.
|
||
|
||
</li>
|
||
</ul>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-tointeger" aoid="ToInteger">
|
||
<h1><span class="secnum">7.1.4</span>ToInteger ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToInteger converts <var>argument</var> to an integral numeric value. This abstract operation functions as follows:</p>
|
||
<emu-alg><ol><li>Let <var>number</var> be ? <emu-xref aoid="ToNumber" id="_ref_1454"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>argument</var>).</li><li>If <var>number</var> is <emu-val>NaN</emu-val>, return <emu-val>+0</emu-val>.</li><li>If <var>number</var> is <emu-val>+0</emu-val>, <emu-val>-0</emu-val>, <emu-val>+∞</emu-val>, or <emu-val>-∞</emu-val>, return <var>number</var>.</li><li>Return the number value that is the same sign as <var>number</var> and whose magnitude is <emu-xref aoid="floor" id="_ref_1455"><a href="#eqn-floor">floor</a></emu-xref>(<emu-xref aoid="abs" id="_ref_1456"><a href="#eqn-abs">abs</a></emu-xref>(<var>number</var>)).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-toint32" aoid="ToInt32">
|
||
<h1><span class="secnum">7.1.5</span>ToInt32 ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToInt32 converts <var>argument</var> to one of 2<sup>32</sup> integer values in the range <emu-eqn class="inline">-2<sup>31</sup></emu-eqn> through <emu-eqn class="inline">2<sup>31</sup> - 1</emu-eqn>, inclusive. This abstract operation functions as follows:</p>
|
||
<emu-alg><ol><li>Let <var>number</var> be ? <emu-xref aoid="ToNumber" id="_ref_1457"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>argument</var>).</li><li>If <var>number</var> is <emu-val>NaN</emu-val>, <emu-val>+0</emu-val>, <emu-val>-0</emu-val>, <emu-val>+∞</emu-val>, or <emu-val>-∞</emu-val>, return <emu-val>+0</emu-val>.</li><li>Let <var>int</var> be the mathematical value that is the same sign as <var>number</var> and whose magnitude is <emu-xref aoid="floor" id="_ref_1458"><a href="#eqn-floor">floor</a></emu-xref>(<emu-xref aoid="abs" id="_ref_1459"><a href="#eqn-abs">abs</a></emu-xref>(<var>number</var>)).</li><li>Let <var>int32bit</var> be <var>int</var> <emu-xref aoid="modulo" id="_ref_1460"><a href="#eqn-modulo">modulo</a></emu-xref> 2<sup>32</sup>.</li><li>If <var>int32bit</var> ≥ 2<sup>31</sup>, return <var>int32bit</var> - 2<sup>32</sup>; otherwise return <var>int32bit</var>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Given the above definition of ToInt32:</p>
|
||
<ul>
|
||
<li>
|
||
The ToInt32 abstract operation is idempotent: if applied to a
|
||
result that it produced, the second application leaves that value
|
||
unchanged.
|
||
|
||
</li>
|
||
<li>
|
||
ToInt32(<emu-xref aoid="ToUint32" id="_ref_1461"><a href="#sec-touint32">ToUint32</a></emu-xref>(<var>x</var>)) is equal to ToInt32(<var>x</var>) for all values of <var>x</var>. (It is to preserve this latter property that <emu-val>+∞</emu-val> and <emu-val>-∞</emu-val> are mapped to <emu-val>+0</emu-val>.)
|
||
|
||
</li>
|
||
<li>
|
||
ToInt32 maps <emu-val>-0</emu-val> to <emu-val>+0</emu-val>.
|
||
|
||
</li>
|
||
</ul>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-touint32" aoid="ToUint32">
|
||
<h1><span class="secnum">7.1.6</span>ToUint32 ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToUint32 converts <var>argument</var> to one of 2<sup>32</sup> integer values in the range 0 through <emu-eqn class="inline">2<sup>32</sup> - 1</emu-eqn>, inclusive. This abstract operation functions as follows:</p>
|
||
<emu-alg><ol><li>Let <var>number</var> be ? <emu-xref aoid="ToNumber" id="_ref_1462"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>argument</var>).</li><li>If <var>number</var> is <emu-val>NaN</emu-val>, <emu-val>+0</emu-val>, <emu-val>-0</emu-val>, <emu-val>+∞</emu-val>, or <emu-val>-∞</emu-val>, return <emu-val>+0</emu-val>.</li><li>Let <var>int</var> be the mathematical value that is the same sign as <var>number</var> and whose magnitude is <emu-xref aoid="floor" id="_ref_1463"><a href="#eqn-floor">floor</a></emu-xref>(<emu-xref aoid="abs" id="_ref_1464"><a href="#eqn-abs">abs</a></emu-xref>(<var>number</var>)).</li><li>Let <var>int32bit</var> be <var>int</var> <emu-xref aoid="modulo" id="_ref_1465"><a href="#eqn-modulo">modulo</a></emu-xref> 2<sup>32</sup>.</li><li>Return <var>int32bit</var>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Given the above definition of ToUint32:</p>
|
||
<ul>
|
||
<li>
|
||
Step 5 is the only difference between ToUint32 and <emu-xref aoid="ToInt32" id="_ref_1466"><a href="#sec-toint32">ToInt32</a></emu-xref>.
|
||
|
||
</li>
|
||
<li>
|
||
The ToUint32 abstract operation is idempotent: if applied to
|
||
a result that it produced, the second application leaves that value
|
||
unchanged.
|
||
|
||
</li>
|
||
<li>
|
||
ToUint32(<emu-xref aoid="ToInt32" id="_ref_1467"><a href="#sec-toint32">ToInt32</a></emu-xref>(<var>x</var>)) is equal to ToUint32(<var>x</var>) for all values of <var>x</var>. (It is to preserve this latter property that <emu-val>+∞</emu-val> and <emu-val>-∞</emu-val> are mapped to <emu-val>+0</emu-val>.)
|
||
|
||
</li>
|
||
<li>
|
||
ToUint32 maps <emu-val>-0</emu-val> to <emu-val>+0</emu-val>.
|
||
|
||
</li>
|
||
</ul>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-toint16" aoid="ToInt16">
|
||
<h1><span class="secnum">7.1.7</span>ToInt16 ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToInt16 converts <var>argument</var> to one of 2<sup>16</sup> integer values in the range -32768 through 32767, inclusive. This abstract operation functions as follows:</p>
|
||
<emu-alg><ol><li>Let <var>number</var> be ? <emu-xref aoid="ToNumber" id="_ref_1468"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>argument</var>).</li><li>If <var>number</var> is <emu-val>NaN</emu-val>, <emu-val>+0</emu-val>, <emu-val>-0</emu-val>, <emu-val>+∞</emu-val>, or <emu-val>-∞</emu-val>, return <emu-val>+0</emu-val>.</li><li>Let <var>int</var> be the mathematical value that is the same sign as <var>number</var> and whose magnitude is <emu-xref aoid="floor" id="_ref_1469"><a href="#eqn-floor">floor</a></emu-xref>(<emu-xref aoid="abs" id="_ref_1470"><a href="#eqn-abs">abs</a></emu-xref>(<var>number</var>)).</li><li>Let <var>int16bit</var> be <var>int</var> <emu-xref aoid="modulo" id="_ref_1471"><a href="#eqn-modulo">modulo</a></emu-xref> 2<sup>16</sup>.</li><li>If <var>int16bit</var> ≥ 2<sup>15</sup>, return <var>int16bit</var> - 2<sup>16</sup>; otherwise return <var>int16bit</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-touint16" aoid="ToUint16">
|
||
<h1><span class="secnum">7.1.8</span>ToUint16 ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToUint16 converts <var>argument</var> to one of 2<sup>16</sup> integer values in the range 0 through <emu-eqn class="inline">2<sup>16</sup> - 1</emu-eqn>, inclusive. This abstract operation functions as follows:</p>
|
||
<emu-alg><ol><li>Let <var>number</var> be ? <emu-xref aoid="ToNumber" id="_ref_1472"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>argument</var>).</li><li>If <var>number</var> is <emu-val>NaN</emu-val>, <emu-val>+0</emu-val>, <emu-val>-0</emu-val>, <emu-val>+∞</emu-val>, or <emu-val>-∞</emu-val>, return <emu-val>+0</emu-val>.</li><li>Let <var>int</var> be the mathematical value that is the same sign as <var>number</var> and whose magnitude is <emu-xref aoid="floor" id="_ref_1473"><a href="#eqn-floor">floor</a></emu-xref>(<emu-xref aoid="abs" id="_ref_1474"><a href="#eqn-abs">abs</a></emu-xref>(<var>number</var>)).</li><li>Let <var>int16bit</var> be <var>int</var> <emu-xref aoid="modulo" id="_ref_1475"><a href="#eqn-modulo">modulo</a></emu-xref> 2<sup>16</sup>.</li><li>Return <var>int16bit</var>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Given the above definition of ToUint16:</p>
|
||
<ul>
|
||
<li>
|
||
The substitution of 2<sup>16</sup> for 2<sup>32</sup> in step 4 is the only difference between <emu-xref aoid="ToUint32" id="_ref_1476"><a href="#sec-touint32">ToUint32</a></emu-xref> and ToUint16.
|
||
|
||
</li>
|
||
<li>
|
||
ToUint16 maps <emu-val>-0</emu-val> to <emu-val>+0</emu-val>.
|
||
|
||
</li>
|
||
</ul>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-toint8" aoid="ToInt8">
|
||
<h1><span class="secnum">7.1.9</span>ToInt8 ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToInt8 converts <var>argument</var> to one of 2<sup>8</sup> integer values in the range -128 through 127, inclusive. This abstract operation functions as follows:</p>
|
||
<emu-alg><ol><li>Let <var>number</var> be ? <emu-xref aoid="ToNumber" id="_ref_1477"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>argument</var>).</li><li>If <var>number</var> is <emu-val>NaN</emu-val>, <emu-val>+0</emu-val>, <emu-val>-0</emu-val>, <emu-val>+∞</emu-val>, or <emu-val>-∞</emu-val>, return <emu-val>+0</emu-val>.</li><li>Let <var>int</var> be the mathematical value that is the same sign as <var>number</var> and whose magnitude is <emu-xref aoid="floor" id="_ref_1478"><a href="#eqn-floor">floor</a></emu-xref>(<emu-xref aoid="abs" id="_ref_1479"><a href="#eqn-abs">abs</a></emu-xref>(<var>number</var>)).</li><li>Let <var>int8bit</var> be <var>int</var> <emu-xref aoid="modulo" id="_ref_1480"><a href="#eqn-modulo">modulo</a></emu-xref> 2<sup>8</sup>.</li><li>If <var>int8bit</var> ≥ 2<sup>7</sup>, return <var>int8bit</var> - 2<sup>8</sup>; otherwise return <var>int8bit</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-touint8" aoid="ToUint8">
|
||
<h1><span class="secnum">7.1.10</span>ToUint8 ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToUint8 converts <var>argument</var> to one of 2<sup>8</sup> integer values in the range 0 through 255, inclusive. This abstract operation functions as follows:</p>
|
||
<emu-alg><ol><li>Let <var>number</var> be ? <emu-xref aoid="ToNumber" id="_ref_1481"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>argument</var>).</li><li>If <var>number</var> is <emu-val>NaN</emu-val>, <emu-val>+0</emu-val>, <emu-val>-0</emu-val>, <emu-val>+∞</emu-val>, or <emu-val>-∞</emu-val>, return <emu-val>+0</emu-val>.</li><li>Let <var>int</var> be the mathematical value that is the same sign as <var>number</var> and whose magnitude is <emu-xref aoid="floor" id="_ref_1482"><a href="#eqn-floor">floor</a></emu-xref>(<emu-xref aoid="abs" id="_ref_1483"><a href="#eqn-abs">abs</a></emu-xref>(<var>number</var>)).</li><li>Let <var>int8bit</var> be <var>int</var> <emu-xref aoid="modulo" id="_ref_1484"><a href="#eqn-modulo">modulo</a></emu-xref> 2<sup>8</sup>.</li><li>Return <var>int8bit</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-touint8clamp" aoid="ToUint8Clamp">
|
||
<h1><span class="secnum">7.1.11</span>ToUint8Clamp ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToUint8Clamp converts <var>argument</var> to one of 2<sup>8</sup> integer values in the range 0 through 255, inclusive. This abstract operation functions as follows:</p>
|
||
<emu-alg><ol><li>Let <var>number</var> be ? <emu-xref aoid="ToNumber" id="_ref_1485"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>argument</var>).</li><li>If <var>number</var> is <emu-val>NaN</emu-val>, return <emu-val>+0</emu-val>.</li><li>If <var>number</var> ≤ 0, return <emu-val>+0</emu-val>.</li><li>If <var>number</var> ≥ 255, return 255.</li><li>Let <var>f</var> be <emu-xref aoid="floor" id="_ref_1486"><a href="#eqn-floor">floor</a></emu-xref>(<var>number</var>).</li><li>If <var>f</var> + 0.5 < <var>number</var>, return <var>f</var> + 1.</li><li>If <var>number</var> < <var>f</var> + 0.5, return <var>f</var>.</li><li>If <var>f</var> is odd, return <var>f</var> + 1.</li><li>Return <var>f</var>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Unlike the other ECMAScript integer conversion abstract
|
||
operation, ToUint8Clamp rounds rather than truncates non-integer values
|
||
and does not convert <emu-val>+∞</emu-val> to 0. ToUint8Clamp does “round half to even” tie-breaking. This differs from <code>Math.round</code> which does “round half up” tie-breaking.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-tostring" aoid="ToString">
|
||
<h1><span class="secnum">7.1.12</span>ToString ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToString converts <var>argument</var> to a value of type String according to <emu-xref href="#table-12" id="_ref_143"><a href="#table-12">Table 11</a></emu-xref>:</p>
|
||
<emu-table id="table-12" caption="ToString Conversions"><figure><figcaption>Table 11: <emu-xref aoid="ToString" id="_ref_1487"><a href="#sec-tostring">ToString</a></emu-xref> Conversions</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Argument Type
|
||
|
||
</th>
|
||
<th>
|
||
Result
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Undefined
|
||
|
||
</td>
|
||
<td>
|
||
Return <code>"undefined"</code>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Null
|
||
|
||
</td>
|
||
<td>
|
||
Return <code>"null"</code>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
<p>If <var>argument</var> is <emu-val>true</emu-val>, return <code>"true"</code>.</p>
|
||
<p>If <var>argument</var> is <emu-val>false</emu-val>, return <code>"false"</code>.</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Number
|
||
|
||
</td>
|
||
<td>
|
||
Return <emu-xref aoid="NumberToString" id="_ref_1488"><a href="#sec-tostring-applied-to-the-number-type">NumberToString</a></emu-xref>(<var>argument</var>).
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
String
|
||
|
||
</td>
|
||
<td>
|
||
Return <var>argument</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Symbol
|
||
|
||
</td>
|
||
<td>
|
||
Throw a <emu-val>TypeError</emu-val> exception.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Object
|
||
|
||
</td>
|
||
<td>
|
||
<p>Apply the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>primValue</var> be ? <emu-xref aoid="ToPrimitive" id="_ref_1489"><a href="#sec-toprimitive">ToPrimitive</a></emu-xref>(<var>argument</var>, hint String).</li><li>Return ? <emu-xref aoid="ToString" id="_ref_1490"><a href="#sec-tostring">ToString</a></emu-xref>(<var>primValue</var>).
|
||
</li></ol></emu-alg>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
|
||
<emu-clause id="sec-tostring-applied-to-the-number-type" aoid="NumberToString">
|
||
<h1><span class="secnum">7.1.12.1</span>NumberToString ( <var>m</var> )</h1>
|
||
<p>The abstract operation NumberToString converts a Number <var>m</var> to String format as follows:</p>
|
||
<emu-alg><ol><li>If <var>m</var> is <emu-val>NaN</emu-val>, return the String <code>"NaN"</code>.</li><li>If <var>m</var> is <emu-val>+0</emu-val> or <emu-val>-0</emu-val>, return the String <code>"0"</code>.</li><li>If <var>m</var> is less than zero, return the <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_1491"><a href="#sec-ecmascript-language-types-string-type">string-concatenation</a></emu-xref> of <code>"-"</code> and ! <emu-xref aoid="NumberToString" id="_ref_1492"><a href="#sec-tostring-applied-to-the-number-type">NumberToString</a></emu-xref>(-<var>m</var>).</li><li>If <var>m</var> is <emu-val>+∞</emu-val>, return the String <code>"Infinity"</code>.</li><li>Otherwise, let <var>n</var>, <var>k</var>, and <var>s</var> be integers such that <var>k</var> ≥ 1, 10<sup><var>k</var> - 1</sup> ≤ <var>s</var> < 10<sup><var>k</var></sup>, the Number value for <var>s</var> × 10<sup><var>n</var> - <var>k</var></sup> is <var>m</var>, and <var>k</var> is as small as possible. Note that <var>k</var> is the number of digits in the decimal representation of <var>s</var>, that <var>s</var> is not divisible by 10, and that the least significant digit of <var>s</var> is not necessarily uniquely determined by these criteria.</li><li>If <var>k</var> ≤ <var>n</var> ≤ 21, return the <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_1493"><a href="#sec-ecmascript-language-types-string-type">string-concatenation</a></emu-xref> of:<ul><li>the code units of the <var>k</var> digits of the decimal representation of <var>s</var> (in order, with no leading zeroes)</li><li><var>n</var> - <var>k</var> occurrences of the code unit 0x0030 (DIGIT ZERO)</li></ul></li><li>If 0 < <var>n</var> ≤ 21, return the <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_1494"><a href="#sec-ecmascript-language-types-string-type">string-concatenation</a></emu-xref> of:<ul><li>the code units of the most significant <var>n</var> digits of the decimal representation of <var>s</var></li><li>the code unit 0x002E (FULL STOP)</li><li>the code units of the remaining <var>k</var> - <var>n</var> digits of the decimal representation of <var>s</var></li></ul></li><li>If -6 < <var>n</var> ≤ 0, return the <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_1495"><a href="#sec-ecmascript-language-types-string-type">string-concatenation</a></emu-xref> of:<ul><li>the code unit 0x0030 (DIGIT ZERO)</li><li>the code unit 0x002E (FULL STOP)</li><li>-<var>n</var> occurrences of the code unit 0x0030 (DIGIT ZERO)</li><li>the code units of the <var>k</var> digits of the decimal representation of <var>s</var></li></ul></li><li>Otherwise, if <var>k</var> = 1, return the <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_1496"><a href="#sec-ecmascript-language-types-string-type">string-concatenation</a></emu-xref> of:<ul><li>the code unit of the single digit of <var>s</var></li><li>the code unit 0x0065 (LATIN SMALL LETTER E)</li><li>the code unit 0x002B (PLUS SIGN) or the code unit 0x002D (HYPHEN-MINUS) according to whether <var>n</var> - 1 is positive or negative</li><li>the code units of the decimal representation of the integer <emu-xref aoid="abs" id="_ref_1497"><a href="#eqn-abs">abs</a></emu-xref>(<var>n</var> - 1) (with no leading zeroes)</li></ul></li><li>Return the <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_1498"><a href="#sec-ecmascript-language-types-string-type">string-concatenation</a></emu-xref> of:<ul><li>the code units of the most significant digit of the decimal representation of <var>s</var></li><li>the code unit 0x002E (FULL STOP)</li><li>the code units of the remaining <var>k</var> - 1 digits of the decimal representation of <var>s</var></li><li>the code unit 0x0065 (LATIN SMALL LETTER E)</li><li>the code unit 0x002B (PLUS SIGN) or the code unit 0x002D (HYPHEN-MINUS) according to whether <var>n</var> - 1 is positive or negative</li><li>the code units of the decimal representation of the integer <emu-xref aoid="abs" id="_ref_1499"><a href="#eqn-abs">abs</a></emu-xref>(<var>n</var> - 1) (with no leading zeroes)
|
||
</li></ul></li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>The following observations may be useful as guidelines for
|
||
implementations, but are not part of the normative requirements of this
|
||
Standard:</p>
|
||
<ul>
|
||
<li>
|
||
If x is any Number value other than <emu-val>-0</emu-val>, then <emu-xref aoid="ToNumber" id="_ref_1500"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<emu-xref aoid="ToString" id="_ref_1501"><a href="#sec-tostring">ToString</a></emu-xref>(x)) is exactly the same Number value as x.
|
||
|
||
</li>
|
||
<li>
|
||
The least significant digit of s is not always uniquely determined by the requirements listed in step 5.
|
||
|
||
</li>
|
||
</ul>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>For implementations that provide more accurate conversions
|
||
than required by the rules above, it is recommended that the following
|
||
alternative version of step 5 be used as a guideline:</p>
|
||
<emu-alg><ol start="5"><li>Otherwise, let <var>n</var>, <var>k</var>, and <var>s</var> be integers such that <var>k</var> ≥ 1, 10<sup><var>k</var> - 1</sup> ≤ <var>s</var> < 10<sup><var>k</var></sup>, the Number value for <var>s</var> × 10<sup><var>n</var> - <var>k</var></sup> is <var>m</var>, and <var>k</var> is as small as possible. If there are multiple possibilities for <var>s</var>, choose the value of <var>s</var> for which <var>s</var> × 10<sup><var>n</var> - <var>k</var></sup> is closest in value to <var>m</var>. If there are two such possible values of <var>s</var>, choose the one that is even. Note that <var>k</var> is the number of digits in the decimal representation of <var>s</var> and that <var>s</var> is not divisible by 10.
|
||
</li></ol></emu-alg>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>Implementers of ECMAScript may find useful the paper and
|
||
code written by David M. Gay for binary-to-decimal conversion of
|
||
floating-point numbers:</p>
|
||
<p>Gay, David M. Correctly Rounded Binary-Decimal and
|
||
Decimal-Binary Conversions. Numerical Analysis, Manuscript 90-10.
|
||
AT&T Bell Laboratories (Murray Hill, New Jersey). November 30, 1990.
|
||
Available as
|
||
|
||
<br>
|
||
<a href="http://ampl.com/REFS/abstracts.html#rounding">http://ampl.com/REFS/abstracts.html#rounding</a>. Associated code available as
|
||
|
||
<br>
|
||
<a href="http://netlib.sandia.gov/fp/dtoa.c">http://netlib.sandia.gov/fp/dtoa.c</a> and as
|
||
|
||
<br>
|
||
<a href="http://netlib.sandia.gov/fp/g_fmt.c">http://netlib.sandia.gov/fp/g_fmt.c</a> and may also be found at the various <code>netlib</code> mirror sites.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-toobject" aoid="ToObject">
|
||
<h1><span class="secnum">7.1.13</span>ToObject ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToObject converts <var>argument</var> to a value of type Object according to <emu-xref href="#table-13" id="_ref_144"><a href="#table-13">Table 12</a></emu-xref>:</p>
|
||
<emu-table id="table-13" caption="ToObject Conversions"><figure><figcaption>Table 12: <emu-xref aoid="ToObject" id="_ref_1502"><a href="#sec-toobject">ToObject</a></emu-xref> Conversions</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Argument Type
|
||
|
||
</th>
|
||
<th>
|
||
Result
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Undefined
|
||
|
||
</td>
|
||
<td>
|
||
Throw a <emu-val>TypeError</emu-val> exception.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Null
|
||
|
||
</td>
|
||
<td>
|
||
Throw a <emu-val>TypeError</emu-val> exception.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
Return a new Boolean object whose [[BooleanData]] internal slot is set to <var>argument</var>. See <emu-xref href="#sec-boolean-objects" id="_ref_145"><a href="#sec-boolean-objects">19.3</a></emu-xref> for a description of Boolean objects.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Number
|
||
|
||
</td>
|
||
<td>
|
||
Return a new Number object whose [[NumberData]] internal slot is set to <var>argument</var>. See <emu-xref href="#sec-number-objects" id="_ref_146"><a href="#sec-number-objects">20.1</a></emu-xref> for a description of Number objects.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
String
|
||
|
||
</td>
|
||
<td>
|
||
Return a new String object whose [[StringData]] internal slot is set to <var>argument</var>. See <emu-xref href="#sec-string-objects" id="_ref_147"><a href="#sec-string-objects">21.1</a></emu-xref> for a description of String objects.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Symbol
|
||
|
||
</td>
|
||
<td>
|
||
Return a new Symbol object whose [[SymbolData]] internal slot is set to <var>argument</var>. See <emu-xref href="#sec-symbol-objects" id="_ref_148"><a href="#sec-symbol-objects">19.4</a></emu-xref> for a description of Symbol objects.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Object
|
||
|
||
</td>
|
||
<td>
|
||
Return <var>argument</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-topropertykey" aoid="ToPropertyKey">
|
||
<h1><span class="secnum">7.1.14</span>ToPropertyKey ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToPropertyKey converts <var>argument</var> to a value that can be used as a property key by performing the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>key</var> be ? <emu-xref aoid="ToPrimitive" id="_ref_1503"><a href="#sec-toprimitive">ToPrimitive</a></emu-xref>(<var>argument</var>, hint String).</li><li>If <emu-xref aoid="Type" id="_ref_1504"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>key</var>) is Symbol, then<ol><li>Return <var>key</var>.</li></ol></li><li>Return ! <emu-xref aoid="ToString" id="_ref_1505"><a href="#sec-tostring">ToString</a></emu-xref>(<var>key</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-tolength" aoid="ToLength">
|
||
<h1><span class="secnum">7.1.15</span>ToLength ( <var>argument</var> )</h1>
|
||
<p>The abstract operation ToLength converts <var>argument</var> to an integer suitable for use as the length of an array-like object. It performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>len</var> be ? <emu-xref aoid="ToInteger" id="_ref_1506"><a href="#sec-tointeger">ToInteger</a></emu-xref>(<var>argument</var>).</li><li>If <var>len</var> ≤ <emu-val>+0</emu-val>, return <emu-val>+0</emu-val>.</li><li>Return <emu-xref aoid="min" id="_ref_1507"><a href="#eqn-min">min</a></emu-xref>(<var>len</var>, 2<sup>53</sup> - 1).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-canonicalnumericindexstring" aoid="CanonicalNumericIndexString">
|
||
<h1><span class="secnum">7.1.16</span>CanonicalNumericIndexString ( <var>argument</var> )</h1>
|
||
<p>The abstract operation CanonicalNumericIndexString returns <var>argument</var> converted to a numeric value if it is a String representation of a Number that would be produced by <emu-xref aoid="ToString" id="_ref_1508"><a href="#sec-tostring">ToString</a></emu-xref>, or the string <code>"-0"</code>. Otherwise, it returns <emu-val>undefined</emu-val>. This abstract operation functions as follows:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1509"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1510"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>argument</var>) is String.</li><li>If <var>argument</var> is <code>"-0"</code>, return <emu-val>-0</emu-val>.</li><li>Let <var>n</var> be ! <emu-xref aoid="ToNumber" id="_ref_1511"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>argument</var>).</li><li>If <emu-xref aoid="SameValue" id="_ref_1512"><a href="#sec-samevalue">SameValue</a></emu-xref>(! <emu-xref aoid="ToString" id="_ref_1513"><a href="#sec-tostring">ToString</a></emu-xref>(<var>n</var>), <var>argument</var>) is <emu-val>false</emu-val>, return <emu-val>undefined</emu-val>.</li><li>Return <var>n</var>.
|
||
</li></ol></emu-alg>
|
||
<p>A <em>canonical numeric string</em> is any String value for which the CanonicalNumericIndexString abstract operation does not return <emu-val>undefined</emu-val>.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-toindex" aoid="ToIndex">
|
||
<h1><span class="secnum">7.1.17</span>ToIndex ( <var>value</var> )</h1>
|
||
<p>The abstract operation ToIndex returns <var>value</var> argument converted to a numeric value if it is a valid <emu-xref href="#integer-index" id="_ref_1514"><a href="#integer-index">integer index</a></emu-xref> value. This abstract operation functions as follows:</p>
|
||
<emu-alg><ol><li>If <var>value</var> is <emu-val>undefined</emu-val>, then<ol><li>Let <var>index</var> be 0.</li></ol></li><li>Else,<ol><li>Let <var>integerIndex</var> be ? <emu-xref aoid="ToInteger" id="_ref_1515"><a href="#sec-tointeger">ToInteger</a></emu-xref>(<var>value</var>).</li><li>If <var>integerIndex</var> < 0, throw a <emu-val>RangeError</emu-val> exception.</li><li>Let <var>index</var> be ! <emu-xref aoid="ToLength" id="_ref_1516"><a href="#sec-tolength">ToLength</a></emu-xref>(<var>integerIndex</var>).</li><li>If <emu-xref aoid="SameValueZero" id="_ref_1517"><a href="#sec-samevaluezero">SameValueZero</a></emu-xref>(<var>integerIndex</var>, <var>index</var>) is <emu-val>false</emu-val>, throw a <emu-val>RangeError</emu-val> exception.</li></ol></li><li>Return <var>index</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-testing-and-comparison-operations">
|
||
<h1><span class="secnum">7.2</span>Testing and Comparison Operations</h1>
|
||
|
||
<emu-clause id="sec-requireobjectcoercible" aoid="RequireObjectCoercible">
|
||
<h1><span class="secnum">7.2.1</span>RequireObjectCoercible ( <var>argument</var> )</h1>
|
||
<p>The abstract operation RequireObjectCoercible throws an error if <var>argument</var> is a value that cannot be converted to an Object using <emu-xref aoid="ToObject" id="_ref_1518"><a href="#sec-toobject">ToObject</a></emu-xref>. It is defined by <emu-xref href="#table-14" id="_ref_149"><a href="#table-14">Table 13</a></emu-xref>:</p>
|
||
<emu-table id="table-14" caption="RequireObjectCoercible Results"><figure><figcaption>Table 13: <emu-xref aoid="RequireObjectCoercible" id="_ref_1519"><a href="#sec-requireobjectcoercible">RequireObjectCoercible</a></emu-xref> Results</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Argument Type
|
||
|
||
</th>
|
||
<th>
|
||
Result
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Undefined
|
||
|
||
</td>
|
||
<td>
|
||
Throw a <emu-val>TypeError</emu-val> exception.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Null
|
||
|
||
</td>
|
||
<td>
|
||
Throw a <emu-val>TypeError</emu-val> exception.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
Return <var>argument</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Number
|
||
|
||
</td>
|
||
<td>
|
||
Return <var>argument</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
String
|
||
|
||
</td>
|
||
<td>
|
||
Return <var>argument</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Symbol
|
||
|
||
</td>
|
||
<td>
|
||
Return <var>argument</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Object
|
||
|
||
</td>
|
||
<td>
|
||
Return <var>argument</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isarray" aoid="IsArray">
|
||
<h1><span class="secnum">7.2.2</span>IsArray ( <var>argument</var> )</h1>
|
||
<p>The abstract operation IsArray takes one argument <var>argument</var>, and performs the following steps:</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1520"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>argument</var>) is not Object, return <emu-val>false</emu-val>.</li><li>If <var>argument</var> is an Array <emu-xref href="#exotic-object" id="_ref_1521"><a href="#exotic-object">exotic object</a></emu-xref>, return <emu-val>true</emu-val>.</li><li>If <var>argument</var> is a Proxy <emu-xref href="#exotic-object" id="_ref_1522"><a href="#exotic-object">exotic object</a></emu-xref>, then<ol><li>If <var>argument</var>.[[ProxyHandler]] is <emu-val>null</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>target</var> be <var>argument</var>.[[ProxyTarget]].</li><li>Return ? <emu-xref aoid="IsArray" id="_ref_1523"><a href="#sec-isarray">IsArray</a></emu-xref>(<var>target</var>).</li></ol></li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-iscallable" aoid="IsCallable">
|
||
<h1><span class="secnum">7.2.3</span>IsCallable ( <var>argument</var> )</h1>
|
||
<p>The abstract operation IsCallable determines if <var>argument</var>, which must be an <emu-xref href="#sec-ecmascript-language-types" id="_ref_1524"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>, is a callable function with a [[Call]] internal method.</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1525"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>argument</var>) is not Object, return <emu-val>false</emu-val>.</li><li>If <var>argument</var> has a [[Call]] internal method, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isconstructor" aoid="IsConstructor">
|
||
<h1><span class="secnum">7.2.4</span>IsConstructor ( <var>argument</var> )</h1>
|
||
<p>The abstract operation IsConstructor determines if <var>argument</var>, which must be an <emu-xref href="#sec-ecmascript-language-types" id="_ref_1526"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>, is a <emu-xref href="#function-object" id="_ref_1527"><a href="#function-object">function object</a></emu-xref> with a [[Construct]] internal method.</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1528"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>argument</var>) is not Object, return <emu-val>false</emu-val>.</li><li>If <var>argument</var> has a [[Construct]] internal method, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isextensible-o" aoid="IsExtensible">
|
||
<h1><span class="secnum">7.2.5</span>IsExtensible ( <var>O</var> )</h1>
|
||
<p>The abstract operation IsExtensible is used to determine whether additional properties can be added to the object that is <var>O</var>. A Boolean value is returned. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1529"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1530"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li>Return ? <var>O</var>.[[IsExtensible]]().
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isinteger" aoid="IsInteger">
|
||
<h1><span class="secnum">7.2.6</span>IsInteger ( <var>argument</var> )</h1>
|
||
<p>The abstract operation IsInteger determines if <var>argument</var> is a finite integer numeric value.</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1531"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>argument</var>) is not Number, return <emu-val>false</emu-val>.</li><li>If <var>argument</var> is <emu-val>NaN</emu-val>, <emu-val>+∞</emu-val>, or <emu-val>-∞</emu-val>, return <emu-val>false</emu-val>.</li><li>If <emu-xref aoid="floor" id="_ref_1532"><a href="#eqn-floor">floor</a></emu-xref>(<emu-xref aoid="abs" id="_ref_1533"><a href="#eqn-abs">abs</a></emu-xref>(<var>argument</var>)) ≠ <emu-xref aoid="abs" id="_ref_1534"><a href="#eqn-abs">abs</a></emu-xref>(<var>argument</var>), return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ispropertykey" aoid="IsPropertyKey">
|
||
<h1><span class="secnum">7.2.7</span>IsPropertyKey ( <var>argument</var> )</h1>
|
||
<p>The abstract operation IsPropertyKey determines if <var>argument</var>, which must be an <emu-xref href="#sec-ecmascript-language-types" id="_ref_1535"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>, is a value that may be used as a property key.</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1536"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>argument</var>) is String, return <emu-val>true</emu-val>.</li><li>If <emu-xref aoid="Type" id="_ref_1537"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>argument</var>) is Symbol, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isregexp" aoid="IsRegExp">
|
||
<h1><span class="secnum">7.2.8</span>IsRegExp ( <var>argument</var> )</h1>
|
||
<p>The abstract operation IsRegExp with argument <var>argument</var> performs the following steps:</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1538"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>argument</var>) is not Object, return <emu-val>false</emu-val>.</li><li>Let <var>matcher</var> be ? <emu-xref aoid="Get" id="_ref_1539"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>argument</var>, @@match).</li><li>If <var>matcher</var> is not <emu-val>undefined</emu-val>, return <emu-xref aoid="ToBoolean" id="_ref_1540"><a href="#sec-toboolean">ToBoolean</a></emu-xref>(<var>matcher</var>).</li><li>If <var>argument</var> has a [[RegExpMatcher]] internal slot, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-isstringprefix" aoid="IsStringPrefix">
|
||
<h1><span class="secnum">7.2.9</span>IsStringPrefix ( <var>p</var>, <var>q</var> )</h1>
|
||
<p>The abstract operation IsStringPrefix determines if String <var>p</var> is a prefix of String <var>q</var>.</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1541"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1542"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>p</var>) is String.</li><li><emu-xref href="#assert" id="_ref_1543"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1544"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>q</var>) is String.</li><li>If <var>q</var> can be the <emu-xref href="#sec-ecmascript-language-types-string-type" id="_ref_1545"><a href="#sec-ecmascript-language-types-string-type">string-concatenation</a></emu-xref> of <var>p</var> and some other String <var>r</var>, return <emu-val>true</emu-val>. Otherwise, return <emu-val>false</emu-val>.</li><li>NOTE: Any String is a prefix of itself, because <var>r</var> may be the empty String.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-samevalue" aoid="SameValue">
|
||
<h1><span class="secnum">7.2.10</span>SameValue ( <var>x</var>, <var>y</var> )</h1>
|
||
<p>The internal comparison abstract operation SameValue(<var>x</var>, <var>y</var>), where <var>x</var> and <var>y</var> are ECMAScript language values, produces <emu-val>true</emu-val> or <emu-val>false</emu-val>. Such a comparison is performed as follows:</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1546"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is different from <emu-xref aoid="Type" id="_ref_1547"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>y</var>), return <emu-val>false</emu-val>.</li><li>If <emu-xref aoid="Type" id="_ref_1548"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is Number, then<ol><li>If <var>x</var> is <emu-val>NaN</emu-val> and <var>y</var> is <emu-val>NaN</emu-val>, return <emu-val>true</emu-val>.</li><li>If <var>x</var> is <emu-val>+0</emu-val> and <var>y</var> is <emu-val>-0</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>x</var> is <emu-val>-0</emu-val> and <var>y</var> is <emu-val>+0</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>x</var> is the same Number value as <var>y</var>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.</li></ol></li><li>Return <emu-xref aoid="SameValueNonNumber" id="_ref_1549"><a href="#sec-samevaluenonnumber">SameValueNonNumber</a></emu-xref>(<var>x</var>, <var>y</var>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This algorithm differs from the <emu-xref aoid="Strict Equality Comparison" id="_ref_1550"><a href="#sec-strict-equality-comparison">Strict Equality Comparison</a></emu-xref> Algorithm in its treatment of signed zeroes and NaNs.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-samevaluezero" aoid="SameValueZero">
|
||
<h1><span class="secnum">7.2.11</span>SameValueZero ( <var>x</var>, <var>y</var> )</h1>
|
||
<p>The internal comparison abstract operation SameValueZero(<var>x</var>, <var>y</var>), where <var>x</var> and <var>y</var> are ECMAScript language values, produces <emu-val>true</emu-val> or <emu-val>false</emu-val>. Such a comparison is performed as follows:</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1551"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is different from <emu-xref aoid="Type" id="_ref_1552"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>y</var>), return <emu-val>false</emu-val>.</li><li>If <emu-xref aoid="Type" id="_ref_1553"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is Number, then<ol><li>If <var>x</var> is <emu-val>NaN</emu-val> and <var>y</var> is <emu-val>NaN</emu-val>, return <emu-val>true</emu-val>.</li><li>If <var>x</var> is <emu-val>+0</emu-val> and <var>y</var> is <emu-val>-0</emu-val>, return <emu-val>true</emu-val>.</li><li>If <var>x</var> is <emu-val>-0</emu-val> and <var>y</var> is <emu-val>+0</emu-val>, return <emu-val>true</emu-val>.</li><li>If <var>x</var> is the same Number value as <var>y</var>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.</li></ol></li><li>Return <emu-xref aoid="SameValueNonNumber" id="_ref_1554"><a href="#sec-samevaluenonnumber">SameValueNonNumber</a></emu-xref>(<var>x</var>, <var>y</var>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>SameValueZero differs from <emu-xref aoid="SameValue" id="_ref_1555"><a href="#sec-samevalue">SameValue</a></emu-xref> only in its treatment of <emu-val>+0</emu-val> and <emu-val>-0</emu-val>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-samevaluenonnumber" aoid="SameValueNonNumber">
|
||
<h1><span class="secnum">7.2.12</span>SameValueNonNumber ( <var>x</var>, <var>y</var> )</h1>
|
||
<p>The internal comparison abstract operation SameValueNonNumber(<var>x</var>, <var>y</var>), where neither <var>x</var> nor <var>y</var> are Number values, produces <emu-val>true</emu-val> or <emu-val>false</emu-val>. Such a comparison is performed as follows:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1556"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1557"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is not Number.</li><li><emu-xref href="#assert" id="_ref_1558"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1559"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is the same as <emu-xref aoid="Type" id="_ref_1560"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>y</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1561"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is Undefined, return <emu-val>true</emu-val>.</li><li>If <emu-xref aoid="Type" id="_ref_1562"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is Null, return <emu-val>true</emu-val>.</li><li>If <emu-xref aoid="Type" id="_ref_1563"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is String, then<ol><li>If <var>x</var> and <var>y</var> are exactly the same sequence of code units (same length and same code units at corresponding indices), return <emu-val>true</emu-val>; otherwise, return <emu-val>false</emu-val>.</li></ol></li><li>If <emu-xref aoid="Type" id="_ref_1564"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is Boolean, then<ol><li>If <var>x</var> and <var>y</var> are both <emu-val>true</emu-val> or both <emu-val>false</emu-val>, return <emu-val>true</emu-val>; otherwise, return <emu-val>false</emu-val>.</li></ol></li><li>If <emu-xref aoid="Type" id="_ref_1565"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is Symbol, then<ol><li>If <var>x</var> and <var>y</var> are both the same Symbol value, return <emu-val>true</emu-val>; otherwise, return <emu-val>false</emu-val>.</li></ol></li><li>If <var>x</var> and <var>y</var> are the same Object value, return <emu-val>true</emu-val>. Otherwise, return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-abstract-relational-comparison" aoid="Abstract Relational Comparison">
|
||
<h1><span class="secnum">7.2.13</span>Abstract Relational Comparison</h1>
|
||
<p>The comparison <var>x</var> < <var>y</var>, where <var>x</var> and <var>y</var> are values, produces <emu-val>true</emu-val>, <emu-val>false</emu-val>, or <emu-val>undefined</emu-val> (which indicates that at least one operand is <emu-val>NaN</emu-val>). In addition to <var>x</var> and <var>y</var> the algorithm takes a Boolean flag named <var>LeftFirst</var>
|
||
as a parameter. The flag is used to control the order in which
|
||
operations with potentially visible side-effects are performed upon <var>x</var> and <var>y</var>. It is necessary because ECMAScript specifies left to right evaluation of expressions. The default value of <var>LeftFirst</var> is <emu-val>true</emu-val> and indicates that the <var>x</var> parameter corresponds to an expression that occurs to the left of the <var>y</var> parameter's corresponding expression. If <var>LeftFirst</var> is <emu-val>false</emu-val>, the reverse is the case and operations must be performed upon <var>y</var> before <var>x</var>. Such a comparison is performed as follows:</p>
|
||
<emu-alg><ol><li>If the <var>LeftFirst</var> flag is <emu-val>true</emu-val>, then<ol><li>Let <var>px</var> be ? <emu-xref aoid="ToPrimitive" id="_ref_1566"><a href="#sec-toprimitive">ToPrimitive</a></emu-xref>(<var>x</var>, hint Number).</li><li>Let <var>py</var> be ? <emu-xref aoid="ToPrimitive" id="_ref_1567"><a href="#sec-toprimitive">ToPrimitive</a></emu-xref>(<var>y</var>, hint Number).</li></ol></li><li>Else the order of evaluation needs to be reversed to preserve left to right evaluation,<ol><li>Let <var>py</var> be ? <emu-xref aoid="ToPrimitive" id="_ref_1568"><a href="#sec-toprimitive">ToPrimitive</a></emu-xref>(<var>y</var>, hint Number).</li><li>Let <var>px</var> be ? <emu-xref aoid="ToPrimitive" id="_ref_1569"><a href="#sec-toprimitive">ToPrimitive</a></emu-xref>(<var>x</var>, hint Number).</li></ol></li><li>If <emu-xref aoid="Type" id="_ref_1570"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>px</var>) is String and <emu-xref aoid="Type" id="_ref_1571"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>py</var>) is String, then<ol><li>If <emu-xref aoid="IsStringPrefix" id="_ref_1572"><a href="#sec-isstringprefix">IsStringPrefix</a></emu-xref>(<var>py</var>, <var>px</var>) is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li><li>If <emu-xref aoid="IsStringPrefix" id="_ref_1573"><a href="#sec-isstringprefix">IsStringPrefix</a></emu-xref>(<var>px</var>, <var>py</var>) is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Let <var>k</var> be the smallest nonnegative integer such that the code unit at index <var>k</var> within <var>px</var> is different from the code unit at index <var>k</var> within <var>py</var>. (There must be such a <var>k</var>, for neither String is a prefix of the other.)</li><li>Let <var>m</var> be the integer that is the numeric value of the code unit at index <var>k</var> within <var>px</var>.</li><li>Let <var>n</var> be the integer that is the numeric value of the code unit at index <var>k</var> within <var>py</var>.</li><li>If <var>m</var> < <var>n</var>, return <emu-val>true</emu-val>. Otherwise, return <emu-val>false</emu-val>.</li></ol></li><li>Else,<ol><li>NOTE: Because <var>px</var> and <var>py</var> are primitive values evaluation order is not important.</li><li>Let <var>nx</var> be ? <emu-xref aoid="ToNumber" id="_ref_1574"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>px</var>).</li><li>Let <var>ny</var> be ? <emu-xref aoid="ToNumber" id="_ref_1575"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>py</var>).</li><li>If <var>nx</var> is <emu-val>NaN</emu-val>, return <emu-val>undefined</emu-val>.</li><li>If <var>ny</var> is <emu-val>NaN</emu-val>, return <emu-val>undefined</emu-val>.</li><li>If <var>nx</var> and <var>ny</var> are the same Number value, return <emu-val>false</emu-val>.</li><li>If <var>nx</var> is <emu-val>+0</emu-val> and <var>ny</var> is <emu-val>-0</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>nx</var> is <emu-val>-0</emu-val> and <var>ny</var> is <emu-val>+0</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>nx</var> is <emu-val>+∞</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>ny</var> is <emu-val>+∞</emu-val>, return <emu-val>true</emu-val>.</li><li>If <var>ny</var> is <emu-val>-∞</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>nx</var> is <emu-val>-∞</emu-val>, return <emu-val>true</emu-val>.</li><li>If the mathematical value of <var>nx</var> is less than the mathematical value of <var>ny</var>—note that these mathematical values are both finite and not both zero—return <emu-val>true</emu-val>. Otherwise, return <emu-val>false</emu-val>.
|
||
</li></ol></li></ol></emu-alg>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>Step 3 differs from step 7 in the algorithm for the addition operator <code>+</code> (<emu-xref href="#sec-addition-operator-plus" id="_ref_150"><a href="#sec-addition-operator-plus">12.8.3</a></emu-xref>) by using the logical-and operation instead of the logical-or operation.</p>
|
||
</div></emu-note>
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>The comparison of Strings uses a simple lexicographic
|
||
ordering on sequences of code unit values. There is no attempt to use
|
||
the more complex, semantically oriented definitions of character or
|
||
string equality and collating order defined in the Unicode
|
||
specification. Therefore String values that are canonically equal
|
||
according to the Unicode standard could test as unequal. In effect this
|
||
algorithm assumes that both Strings are already in normalized form.
|
||
Also, note that for strings containing supplementary characters,
|
||
lexicographic ordering on sequences of UTF-16 code unit values differs
|
||
from that on sequences of code point values.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-abstract-equality-comparison" aoid="Abstract Equality Comparison">
|
||
<h1><span class="secnum">7.2.14</span>Abstract Equality Comparison</h1>
|
||
<p>The comparison <var>x</var> == <var>y</var>, where <var>x</var> and <var>y</var> are values, produces <emu-val>true</emu-val> or <emu-val>false</emu-val>. Such a comparison is performed as follows:</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1576"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is the same as <emu-xref aoid="Type" id="_ref_1577"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>y</var>), then<ol><li>Return the result of performing <emu-xref aoid="Strict Equality Comparison" id="_ref_1578"><a href="#sec-strict-equality-comparison">Strict Equality Comparison</a></emu-xref> <var>x</var> === <var>y</var>.</li></ol></li><li>If <var>x</var> is <emu-val>null</emu-val> and <var>y</var> is <emu-val>undefined</emu-val>, return <emu-val>true</emu-val>.</li><li>If <var>x</var> is <emu-val>undefined</emu-val> and <var>y</var> is <emu-val>null</emu-val>, return <emu-val>true</emu-val>.</li><li>If <emu-xref aoid="Type" id="_ref_1579"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is Number and <emu-xref aoid="Type" id="_ref_1580"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>y</var>) is String, return the result of the comparison <var>x</var> == ! <emu-xref aoid="ToNumber" id="_ref_1581"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>y</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1582"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is String and <emu-xref aoid="Type" id="_ref_1583"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>y</var>) is Number, return the result of the comparison ! <emu-xref aoid="ToNumber" id="_ref_1584"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>x</var>) == <var>y</var>.</li><li>If <emu-xref aoid="Type" id="_ref_1585"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is Boolean, return the result of the comparison ! <emu-xref aoid="ToNumber" id="_ref_1586"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>x</var>) == <var>y</var>.</li><li>If <emu-xref aoid="Type" id="_ref_1587"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>y</var>) is Boolean, return the result of the comparison <var>x</var> == ! <emu-xref aoid="ToNumber" id="_ref_1588"><a href="#sec-tonumber">ToNumber</a></emu-xref>(<var>y</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1589"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is either String, Number, or Symbol and <emu-xref aoid="Type" id="_ref_1590"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>y</var>) is Object, return the result of the comparison <var>x</var> == <emu-xref aoid="ToPrimitive" id="_ref_1591"><a href="#sec-toprimitive">ToPrimitive</a></emu-xref>(<var>y</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1592"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is Object and <emu-xref aoid="Type" id="_ref_1593"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>y</var>) is either String, Number, or Symbol, return the result of the comparison <emu-xref aoid="ToPrimitive" id="_ref_1594"><a href="#sec-toprimitive">ToPrimitive</a></emu-xref>(<var>x</var>) == <var>y</var>.</li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-strict-equality-comparison" aoid="Strict Equality Comparison">
|
||
<h1><span class="secnum">7.2.15</span>Strict Equality Comparison</h1>
|
||
<p>The comparison <var>x</var> === <var>y</var>, where <var>x</var> and <var>y</var> are values, produces <emu-val>true</emu-val> or <emu-val>false</emu-val>. Such a comparison is performed as follows:</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="Type" id="_ref_1595"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is different from <emu-xref aoid="Type" id="_ref_1596"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>y</var>), return <emu-val>false</emu-val>.</li><li>If <emu-xref aoid="Type" id="_ref_1597"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>x</var>) is Number, then<ol><li>If <var>x</var> is <emu-val>NaN</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>y</var> is <emu-val>NaN</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>x</var> is the same Number value as <var>y</var>, return <emu-val>true</emu-val>.</li><li>If <var>x</var> is <emu-val>+0</emu-val> and <var>y</var> is <emu-val>-0</emu-val>, return <emu-val>true</emu-val>.</li><li>If <var>x</var> is <emu-val>-0</emu-val> and <var>y</var> is <emu-val>+0</emu-val>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.</li></ol></li><li>Return <emu-xref aoid="SameValueNonNumber" id="_ref_1598"><a href="#sec-samevaluenonnumber">SameValueNonNumber</a></emu-xref>(<var>x</var>, <var>y</var>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This algorithm differs from the <emu-xref aoid="SameValue" id="_ref_1599"><a href="#sec-samevalue">SameValue</a></emu-xref> Algorithm in its treatment of signed zeroes and NaNs.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-operations-on-objects">
|
||
<h1><span class="secnum">7.3</span>Operations on Objects</h1>
|
||
|
||
<emu-clause id="sec-get-o-p" aoid="Get">
|
||
<h1><span class="secnum">7.3.1</span>Get ( <var>O</var>, <var>P</var> )</h1>
|
||
<p>The abstract operation Get is used to retrieve the value of a
|
||
specific property of an object. The operation is called with arguments <var>O</var> and <var>P</var> where <var>O</var> is the object and <var>P</var> is the property key. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1600"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1601"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1602"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1603"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Return ? <var>O</var>.[[Get]](<var>P</var>, <var>O</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getv" aoid="GetV">
|
||
<h1><span class="secnum">7.3.2</span>GetV ( <var>V</var>, <var>P</var> )</h1>
|
||
<p>The abstract operation GetV is used to retrieve the value of a specific property of an <emu-xref href="#sec-ecmascript-language-types" id="_ref_1604"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>.
|
||
If the value is not an object, the property lookup is performed using a
|
||
wrapper object appropriate for the type of the value. The operation is
|
||
called with arguments <var>V</var> and <var>P</var> where <var>V</var> is the value and <var>P</var> is the property key. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1605"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1606"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>O</var> be ? <emu-xref aoid="ToObject" id="_ref_1607"><a href="#sec-toobject">ToObject</a></emu-xref>(<var>V</var>).</li><li>Return ? <var>O</var>.[[Get]](<var>P</var>, <var>V</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-set-o-p-v-throw" aoid="Set">
|
||
<h1><span class="secnum">7.3.3</span>Set ( <var>O</var>, <var>P</var>, <var>V</var>, <var>Throw</var> )</h1>
|
||
<p>The abstract operation Set is used to set the value of a specific property of an object. The operation is called with arguments <var>O</var>, <var>P</var>, <var>V</var>, and <var>Throw</var> where <var>O</var> is the object, <var>P</var> is the property key, <var>V</var> is the new value for the property and <var>Throw</var> is a Boolean flag. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1608"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1609"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1610"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1611"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li><emu-xref href="#assert" id="_ref_1612"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1613"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>Throw</var>) is Boolean.</li><li>Let <var>success</var> be ? <var>O</var>.[[Set]](<var>P</var>, <var>V</var>, <var>O</var>).</li><li>If <var>success</var> is <emu-val>false</emu-val> and <var>Throw</var> is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <var>success</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createdataproperty" aoid="CreateDataProperty">
|
||
<h1><span class="secnum">7.3.4</span>CreateDataProperty ( <var>O</var>, <var>P</var>, <var>V</var> )</h1>
|
||
<p>The abstract operation CreateDataProperty is used to create a
|
||
new own property of an object. The operation is called with arguments <var>O</var>, <var>P</var>, and <var>V</var> where <var>O</var> is the object, <var>P</var> is the property key, and <var>V</var> is the value for the property. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1614"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1615"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1616"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1617"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>newDesc</var> be the PropertyDescriptor { [[Value]]: <var>V</var>, [[Writable]]: <emu-val>true</emu-val>, [[Enumerable]]: <emu-val>true</emu-val>, [[Configurable]]: <emu-val>true</emu-val> }.</li><li>Return ? <var>O</var>.[[DefineOwnProperty]](<var>P</var>, <var>newDesc</var>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This abstract operation creates a property whose attributes
|
||
are set to the same defaults used for properties created by the
|
||
ECMAScript language assignment operator. Normally, the property will not
|
||
already exist. If it does exist and is not configurable or if <var>O</var> is not extensible, [[DefineOwnProperty]] will return <emu-val>false</emu-val>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createmethodproperty" aoid="CreateMethodProperty">
|
||
<h1><span class="secnum">7.3.5</span>CreateMethodProperty ( <var>O</var>, <var>P</var>, <var>V</var> )</h1>
|
||
<p>The abstract operation CreateMethodProperty is used to create a
|
||
new own property of an object. The operation is called with arguments <var>O</var>, <var>P</var>, and <var>V</var> where <var>O</var> is the object, <var>P</var> is the property key, and <var>V</var> is the value for the property. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1618"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1619"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1620"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1621"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>newDesc</var> be the PropertyDescriptor { [[Value]]: <var>V</var>, [[Writable]]: <emu-val>true</emu-val>, [[Enumerable]]: <emu-val>false</emu-val>, [[Configurable]]: <emu-val>true</emu-val> }.</li><li>Return ? <var>O</var>.[[DefineOwnProperty]](<var>P</var>, <var>newDesc</var>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This abstract operation creates a property whose attributes
|
||
are set to the same defaults used for built-in methods and methods
|
||
defined using class declaration syntax. Normally, the property will not
|
||
already exist. If it does exist and is not configurable or if <var>O</var> is not extensible, [[DefineOwnProperty]] will return <emu-val>false</emu-val>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createdatapropertyorthrow" aoid="CreateDataPropertyOrThrow">
|
||
<h1><span class="secnum">7.3.6</span>CreateDataPropertyOrThrow ( <var>O</var>, <var>P</var>, <var>V</var> )</h1>
|
||
<p>The abstract operation CreateDataPropertyOrThrow is used to create a new own property of an object. It throws a <emu-val>TypeError</emu-val> exception if the requested property update cannot be performed. The operation is called with arguments <var>O</var>, <var>P</var>, and <var>V</var> where <var>O</var> is the object, <var>P</var> is the property key, and <var>V</var> is the value for the property. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1622"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1623"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1624"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1625"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>success</var> be ? <emu-xref aoid="CreateDataProperty" id="_ref_1626"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>O</var>, <var>P</var>, <var>V</var>).</li><li>If <var>success</var> is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <var>success</var>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This abstract operation creates a property whose attributes
|
||
are set to the same defaults used for properties created by the
|
||
ECMAScript language assignment operator. Normally, the property will not
|
||
already exist. If it does exist and is not configurable or if <var>O</var> is not extensible, [[DefineOwnProperty]] will return <emu-val>false</emu-val> causing this operation to throw a <emu-val>TypeError</emu-val> exception.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-definepropertyorthrow" aoid="DefinePropertyOrThrow">
|
||
<h1><span class="secnum">7.3.7</span>DefinePropertyOrThrow ( <var>O</var>, <var>P</var>, <var>desc</var> )</h1>
|
||
<p>The abstract operation DefinePropertyOrThrow is used to call
|
||
the [[DefineOwnProperty]] internal method of an object in a manner that
|
||
will throw a <emu-val>TypeError</emu-val> exception if the requested property update cannot be performed. The operation is called with arguments <var>O</var>, <var>P</var>, and <var>desc</var> where <var>O</var> is the object, <var>P</var> is the property key, and <var>desc</var> is the <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_1627"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> for the property. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1628"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1629"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1630"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1631"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>success</var> be ? <var>O</var>.[[DefineOwnProperty]](<var>P</var>, <var>desc</var>).</li><li>If <var>success</var> is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <var>success</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-deletepropertyorthrow" aoid="DeletePropertyOrThrow">
|
||
<h1><span class="secnum">7.3.8</span>DeletePropertyOrThrow ( <var>O</var>, <var>P</var> )</h1>
|
||
<p>The abstract operation DeletePropertyOrThrow is used to remove a
|
||
specific own property of an object. It throws an exception if the
|
||
property is not configurable. The operation is called with arguments <var>O</var> and <var>P</var> where <var>O</var> is the object and <var>P</var> is the property key. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1632"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1633"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1634"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1635"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>success</var> be ? <var>O</var>.[[Delete]](<var>P</var>).</li><li>If <var>success</var> is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <var>success</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getmethod" aoid="GetMethod">
|
||
<h1><span class="secnum">7.3.9</span>GetMethod ( <var>V</var>, <var>P</var> )</h1>
|
||
<p>The abstract operation GetMethod is used to get the value of a specific property of an <emu-xref href="#sec-ecmascript-language-types" id="_ref_1636"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> when the value of the property is expected to be a function. The operation is called with arguments <var>V</var> and <var>P</var> where <var>V</var> is the <emu-xref href="#sec-ecmascript-language-types" id="_ref_1637"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>, <var>P</var> is the property key. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1638"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1639"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>func</var> be ? <emu-xref aoid="GetV" id="_ref_1640"><a href="#sec-getv">GetV</a></emu-xref>(<var>V</var>, <var>P</var>).</li><li>If <var>func</var> is either <emu-val>undefined</emu-val> or <emu-val>null</emu-val>, return <emu-val>undefined</emu-val>.</li><li>If <emu-xref aoid="IsCallable" id="_ref_1641"><a href="#sec-iscallable">IsCallable</a></emu-xref>(<var>func</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <var>func</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-hasproperty" aoid="HasProperty">
|
||
<h1><span class="secnum">7.3.10</span>HasProperty ( <var>O</var>, <var>P</var> )</h1>
|
||
<p>The abstract operation HasProperty is used to determine whether
|
||
an object has a property with the specified property key. The property
|
||
may be either an own or inherited. A Boolean value is returned. The
|
||
operation is called with arguments <var>O</var> and <var>P</var> where <var>O</var> is the object and <var>P</var> is the property key. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1642"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1643"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1644"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1645"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Return ? <var>O</var>.[[HasProperty]](<var>P</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-hasownproperty" aoid="HasOwnProperty">
|
||
<h1><span class="secnum">7.3.11</span>HasOwnProperty ( <var>O</var>, <var>P</var> )</h1>
|
||
<p>The abstract operation HasOwnProperty is used to determine
|
||
whether an object has an own property with the specified property key. A
|
||
Boolean value is returned. The operation is called with arguments <var>O</var> and <var>P</var> where <var>O</var> is the object and <var>P</var> is the property key. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1646"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1647"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1648"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1649"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>desc</var> be ? <var>O</var>.[[GetOwnProperty]](<var>P</var>).</li><li>If <var>desc</var> is <emu-val>undefined</emu-val>, return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-call" aoid="Call">
|
||
<h1><span class="secnum">7.3.12</span>Call ( <var>F</var>, <var>V</var> [ , <var>argumentsList</var> ] )</h1>
|
||
<p>The abstract operation Call is used to call the [[Call]] internal method of a <emu-xref href="#function-object" id="_ref_1650"><a href="#function-object">function object</a></emu-xref>. The operation is called with arguments <var>F</var>, <var>V</var>, and optionally <var>argumentsList</var> where <var>F</var> is the <emu-xref href="#function-object" id="_ref_1651"><a href="#function-object">function object</a></emu-xref>, <var>V</var> is an <emu-xref href="#sec-ecmascript-language-types" id="_ref_1652"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> that is the <emu-val>this</emu-val> value of the [[Call]], and <var>argumentsList</var> is the value passed to the corresponding argument of the internal method. If <var>argumentsList</var> is not present, a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1653"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> is used as its value. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li>If <var>argumentsList</var> is not present, set <var>argumentsList</var> to a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1654"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>If <emu-xref aoid="IsCallable" id="_ref_1655"><a href="#sec-iscallable">IsCallable</a></emu-xref>(<var>F</var>) is <emu-val>false</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return ? <var>F</var>.[[Call]](<var>V</var>, <var>argumentsList</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-construct" aoid="Construct">
|
||
<h1><span class="secnum">7.3.13</span>Construct ( <var>F</var> [ , <var>argumentsList</var> [ , <var>newTarget</var> ] ] )</h1>
|
||
<p>The abstract operation Construct is used to call the [[Construct]] internal method of a <emu-xref href="#function-object" id="_ref_1656"><a href="#function-object">function object</a></emu-xref>. The operation is called with arguments <var>F</var>, and optionally <var>argumentsList</var>, and <var>newTarget</var> where <var>F</var> is the <emu-xref href="#function-object" id="_ref_1657"><a href="#function-object">function object</a></emu-xref>. <var>argumentsList</var> and <var>newTarget</var> are the values to be passed as the corresponding arguments of the internal method. If <var>argumentsList</var> is not present, a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1658"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> is used as its value. If <var>newTarget</var> is not present, <var>F</var> is used as its value. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li>If <var>newTarget</var> is not present, set <var>newTarget</var> to <var>F</var>.</li><li>If <var>argumentsList</var> is not present, set <var>argumentsList</var> to a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1659"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_1660"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsConstructor" id="_ref_1661"><a href="#sec-isconstructor">IsConstructor</a></emu-xref>(<var>F</var>) is <emu-val>true</emu-val>.</li><li><emu-xref href="#assert" id="_ref_1662"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsConstructor" id="_ref_1663"><a href="#sec-isconstructor">IsConstructor</a></emu-xref>(<var>newTarget</var>) is <emu-val>true</emu-val>.</li><li>Return ? <var>F</var>.[[Construct]](<var>argumentsList</var>, <var>newTarget</var>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>If <var>newTarget</var> is not present, this operation is equivalent to: <code>new F(...argumentsList)</code></p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-setintegritylevel" aoid="SetIntegrityLevel">
|
||
<h1><span class="secnum">7.3.14</span>SetIntegrityLevel ( <var>O</var>, <var>level</var> )</h1>
|
||
<p>The abstract operation SetIntegrityLevel is used to fix the set
|
||
of own properties of an object. This abstract operation performs the
|
||
following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1664"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1665"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1666"><a href="#assert">Assert</a></emu-xref>: <var>level</var> is either <code>"sealed"</code> or <code>"frozen"</code>.</li><li>Let <var>status</var> be ? <var>O</var>.[[PreventExtensions]]().</li><li>If <var>status</var> is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>Let <var>keys</var> be ? <var>O</var>.[[OwnPropertyKeys]]().</li><li>If <var>level</var> is <code>"sealed"</code>, then<ol><li>For each element <var>k</var> of <var>keys</var>, do<ol><li>Perform ? <emu-xref aoid="DefinePropertyOrThrow" id="_ref_1667"><a href="#sec-definepropertyorthrow">DefinePropertyOrThrow</a></emu-xref>(<var>O</var>, <var>k</var>, PropertyDescriptor { [[Configurable]]: <emu-val>false</emu-val> }).</li></ol></li></ol></li><li>Else <var>level</var> is <code>"frozen"</code>,<ol><li>For each element <var>k</var> of <var>keys</var>, do<ol><li>Let <var>currentDesc</var> be ? <var>O</var>.[[GetOwnProperty]](<var>k</var>).</li><li>If <var>currentDesc</var> is not <emu-val>undefined</emu-val>, then<ol><li>If <emu-xref aoid="IsAccessorDescriptor" id="_ref_1668"><a href="#sec-isaccessordescriptor">IsAccessorDescriptor</a></emu-xref>(<var>currentDesc</var>) is <emu-val>true</emu-val>, then<ol><li>Let <var>desc</var> be the PropertyDescriptor { [[Configurable]]: <emu-val>false</emu-val> }.</li></ol></li><li>Else,<ol><li>Let <var>desc</var> be the PropertyDescriptor { [[Configurable]]: <emu-val>false</emu-val>, [[Writable]]: <emu-val>false</emu-val> }.</li></ol></li><li>Perform ? <emu-xref aoid="DefinePropertyOrThrow" id="_ref_1669"><a href="#sec-definepropertyorthrow">DefinePropertyOrThrow</a></emu-xref>(<var>O</var>, <var>k</var>, <var>desc</var>).</li></ol></li></ol></li></ol></li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-testintegritylevel" aoid="TestIntegrityLevel">
|
||
<h1><span class="secnum">7.3.15</span>TestIntegrityLevel ( <var>O</var>, <var>level</var> )</h1>
|
||
<p>The abstract operation TestIntegrityLevel is used to determine
|
||
if the set of own properties of an object are fixed. This abstract
|
||
operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1670"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1671"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1672"><a href="#assert">Assert</a></emu-xref>: <var>level</var> is either <code>"sealed"</code> or <code>"frozen"</code>.</li><li>Let <var>status</var> be ? <emu-xref aoid="IsExtensible" id="_ref_1673"><a href="#sec-isextensible-o">IsExtensible</a></emu-xref>(<var>O</var>).</li><li>If <var>status</var> is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li><li>NOTE: If the object is extensible, none of its properties are examined.</li><li>Let <var>keys</var> be ? <var>O</var>.[[OwnPropertyKeys]]().</li><li>For each element <var>k</var> of <var>keys</var>, do<ol><li>Let <var>currentDesc</var> be ? <var>O</var>.[[GetOwnProperty]](<var>k</var>).</li><li>If <var>currentDesc</var> is not <emu-val>undefined</emu-val>, then<ol><li>If <var>currentDesc</var>.[[Configurable]] is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>level</var> is <code>"frozen"</code> and <emu-xref aoid="IsDataDescriptor" id="_ref_1674"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>currentDesc</var>) is <emu-val>true</emu-val>, then<ol><li>If <var>currentDesc</var>.[[Writable]] is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li></ol></li></ol></li></ol></li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createarrayfromlist" aoid="CreateArrayFromList">
|
||
<h1><span class="secnum">7.3.16</span>CreateArrayFromList ( <var>elements</var> )</h1>
|
||
<p>The abstract operation CreateArrayFromList is used to create an Array object whose elements are provided by a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1675"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1676"><a href="#assert">Assert</a></emu-xref>: <var>elements</var> is a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1677"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> whose elements are all ECMAScript language values.</li><li>Let <var>array</var> be ! <emu-xref aoid="ArrayCreate" id="_ref_1678"><a href="#sec-arraycreate">ArrayCreate</a></emu-xref>(0).</li><li>Let <var>n</var> be 0.</li><li>For each element <var>e</var> of <var>elements</var>, do<ol><li>Let <var>status</var> be <emu-xref aoid="CreateDataProperty" id="_ref_1679"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>array</var>, ! <emu-xref aoid="ToString" id="_ref_1680"><a href="#sec-tostring">ToString</a></emu-xref>(<var>n</var>), <var>e</var>).</li><li><emu-xref href="#assert" id="_ref_1681"><a href="#assert">Assert</a></emu-xref>: <var>status</var> is <emu-val>true</emu-val>.</li><li>Increment <var>n</var> by 1.</li></ol></li><li>Return <var>array</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createlistfromarraylike" aoid="CreateListFromArrayLike">
|
||
<h1><span class="secnum">7.3.17</span>CreateListFromArrayLike ( <var>obj</var> [ , <var>elementTypes</var> ] )</h1>
|
||
<p>The abstract operation CreateListFromArrayLike is used to create a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1682"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> value whose elements are provided by the indexed properties of an array-like object, <var>obj</var>. The optional argument <var>elementTypes</var> is a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1683"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> containing the names of ECMAScript Language Types that are allowed for element values of the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1684"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> that is created. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li>If <var>elementTypes</var> is not present, set <var>elementTypes</var> to « Undefined, Null, Boolean, String, Symbol, Number, Object ».</li><li>If <emu-xref aoid="Type" id="_ref_1685"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>obj</var>) is not Object, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>len</var> be ? <emu-xref aoid="ToLength" id="_ref_1686"><a href="#sec-tolength">ToLength</a></emu-xref>(? <emu-xref aoid="Get" id="_ref_1687"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>obj</var>, <code>"length"</code>)).</li><li>Let <var>list</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1688"><a href="#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>indexName</var> be ! <emu-xref aoid="ToString" id="_ref_1689"><a href="#sec-tostring">ToString</a></emu-xref>(<var>index</var>).</li><li>Let <var>next</var> be ? <emu-xref aoid="Get" id="_ref_1690"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>obj</var>, <var>indexName</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1691"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>next</var>) is not an element of <var>elementTypes</var>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Append <var>next</var> as the last element of <var>list</var>.</li><li>Increase <var>index</var> by 1.</li></ol></li><li>Return <var>list</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-invoke" aoid="Invoke">
|
||
<h1><span class="secnum">7.3.18</span>Invoke ( <var>V</var>, <var>P</var> [ , <var>argumentsList</var> ] )</h1>
|
||
<p>The abstract operation Invoke is used to call a method property of an <emu-xref href="#sec-ecmascript-language-types" id="_ref_1692"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>. The operation is called with arguments <var>V</var>, <var>P</var>, and optionally <var>argumentsList</var> where <var>V</var> serves as both the lookup point for the property and the <emu-val>this</emu-val> value of the call, <var>P</var> is the property key, and <var>argumentsList</var> is the list of arguments values passed to the method. If <var>argumentsList</var> is not present, a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1693"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> is used as its value. This abstract operation performs the following steps:</p>
|
||
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1694"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_1695"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>If <var>argumentsList</var> is not present, set <var>argumentsList</var> to a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1696"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>func</var> be ? <emu-xref aoid="GetV" id="_ref_1697"><a href="#sec-getv">GetV</a></emu-xref>(<var>V</var>, <var>P</var>).</li><li>Return ? <emu-xref aoid="Call" id="_ref_1698"><a href="#sec-call">Call</a></emu-xref>(<var>func</var>, <var>V</var>, <var>argumentsList</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinaryhasinstance" aoid="OrdinaryHasInstance">
|
||
<h1><span class="secnum">7.3.19</span>OrdinaryHasInstance ( <var>C</var>, <var>O</var> )</h1>
|
||
<p>The abstract operation OrdinaryHasInstance implements the default algorithm for determining if an object <var>O</var> inherits from the instance object inheritance path provided by <emu-xref href="#constructor" id="_ref_1699"><a href="#constructor">constructor</a></emu-xref> <var>C</var>. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li>If <emu-xref aoid="IsCallable" id="_ref_1700"><a href="#sec-iscallable">IsCallable</a></emu-xref>(<var>C</var>) is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>C</var> has a [[BoundTargetFunction]] internal slot, then<ol><li>Let <var>BC</var> be <var>C</var>.[[BoundTargetFunction]].</li><li>Return ? <emu-xref aoid="InstanceofOperator" id="_ref_1701"><a href="#sec-instanceofoperator">InstanceofOperator</a></emu-xref>(<var>O</var>, <var>BC</var>).</li></ol></li><li>If <emu-xref aoid="Type" id="_ref_1702"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is not Object, return <emu-val>false</emu-val>.</li><li>Let <var>P</var> be ? <emu-xref aoid="Get" id="_ref_1703"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>C</var>, <code>"prototype"</code>).</li><li>If <emu-xref aoid="Type" id="_ref_1704"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>P</var>) is not Object, throw a <emu-val>TypeError</emu-val> exception.</li><li>Repeat,<ol><li>Set <var>O</var> to ? <var>O</var>.[[GetPrototypeOf]]().</li><li>If <var>O</var> is <emu-val>null</emu-val>, return <emu-val>false</emu-val>.</li><li>If <emu-xref aoid="SameValue" id="_ref_1705"><a href="#sec-samevalue">SameValue</a></emu-xref>(<var>P</var>, <var>O</var>) is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.
|
||
</li></ol></li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-speciesconstructor" aoid="SpeciesConstructor">
|
||
<h1><span class="secnum">7.3.20</span>SpeciesConstructor ( <var>O</var>, <var>defaultConstructor</var> )</h1>
|
||
<p>The abstract operation SpeciesConstructor is used to retrieve the <emu-xref href="#constructor" id="_ref_1706"><a href="#constructor">constructor</a></emu-xref> that should be used to create new objects that are derived from the argument object <var>O</var>. The <var>defaultConstructor</var> argument is the <emu-xref href="#constructor" id="_ref_1707"><a href="#constructor">constructor</a></emu-xref> to use if a <emu-xref href="#constructor" id="_ref_1708"><a href="#constructor">constructor</a></emu-xref> @@species property cannot be found starting from <var>O</var>. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1709"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1710"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li>Let <var>C</var> be ? <emu-xref aoid="Get" id="_ref_1711"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <code>"constructor"</code>).</li><li>If <var>C</var> is <emu-val>undefined</emu-val>, return <var>defaultConstructor</var>.</li><li>If <emu-xref aoid="Type" id="_ref_1712"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>C</var>) is not Object, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>S</var> be ? <emu-xref aoid="Get" id="_ref_1713"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>C</var>, @@species).</li><li>If <var>S</var> is either <emu-val>undefined</emu-val> or <emu-val>null</emu-val>, return <var>defaultConstructor</var>.</li><li>If <emu-xref aoid="IsConstructor" id="_ref_1714"><a href="#sec-isconstructor">IsConstructor</a></emu-xref>(<var>S</var>) is <emu-val>true</emu-val>, return <var>S</var>.</li><li>Throw a <emu-val>TypeError</emu-val> exception.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-enumerableownpropertynames" aoid="EnumerableOwnPropertyNames" oldids="sec-enumerableownproperties">
|
||
<span id="sec-enumerableownproperties"></span><h1><span class="secnum">7.3.21</span>EnumerableOwnPropertyNames ( <var>O</var>, <var>kind</var> )</h1>
|
||
<p>When the abstract operation EnumerableOwnPropertyNames is called with Object <var>O</var> and String <var>kind</var> the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1715"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1716"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li>Let <var>ownKeys</var> be ? <var>O</var>.[[OwnPropertyKeys]]().</li><li>Let <var>properties</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1717"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>For each element <var>key</var> of <var>ownKeys</var> in <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1718"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> order, do<ol><li>If <emu-xref aoid="Type" id="_ref_1719"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>key</var>) is String, then<ol><li>Let <var>desc</var> be ? <var>O</var>.[[GetOwnProperty]](<var>key</var>).</li><li>If <var>desc</var> is not <emu-val>undefined</emu-val> and <var>desc</var>.[[Enumerable]] is <emu-val>true</emu-val>, then<ol><li>If <var>kind</var> is <emu-val>"key"</emu-val>, append <var>key</var> to <var>properties</var>.</li><li>Else,<ol><li>Let <var>value</var> be ? <emu-xref aoid="Get" id="_ref_1720"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>O</var>, <var>key</var>).</li><li>If <var>kind</var> is <emu-val>"value"</emu-val>, append <var>value</var> to <var>properties</var>.</li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_1721"><a href="#assert">Assert</a></emu-xref>: <var>kind</var> is <emu-val>"key+value"</emu-val>.</li><li>Let <var>entry</var> be <emu-xref aoid="CreateArrayFromList" id="_ref_1722"><a href="#sec-createarrayfromlist">CreateArrayFromList</a></emu-xref>(« <var>key</var>, <var>value</var> »).</li><li>Append <var>entry</var> to <var>properties</var>.</li></ol></li></ol></li></ol></li></ol></li></ol></li><li>Order the elements of <var>properties</var> so they are in the same relative order as would be produced by the Iterator that would be returned if the <emu-xref aoid="EnumerateObjectProperties" id="_ref_1723"><a href="#sec-enumerate-object-properties">EnumerateObjectProperties</a></emu-xref> internal method were invoked with <var>O</var>.</li><li>Return <var>properties</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getfunctionrealm" aoid="GetFunctionRealm">
|
||
<h1><span class="secnum">7.3.22</span>GetFunctionRealm ( <var>obj</var> )</h1>
|
||
<p>The abstract operation GetFunctionRealm with argument <var>obj</var> performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1724"><a href="#assert">Assert</a></emu-xref>: <var>obj</var> is a callable object.</li><li>If <var>obj</var> has a [[Realm]] internal slot, then<ol><li>Return <var>obj</var>.[[Realm]].</li></ol></li><li>If <var>obj</var> is a Bound Function <emu-xref href="#exotic-object" id="_ref_1725"><a href="#exotic-object">exotic object</a></emu-xref>, then<ol><li>Let <var>target</var> be <var>obj</var>.[[BoundTargetFunction]].</li><li>Return ? <emu-xref aoid="GetFunctionRealm" id="_ref_1726"><a href="#sec-getfunctionrealm">GetFunctionRealm</a></emu-xref>(<var>target</var>).</li></ol></li><li>If <var>obj</var> is a Proxy <emu-xref href="#exotic-object" id="_ref_1727"><a href="#exotic-object">exotic object</a></emu-xref>, then<ol><li>If <var>obj</var>.[[ProxyHandler]] is <emu-val>null</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>proxyTarget</var> be <var>obj</var>.[[ProxyTarget]].</li><li>Return ? <emu-xref aoid="GetFunctionRealm" id="_ref_1728"><a href="#sec-getfunctionrealm">GetFunctionRealm</a></emu-xref>(<var>proxyTarget</var>).</li></ol></li><li>Return <emu-xref href="#current-realm" id="_ref_1729"><a href="#current-realm">the current Realm Record</a></emu-xref>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Step 5 will only be reached if <var>obj</var> is a non-standard function <emu-xref href="#exotic-object" id="_ref_1730"><a href="#exotic-object">exotic object</a></emu-xref> that does not have a [[Realm]] internal slot.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-copydataproperties" aoid="CopyDataProperties">
|
||
<h1><span class="secnum">7.3.23</span>CopyDataProperties ( <var>target</var>, <var>source</var>, <var>excludedItems</var> )</h1>
|
||
<p>When the abstract operation CopyDataProperties is called with arguments <var>target</var>, <var>source</var>, and <var>excludedItems</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1731"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1732"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>target</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1733"><a href="#assert">Assert</a></emu-xref>: <var>excludedItems</var> is a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1734"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of property keys.</li><li>If <var>source</var> is <emu-val>undefined</emu-val> or <emu-val>null</emu-val>, return <var>target</var>.</li><li>Let <var>from</var> be ! <emu-xref aoid="ToObject" id="_ref_1735"><a href="#sec-toobject">ToObject</a></emu-xref>(<var>source</var>).</li><li>Let <var>keys</var> be ? <var>from</var>.[[OwnPropertyKeys]]().</li><li>For each element <var>nextKey</var> of <var>keys</var> in <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1736"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> order, do<ol><li>Let <var>excluded</var> be <emu-val>false</emu-val>.</li><li>For each element <var>e</var> of <var>excludedItems</var> in <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1737"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> order, do<ol><li>If <emu-xref aoid="SameValue" id="_ref_1738"><a href="#sec-samevalue">SameValue</a></emu-xref>(<var>e</var>, <var>nextKey</var>) is <emu-val>true</emu-val>, then<ol><li>Set <var>excluded</var> to <emu-val>true</emu-val>.</li></ol></li></ol></li><li>If <var>excluded</var> is <emu-val>false</emu-val>, then<ol><li>Let <var>desc</var> be ? <var>from</var>.[[GetOwnProperty]](<var>nextKey</var>).</li><li>If <var>desc</var> is not <emu-val>undefined</emu-val> and <var>desc</var>.[[Enumerable]] is <emu-val>true</emu-val>, then<ol><li>Let <var>propValue</var> be ? <emu-xref aoid="Get" id="_ref_1739"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>from</var>, <var>nextKey</var>).</li><li>Perform ! <emu-xref aoid="CreateDataProperty" id="_ref_1740"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>target</var>, <var>nextKey</var>, <var>propValue</var>).</li></ol></li></ol></li></ol></li><li>Return <var>target</var>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The target passed in here is always a newly created object which is not directly accessible in case of an error being thrown.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-operations-on-iterator-objects">
|
||
<h1><span class="secnum">7.4</span>Operations on Iterator Objects</h1>
|
||
<p>See Common Iteration Interfaces (<emu-xref href="#sec-iteration" id="_ref_151"><a href="#sec-iteration">25.1</a></emu-xref>).</p>
|
||
|
||
<emu-clause id="sec-getiterator" aoid="GetIterator">
|
||
<h1><span class="secnum">7.4.1</span>GetIterator ( <var>obj</var> [ , <var>hint</var> [ , <var>method</var> ] ] )</h1>
|
||
<p>The abstract operation GetIterator with argument <var>obj</var> and optional arguments <var>hint</var> and <var>method</var> performs the following steps:</p>
|
||
<emu-alg><ol><li>If <var>hint</var> is not present, set <var>hint</var> to <emu-const>sync</emu-const>.</li><li><emu-xref href="#assert" id="_ref_1741"><a href="#assert">Assert</a></emu-xref>: <var>hint</var> is either <emu-const>sync</emu-const> or <emu-const>async</emu-const>.</li><li>If <var>method</var> is not present, then<ol><li>If <var>hint</var> is <emu-const>async</emu-const>, then<ol><li>Set <var>method</var> to ? <emu-xref aoid="GetMethod" id="_ref_1742"><a href="#sec-getmethod">GetMethod</a></emu-xref>(<var>obj</var>, @@asyncIterator).</li><li>If <var>method</var> is <emu-val>undefined</emu-val>, then<ol><li>Let <var>syncMethod</var> be ? <emu-xref aoid="GetMethod" id="_ref_1743"><a href="#sec-getmethod">GetMethod</a></emu-xref>(<var>obj</var>, @@iterator).</li><li>Let <var>syncIteratorRecord</var> be ? <emu-xref aoid="GetIterator" id="_ref_1744"><a href="#sec-getiterator">GetIterator</a></emu-xref>(<var>obj</var>, <emu-const>sync</emu-const>, <var>syncMethod</var>).</li><li>Return ? <emu-xref aoid="CreateAsyncFromSyncIterator" id="_ref_1745"><a href="#sec-createasyncfromsynciterator">CreateAsyncFromSyncIterator</a></emu-xref>(<var>syncIteratorRecord</var>).</li></ol></li></ol></li><li>Otherwise, set <var>method</var> to ? <emu-xref aoid="GetMethod" id="_ref_1746"><a href="#sec-getmethod">GetMethod</a></emu-xref>(<var>obj</var>, @@iterator).</li></ol></li><li>Let <var>iterator</var> be ? <emu-xref aoid="Call" id="_ref_1747"><a href="#sec-call">Call</a></emu-xref>(<var>method</var>, <var>obj</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1748"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>iterator</var>) is not Object, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>nextMethod</var> be ? <emu-xref aoid="GetV" id="_ref_1749"><a href="#sec-getv">GetV</a></emu-xref>(<var>iterator</var>, <code>"next"</code>).</li><li>Let <var>iteratorRecord</var> be <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1750"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> { [[Iterator]]: <var>iterator</var>, [[NextMethod]]: <var>nextMethod</var>, [[Done]]: <emu-val>false</emu-val> }.</li><li>Return <var>iteratorRecord</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-iteratornext" aoid="IteratorNext">
|
||
<h1><span class="secnum">7.4.2</span>IteratorNext ( <var>iteratorRecord</var> [ , <var>value</var> ] )</h1>
|
||
<p>The abstract operation IteratorNext with argument <var>iteratorRecord</var> and optional argument <var>value</var> performs the following steps:</p>
|
||
<emu-alg><ol><li>If <var>value</var> is not present, then<ol><li>Let <var>result</var> be ? <emu-xref aoid="Call" id="_ref_1751"><a href="#sec-call">Call</a></emu-xref>(<var>iteratorRecord</var>.[[NextMethod]], <var>iteratorRecord</var>.[[Iterator]], « »).</li></ol></li><li>Else,<ol><li>Let <var>result</var> be ? <emu-xref aoid="Call" id="_ref_1752"><a href="#sec-call">Call</a></emu-xref>(<var>iteratorRecord</var>.[[NextMethod]], <var>iteratorRecord</var>.[[Iterator]], « <var>value</var> »).</li></ol></li><li>If <emu-xref aoid="Type" id="_ref_1753"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>result</var>) is not Object, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <var>result</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-iteratorcomplete" aoid="IteratorComplete">
|
||
<h1><span class="secnum">7.4.3</span>IteratorComplete ( <var>iterResult</var> )</h1>
|
||
<p>The abstract operation IteratorComplete with argument <var>iterResult</var> performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1754"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1755"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>iterResult</var>) is Object.</li><li>Return <emu-xref aoid="ToBoolean" id="_ref_1756"><a href="#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Get" id="_ref_1757"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>iterResult</var>, <code>"done"</code>)).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-iteratorvalue" aoid="IteratorValue">
|
||
<h1><span class="secnum">7.4.4</span>IteratorValue ( <var>iterResult</var> )</h1>
|
||
<p>The abstract operation IteratorValue with argument <var>iterResult</var> performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1758"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1759"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>iterResult</var>) is Object.</li><li>Return ? <emu-xref aoid="Get" id="_ref_1760"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>iterResult</var>, <code>"value"</code>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-iteratorstep" aoid="IteratorStep">
|
||
<h1><span class="secnum">7.4.5</span>IteratorStep ( <var>iteratorRecord</var> )</h1>
|
||
<p>The abstract operation IteratorStep with argument <var>iteratorRecord</var> requests the next value from <var>iteratorRecord</var>.[[Iterator]] by calling <var>iteratorRecord</var>.[[NextMethod]] and returns either <emu-val>false</emu-val>
|
||
indicating that the iterator has reached its end or the IteratorResult
|
||
object if a next value is available. IteratorStep performs the following
|
||
steps:</p>
|
||
<emu-alg><ol><li>Let <var>result</var> be ? <emu-xref aoid="IteratorNext" id="_ref_1761"><a href="#sec-iteratornext">IteratorNext</a></emu-xref>(<var>iteratorRecord</var>).</li><li>Let <var>done</var> be ? <emu-xref aoid="IteratorComplete" id="_ref_1762"><a href="#sec-iteratorcomplete">IteratorComplete</a></emu-xref>(<var>result</var>).</li><li>If <var>done</var> is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li><li>Return <var>result</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-iteratorclose" aoid="IteratorClose">
|
||
<h1><span class="secnum">7.4.6</span>IteratorClose ( <var>iteratorRecord</var>, <var>completion</var> )</h1>
|
||
<p>The abstract operation IteratorClose with arguments <var>iteratorRecord</var> and <var>completion</var>
|
||
is used to notify an iterator that it should perform any actions it
|
||
would normally perform when it has reached its completed state:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1763"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1764"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>iteratorRecord</var>.[[Iterator]]) is Object.</li><li><emu-xref href="#assert" id="_ref_1765"><a href="#assert">Assert</a></emu-xref>: <var>completion</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_1766"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>.</li><li>Let <var>iterator</var> be <var>iteratorRecord</var>.[[Iterator]].</li><li>Let <var>return</var> be ? <emu-xref aoid="GetMethod" id="_ref_1767"><a href="#sec-getmethod">GetMethod</a></emu-xref>(<var>iterator</var>, <code>"return"</code>).</li><li>If <var>return</var> is <emu-val>undefined</emu-val>, return <emu-xref aoid="Completion" id="_ref_1768"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>(<var>completion</var>).</li><li>Let <var>innerResult</var> be <emu-xref aoid="Call" id="_ref_1769"><a href="#sec-call">Call</a></emu-xref>(<var>return</var>, <var>iterator</var>, « »).</li><li>If <var>completion</var>.[[Type]] is <emu-const>throw</emu-const>, return <emu-xref aoid="Completion" id="_ref_1770"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>(<var>completion</var>).</li><li>If <var>innerResult</var>.[[Type]] is <emu-const>throw</emu-const>, return <emu-xref aoid="Completion" id="_ref_1771"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>(<var>innerResult</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1772"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>innerResult</var>.[[Value]]) is not Object, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <emu-xref aoid="Completion" id="_ref_1773"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>(<var>completion</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-asynciteratorclose" aoid="AsyncIteratorClose">
|
||
<h1><span class="secnum">7.4.7</span>AsyncIteratorClose ( <var>iteratorRecord</var>, <var>completion</var> )</h1>
|
||
<p>The abstract operation AsyncIteratorClose with arguments <var>iteratorRecord</var> and <var>completion</var>
|
||
is used to notify an async iterator that it should perform any actions
|
||
it would normally perform when it has reached its completed state:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1774"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1775"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>iteratorRecord</var>.[[Iterator]]) is Object.</li><li><emu-xref href="#assert" id="_ref_1776"><a href="#assert">Assert</a></emu-xref>: <var>completion</var> is a <emu-xref href="#sec-completion-record-specification-type" id="_ref_1777"><a href="#sec-completion-record-specification-type">Completion Record</a></emu-xref>.</li><li>Let <var>iterator</var> be <var>iteratorRecord</var>.[[Iterator]].</li><li>Let <var>return</var> be ? <emu-xref aoid="GetMethod" id="_ref_1778"><a href="#sec-getmethod">GetMethod</a></emu-xref>(<var>iterator</var>, <code>"return"</code>).</li><li>If <var>return</var> is <emu-val>undefined</emu-val>, return <emu-xref aoid="Completion" id="_ref_1779"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>(<var>completion</var>).</li><li>Let <var>innerResult</var> be <emu-xref aoid="Call" id="_ref_1780"><a href="#sec-call">Call</a></emu-xref>(<var>return</var>, <var>iterator</var>, « »).</li><li>If <var>innerResult</var>.[[Type]] is <emu-const>normal</emu-const>, set <var>innerResult</var> to <emu-xref aoid="Await" id="_ref_1781"><a href="#await">Await</a></emu-xref>(<var>innerResult</var>.[[Value]]).</li><li>If <var>completion</var>.[[Type]] is <emu-const>throw</emu-const>, return <emu-xref aoid="Completion" id="_ref_1782"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>(<var>completion</var>).</li><li>If <var>innerResult</var>.[[Type]] is <emu-const>throw</emu-const>, return <emu-xref aoid="Completion" id="_ref_1783"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>(<var>innerResult</var>).</li><li>If <emu-xref aoid="Type" id="_ref_1784"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>innerResult</var>.[[Value]]) is not Object, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <emu-xref aoid="Completion" id="_ref_1785"><a href="#sec-completion-record-specification-type">Completion</a></emu-xref>(<var>completion</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createiterresultobject" aoid="CreateIterResultObject">
|
||
<h1><span class="secnum">7.4.8</span>CreateIterResultObject ( <var>value</var>, <var>done</var> )</h1>
|
||
<p>The abstract operation CreateIterResultObject with arguments <var>value</var> and <var>done</var> creates an object that supports the IteratorResult interface by performing the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_1786"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1787"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>done</var>) is Boolean.</li><li>Let <var>obj</var> be <emu-xref aoid="ObjectCreate" id="_ref_1788"><a href="#sec-objectcreate">ObjectCreate</a></emu-xref>(<emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_1789"><a href="#sec-properties-of-the-object-prototype-object">%ObjectPrototype%</a></emu-xref>).</li><li>Perform <emu-xref aoid="CreateDataProperty" id="_ref_1790"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>obj</var>, <code>"value"</code>, <var>value</var>).</li><li>Perform <emu-xref aoid="CreateDataProperty" id="_ref_1791"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>obj</var>, <code>"done"</code>, <var>done</var>).</li><li>Return <var>obj</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createlistiteratorRecord" oldids="sec-createlistiterator" aoid="CreateListIteratorRecord">
|
||
<span id="sec-createlistiterator"></span><h1><span class="secnum">7.4.9</span>CreateListIteratorRecord ( <var>list</var> )</h1>
|
||
<p>The abstract operation CreateListIteratorRecord with argument <var>list</var> creates an Iterator (<emu-xref href="#sec-iterator-interface" id="_ref_152"><a href="#sec-iterator-interface">25.1.1.2</a></emu-xref>) object record whose next method returns the successive elements of <var>list</var>. It performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>iterator</var> be <emu-xref aoid="ObjectCreate" id="_ref_1792"><a href="#sec-objectcreate">ObjectCreate</a></emu-xref>(<emu-xref href="#sec-%iteratorprototype%-object" id="_ref_1793"><a href="#sec-%iteratorprototype%-object">%IteratorPrototype%</a></emu-xref>, « [[IteratedList]], [[ListIteratorNextIndex]] »).</li><li>Set <var>iterator</var>.[[IteratedList]] to <var>list</var>.</li><li>Set <var>iterator</var>.[[ListIteratorNextIndex]] to 0.</li><li>Let <var>steps</var> be the algorithm steps defined in ListIterator <code>next</code> (<emu-xref href="#sec-listiterator-next" id="_ref_153"><a href="#sec-listiterator-next">7.4.9.1</a></emu-xref>).</li><li>Let <var>next</var> be <emu-xref aoid="CreateBuiltinFunction" id="_ref_1794"><a href="#sec-createbuiltinfunction">CreateBuiltinFunction</a></emu-xref>(<var>steps</var>, « »).</li><li>Return <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1795"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> { [[Iterator]]: <var>iterator</var>, [[NextMethod]]: <var>next</var>, [[Done]]: <emu-val>false</emu-val> }.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The list iterator object is never directly accessible to ECMAScript code.</p>
|
||
</div></emu-note>
|
||
|
||
<emu-clause id="sec-listiterator-next">
|
||
<h1><span class="secnum">7.4.9.1</span>ListIterator next ( )</h1>
|
||
<p>The ListIterator <code>next</code> method is a standard built-in <emu-xref href="#function-object" id="_ref_1796"><a href="#function-object">function object</a></emu-xref> (clause <emu-xref href="#sec-ecmascript-standard-built-in-objects" id="_ref_154"><a href="#sec-ecmascript-standard-built-in-objects">17</a></emu-xref>) that performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>O</var> be the <emu-val>this</emu-val> value.</li><li><emu-xref href="#assert" id="_ref_1797"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1798"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>O</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_1799"><a href="#assert">Assert</a></emu-xref>: <var>O</var> has an [[IteratedList]] internal slot.</li><li>Let <var>list</var> be <var>O</var>.[[IteratedList]].</li><li>Let <var>index</var> be <var>O</var>.[[ListIteratorNextIndex]].</li><li>Let <var>len</var> be the number of elements of <var>list</var>.</li><li>If <var>index</var> ≥ <var>len</var>, then<ol><li>Return <emu-xref aoid="CreateIterResultObject" id="_ref_1800"><a href="#sec-createiterresultobject">CreateIterResultObject</a></emu-xref>(<emu-val>undefined</emu-val>, <emu-val>true</emu-val>).</li></ol></li><li>Set <var>O</var>.[[ListIteratorNextIndex]] to <var>index</var> + 1.</li><li>Return <emu-xref aoid="CreateIterResultObject" id="_ref_1801"><a href="#sec-createiterresultobject">CreateIterResultObject</a></emu-xref>(<var>list</var>[<var>index</var>], <emu-val>false</emu-val>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-executable-code-and-execution-contexts">
|
||
<h1><span class="secnum">8</span>Executable Code and Execution Contexts</h1>
|
||
|
||
<emu-clause id="sec-lexical-environments">
|
||
<h1><span class="secnum">8.1</span>Lexical Environments</h1>
|
||
<p>A <dfn>Lexical Environment</dfn> is a specification type used to define the association of <emu-nt id="_ref_9020"><a href="#prod-Identifier">Identifier</a></emu-nt>s
|
||
to specific variables and functions based upon the lexical nesting
|
||
structure of ECMAScript code. A Lexical Environment consists of an <emu-xref href="#sec-environment-records" id="_ref_1802"><a href="#sec-environment-records">Environment Record</a></emu-xref> and a possibly null reference to an <em>outer</em>
|
||
Lexical Environment. Usually a Lexical Environment is associated with
|
||
some specific syntactic structure of ECMAScript code such as a <emu-nt id="_ref_9021"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>, a <emu-nt id="_ref_9022"><a href="#prod-BlockStatement">BlockStatement</a></emu-nt>, or a <emu-nt id="_ref_9023"><a href="#prod-Catch">Catch</a></emu-nt> clause of a <emu-nt id="_ref_9024"><a href="#prod-TryStatement">TryStatement</a></emu-nt> and a new Lexical Environment is created each time such code is evaluated.</p>
|
||
<p>An <emu-xref href="#sec-environment-records" id="_ref_1803"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
records the identifier bindings that are created within the scope of
|
||
its associated Lexical Environment. It is referred to as the Lexical
|
||
Environment's <dfn>EnvironmentRecord</dfn>.</p>
|
||
<p>The outer environment reference is used to model the logical
|
||
nesting of Lexical Environment values. The outer reference of a (inner)
|
||
Lexical Environment is a reference to the Lexical Environment that
|
||
logically surrounds the inner Lexical Environment. An outer Lexical
|
||
Environment may, of course, have its own outer Lexical Environment. A
|
||
Lexical Environment may serve as the outer environment for multiple
|
||
inner Lexical Environments. For example, if a <emu-nt id="_ref_9025"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt> contains two nested <emu-nt id="_ref_9026"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>s
|
||
then the Lexical Environments of each of the nested functions will have
|
||
as their outer Lexical Environment the Lexical Environment of the
|
||
current evaluation of the surrounding function.</p>
|
||
<p>A <dfn id="global-environment">global environment</dfn> is a Lexical Environment which does not have an outer environment. The <emu-xref href="#global-environment" id="_ref_1804"><a href="#global-environment">global environment</a></emu-xref>'s outer environment reference is <emu-val>null</emu-val>. A <emu-xref href="#global-environment" id="_ref_1805"><a href="#global-environment">global environment</a></emu-xref>'s EnvironmentRecord may be prepopulated with identifier bindings and includes an associated <emu-xref href="#sec-global-object" id="_ref_1806"><a href="#sec-global-object">global object</a></emu-xref> whose properties provide some of the <emu-xref href="#global-environment" id="_ref_1807"><a href="#global-environment">global environment</a></emu-xref>'s identifier bindings. As ECMAScript code is executed, additional properties may be added to the <emu-xref href="#sec-global-object" id="_ref_1808"><a href="#sec-global-object">global object</a></emu-xref> and the initial properties may be modified.</p>
|
||
<p>A <dfn id="module-environment">module environment</dfn> is a Lexical Environment that contains the bindings for the top level declarations of a <emu-nt id="_ref_9027"><a href="#prod-Module">Module</a></emu-nt>. It also contains the bindings that are explicitly imported by the <emu-nt id="_ref_9028"><a href="#prod-Module">Module</a></emu-nt>. The outer environment of a <emu-xref href="#module-environment" id="_ref_1809"><a href="#module-environment">module environment</a></emu-xref> is a <emu-xref href="#global-environment" id="_ref_1810"><a href="#global-environment">global environment</a></emu-xref>.</p>
|
||
<p>A <dfn id="function-environment">function environment</dfn> is a Lexical Environment that corresponds to the invocation of an ECMAScript <emu-xref href="#function-object" id="_ref_1811"><a href="#function-object">function object</a></emu-xref>. A <emu-xref href="#function-environment" id="_ref_1812"><a href="#function-environment">function environment</a></emu-xref> may establish a new <code>this</code> binding. A <emu-xref href="#function-environment" id="_ref_1813"><a href="#function-environment">function environment</a></emu-xref> also captures the state necessary to support <code>super</code> method invocations.</p>
|
||
<p>Lexical Environments and <emu-xref href="#sec-environment-records" id="_ref_1814"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
values are purely specification mechanisms and need not correspond to
|
||
any specific artefact of an ECMAScript implementation. It is impossible
|
||
for an ECMAScript program to directly access or manipulate such values.</p>
|
||
|
||
<emu-clause id="sec-environment-records">
|
||
<h1><span class="secnum">8.1.1</span>Environment Records</h1>
|
||
<p>There are two primary kinds of <dfn>Environment Record</dfn> values used in this specification: <em>declarative Environment Records</em> and <em>object Environment Records</em>. Declarative Environment Records are used to define the effect of ECMAScript language syntactic elements such as <emu-nt id="_ref_9029"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>s, <emu-nt id="_ref_9030"><a href="#prod-VariableDeclaration">VariableDeclaration</a></emu-nt>s, and <emu-nt id="_ref_9031"><a href="#prod-Catch">Catch</a></emu-nt>
|
||
clauses that directly associate identifier bindings with ECMAScript
|
||
language values. Object Environment Records are used to define the
|
||
effect of ECMAScript elements such as <emu-nt id="_ref_9032"><a href="#prod-WithStatement">WithStatement</a></emu-nt>
|
||
that associate identifier bindings with the properties of some object.
|
||
Global Environment Records and function Environment Records are
|
||
specializations that are used for specifically for <emu-nt id="_ref_9033"><a href="#prod-Script">Script</a></emu-nt> global declarations and for top-level declarations within functions.</p>
|
||
<p>For specification purposes Environment Record values are values of the <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1815"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref>
|
||
specification type and can be thought of as existing in a simple
|
||
object-oriented hierarchy where Environment Record is an abstract class
|
||
with three concrete subclasses, declarative Environment Record, object
|
||
Environment Record, and global Environment Record. Function Environment
|
||
Records and module Environment Records are subclasses of declarative
|
||
Environment Record. The abstract class includes the abstract
|
||
specification methods defined in <emu-xref href="#table-15" id="_ref_155"><a href="#table-15">Table 14</a></emu-xref>. These abstract methods have distinct concrete algorithms for each of the concrete subclasses.</p>
|
||
<emu-table id="table-15" caption="Abstract Methods of Environment Records"><figure><figcaption>Table 14: Abstract Methods of Environment Records</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Method
|
||
|
||
</th>
|
||
<th>
|
||
Purpose
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
HasBinding(N)
|
||
|
||
</td>
|
||
<td>
|
||
Determine if an <emu-xref href="#sec-environment-records" id="_ref_1816"><a href="#sec-environment-records">Environment Record</a></emu-xref> has a binding for the String value <var>N</var>. Return <emu-val>true</emu-val> if it does and <emu-val>false</emu-val> if it does not.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
CreateMutableBinding(N, D)
|
||
|
||
</td>
|
||
<td>
|
||
Create a new but uninitialized mutable binding in an <emu-xref href="#sec-environment-records" id="_ref_1817"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The String value <var>N</var> is the text of the bound name. If the Boolean argument <var>D</var> is <emu-val>true</emu-val> the binding may be subsequently deleted.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
CreateImmutableBinding(N, S)
|
||
|
||
</td>
|
||
<td>
|
||
Create a new but uninitialized immutable binding in an <emu-xref href="#sec-environment-records" id="_ref_1818"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The String value <var>N</var> is the text of the bound name. If <var>S</var> is <emu-val>true</emu-val>
|
||
then attempts to set it after it has been initialized will always throw
|
||
an exception, regardless of the strict mode setting of operations that
|
||
reference that binding.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
InitializeBinding(N, V)
|
||
|
||
</td>
|
||
<td>
|
||
Set the value of an already existing but uninitialized binding in an <emu-xref href="#sec-environment-records" id="_ref_1819"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The String value <var>N</var> is the text of the bound name. <var>V</var> is the value for the binding and is a value of any <emu-xref href="#sec-ecmascript-language-types" id="_ref_1820"><a href="#sec-ecmascript-language-types">ECMAScript language type</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
SetMutableBinding(N, V, S)
|
||
|
||
</td>
|
||
<td>
|
||
Set the value of an already existing mutable binding in an <emu-xref href="#sec-environment-records" id="_ref_1821"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The String value <var>N</var> is the text of the bound name. <var>V</var> is the value for the binding and may be a value of any <emu-xref href="#sec-ecmascript-language-types" id="_ref_1822"><a href="#sec-ecmascript-language-types">ECMAScript language type</a></emu-xref>. <var>S</var> is a Boolean flag. If <var>S</var> is <emu-val>true</emu-val> and the binding cannot be set throw a <emu-val>TypeError</emu-val> exception.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
GetBindingValue(N, S)
|
||
|
||
</td>
|
||
<td>
|
||
Returns the value of an already existing binding from an <emu-xref href="#sec-environment-records" id="_ref_1823"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The String value <var>N</var> is the text of the bound name. <var>S</var> is used to identify references originating in <emu-xref href="#sec-strict-mode-code" id="_ref_1824"><a href="#sec-strict-mode-code">strict mode code</a></emu-xref> or that otherwise require strict mode reference semantics. If <var>S</var> is <emu-val>true</emu-val> and the binding does not exist throw a <emu-val>ReferenceError</emu-val> exception. If the binding exists but is uninitialized a <emu-val>ReferenceError</emu-val> is thrown, regardless of the value of <var>S</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
DeleteBinding(N)
|
||
|
||
</td>
|
||
<td>
|
||
Delete a binding from an <emu-xref href="#sec-environment-records" id="_ref_1825"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The String value <var>N</var> is the text of the bound name. If a binding for <var>N</var> exists, remove the binding and return <emu-val>true</emu-val>. If the binding exists but cannot be removed return <emu-val>false</emu-val>. If the binding does not exist return <emu-val>true</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
HasThisBinding()
|
||
|
||
</td>
|
||
<td>
|
||
Determine if an <emu-xref href="#sec-environment-records" id="_ref_1826"><a href="#sec-environment-records">Environment Record</a></emu-xref> establishes a <code>this</code> binding. Return <emu-val>true</emu-val> if it does and <emu-val>false</emu-val> if it does not.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
HasSuperBinding()
|
||
|
||
</td>
|
||
<td>
|
||
Determine if an <emu-xref href="#sec-environment-records" id="_ref_1827"><a href="#sec-environment-records">Environment Record</a></emu-xref> establishes a <code>super</code> method binding. Return <emu-val>true</emu-val> if it does and <emu-val>false</emu-val> if it does not.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
WithBaseObject()
|
||
|
||
</td>
|
||
<td>
|
||
If this <emu-xref href="#sec-environment-records" id="_ref_1828"><a href="#sec-environment-records">Environment Record</a></emu-xref> is associated with a <code>with</code> statement, return the with object. Otherwise, return <emu-val>undefined</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
|
||
<emu-clause id="sec-declarative-environment-records">
|
||
<h1><span class="secnum">8.1.1.1</span>Declarative Environment Records</h1>
|
||
<p>Each declarative <emu-xref href="#sec-environment-records" id="_ref_1829"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
is associated with an ECMAScript program scope containing variable,
|
||
constant, let, class, module, import, and/or function declarations. A
|
||
declarative <emu-xref href="#sec-environment-records" id="_ref_1830"><a href="#sec-environment-records">Environment Record</a></emu-xref> binds the set of identifiers defined by the declarations contained within its scope.</p>
|
||
<p>The behaviour of the concrete specification methods for declarative Environment Records is defined by the following algorithms.</p>
|
||
|
||
<emu-clause id="sec-declarative-environment-records-hasbinding-n">
|
||
<h1><span class="secnum">8.1.1.1.1</span>HasBinding ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1831"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method HasBinding for declarative Environment Records simply determines
|
||
if the argument identifier is one of the identifiers bound by the
|
||
record:</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the declarative <emu-xref href="#sec-environment-records" id="_ref_1832"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>If <var>envRec</var> has a binding for the name that is the value of <var>N</var>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-declarative-environment-records-createmutablebinding-n-d">
|
||
<h1><span class="secnum">8.1.1.1.2</span>CreateMutableBinding ( <var>N</var>, <var>D</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1833"><a href="#sec-environment-records">Environment Record</a></emu-xref> method CreateMutableBinding for declarative Environment Records creates a new mutable binding for the name <var>N</var> that is uninitialized. A binding must not already exist in this <emu-xref href="#sec-environment-records" id="_ref_1834"><a href="#sec-environment-records">Environment Record</a></emu-xref> for <var>N</var>. If Boolean argument <var>D</var> has the value <emu-val>true</emu-val> the new binding is marked as being subject to deletion.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the declarative <emu-xref href="#sec-environment-records" id="_ref_1835"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li><emu-xref href="#assert" id="_ref_1836"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var> does not already have a binding for <var>N</var>.</li><li>Create a mutable binding in <var>envRec</var> for <var>N</var> and record that it is uninitialized. If <var>D</var> is <emu-val>true</emu-val>, record that the newly created binding may be deleted by a subsequent DeleteBinding call.</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_1837"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-declarative-environment-records-createimmutablebinding-n-s">
|
||
<h1><span class="secnum">8.1.1.1.3</span>CreateImmutableBinding ( <var>N</var>, <var>S</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1838"><a href="#sec-environment-records">Environment Record</a></emu-xref> method CreateImmutableBinding for declarative Environment Records creates a new immutable binding for the name <var>N</var> that is uninitialized. A binding must not already exist in this <emu-xref href="#sec-environment-records" id="_ref_1839"><a href="#sec-environment-records">Environment Record</a></emu-xref> for <var>N</var>. If the Boolean argument <var>S</var> has the value <emu-val>true</emu-val> the new binding is marked as a strict binding.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the declarative <emu-xref href="#sec-environment-records" id="_ref_1840"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li><emu-xref href="#assert" id="_ref_1841"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var> does not already have a binding for <var>N</var>.</li><li>Create an immutable binding in <var>envRec</var> for <var>N</var> and record that it is uninitialized. If <var>S</var> is <emu-val>true</emu-val>, record that the newly created binding is a strict binding.</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_1842"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-declarative-environment-records-initializebinding-n-v">
|
||
<h1><span class="secnum">8.1.1.1.4</span>InitializeBinding ( <var>N</var>, <var>V</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1843"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method InitializeBinding for declarative Environment Records is used to
|
||
set the bound value of the current binding of the identifier whose name
|
||
is the value of the argument <var>N</var> to the value of argument <var>V</var>. An uninitialized binding for <var>N</var> must already exist.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the declarative <emu-xref href="#sec-environment-records" id="_ref_1844"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li><emu-xref href="#assert" id="_ref_1845"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var> must have an uninitialized binding for <var>N</var>.</li><li>Set the bound value for <var>N</var> in <var>envRec</var> to <var>V</var>.</li><li><emu-xref href="#sec-list-and-record-specification-type" id="_ref_1846"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> that the binding for <var>N</var> in <var>envRec</var> has been initialized.</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_1847"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-declarative-environment-records-setmutablebinding-n-v-s">
|
||
<h1><span class="secnum">8.1.1.1.5</span>SetMutableBinding ( <var>N</var>, <var>V</var>, <var>S</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1848"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method SetMutableBinding for declarative Environment Records attempts
|
||
to change the bound value of the current binding of the identifier whose
|
||
name is the value of the argument <var>N</var> to the value of argument <var>V</var>. A binding for <var>N</var> normally already exists, but in rare cases it may not. If the binding is an immutable binding, a <emu-val>TypeError</emu-val> is thrown if <var>S</var> is <emu-val>true</emu-val>.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the declarative <emu-xref href="#sec-environment-records" id="_ref_1849"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>If <var>envRec</var> does not have a binding for <var>N</var>, then<ol><li>If <var>S</var> is <emu-val>true</emu-val>, throw a <emu-val>ReferenceError</emu-val> exception.</li><li>Perform <var>envRec</var>.CreateMutableBinding(<var>N</var>, <emu-val>true</emu-val>).</li><li>Perform <var>envRec</var>.InitializeBinding(<var>N</var>, <var>V</var>).</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_1850"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).</li></ol></li><li>If the binding for <var>N</var> in <var>envRec</var> is a strict binding, set <var>S</var> to <emu-val>true</emu-val>.</li><li>If the binding for <var>N</var> in <var>envRec</var> has not yet been initialized, throw a <emu-val>ReferenceError</emu-val> exception.</li><li>Else if the binding for <var>N</var> in <var>envRec</var> is a mutable binding, change its bound value to <var>V</var>.</li><li>Else,<ol><li><emu-xref href="#assert" id="_ref_1851"><a href="#assert">Assert</a></emu-xref>: This is an attempt to change the value of an immutable binding.</li><li>If <var>S</var> is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li></ol></li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_1852"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>An example of ECMAScript code that results in a missing binding at step 2 is:</p>
|
||
<pre><code language="javascript">function f(){eval("var x; x = (delete x, 0);")}</code></pre>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-declarative-environment-records-getbindingvalue-n-s">
|
||
<h1><span class="secnum">8.1.1.1.6</span>GetBindingValue ( <var>N</var>, <var>S</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1853"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method GetBindingValue for declarative Environment Records simply
|
||
returns the value of its bound identifier whose name is the value of the
|
||
argument <var>N</var>. If the binding exists but is uninitialized a <emu-val>ReferenceError</emu-val> is thrown, regardless of the value of <var>S</var>.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the declarative <emu-xref href="#sec-environment-records" id="_ref_1854"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li><emu-xref href="#assert" id="_ref_1855"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var> has a binding for <var>N</var>.</li><li>If the binding for <var>N</var> in <var>envRec</var> is an uninitialized binding, throw a <emu-val>ReferenceError</emu-val> exception.</li><li>Return the value currently bound to <var>N</var> in <var>envRec</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-declarative-environment-records-deletebinding-n">
|
||
<h1><span class="secnum">8.1.1.1.7</span>DeleteBinding ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1856"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method DeleteBinding for declarative Environment Records can only
|
||
delete bindings that have been explicitly designated as being subject to
|
||
deletion.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the declarative <emu-xref href="#sec-environment-records" id="_ref_1857"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li><emu-xref href="#assert" id="_ref_1858"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var> has a binding for the name that is the value of <var>N</var>.</li><li>If the binding for <var>N</var> in <var>envRec</var> cannot be deleted, return <emu-val>false</emu-val>.</li><li>Remove the binding for <var>N</var> from <var>envRec</var>.</li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-declarative-environment-records-hasthisbinding">
|
||
<h1><span class="secnum">8.1.1.1.8</span>HasThisBinding ( )</h1>
|
||
<p>Regular declarative Environment Records do not provide a <code>this</code> binding.</p>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-declarative-environment-records-hassuperbinding">
|
||
<h1><span class="secnum">8.1.1.1.9</span>HasSuperBinding ( )</h1>
|
||
<p>Regular declarative Environment Records do not provide a <code>super</code> binding.</p>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-declarative-environment-records-withbaseobject">
|
||
<h1><span class="secnum">8.1.1.1.10</span>WithBaseObject ( )</h1>
|
||
<p>Declarative Environment Records always return <emu-val>undefined</emu-val> as their WithBaseObject.</p>
|
||
<emu-alg><ol><li>Return <emu-val>undefined</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-environment-records">
|
||
<h1><span class="secnum">8.1.1.2</span>Object Environment Records</h1>
|
||
<p>Each object <emu-xref href="#sec-environment-records" id="_ref_1859"><a href="#sec-environment-records">Environment Record</a></emu-xref> is associated with an object called its <em>binding object</em>. An object <emu-xref href="#sec-environment-records" id="_ref_1860"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
binds the set of string identifier names that directly correspond to
|
||
the property names of its binding object. Property keys that are not
|
||
strings in the form of an <emu-nt id="_ref_9034"><a href="#prod-IdentifierName">IdentifierName</a></emu-nt>
|
||
are not included in the set of bound identifiers. Both own and
|
||
inherited properties are included in the set regardless of the setting
|
||
of their [[Enumerable]] attribute. Because properties can be dynamically
|
||
added and deleted from objects, the set of identifiers bound by an
|
||
object <emu-xref href="#sec-environment-records" id="_ref_1861"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
may potentially change as a side-effect of any operation that adds or
|
||
deletes properties. Any bindings that are created as a result of such a
|
||
side-effect are considered to be a mutable binding even if the Writable
|
||
attribute of the corresponding property has the value <emu-val>false</emu-val>. Immutable bindings do not exist for object Environment Records.</p>
|
||
<p>Object Environment Records created for <code>with</code> statements (<emu-xref href="#sec-with-statement" id="_ref_156"><a href="#sec-with-statement">13.11</a></emu-xref>) can provide their binding object as an implicit <emu-val>this</emu-val> value for use in function calls. The capability is controlled by a <var>withEnvironment</var> Boolean value that is associated with each object <emu-xref href="#sec-environment-records" id="_ref_1862"><a href="#sec-environment-records">Environment Record</a></emu-xref>. By default, the value of <var>withEnvironment</var> is <emu-val>false</emu-val> for any object <emu-xref href="#sec-environment-records" id="_ref_1863"><a href="#sec-environment-records">Environment Record</a></emu-xref>.</p>
|
||
<p>The behaviour of the concrete specification methods for object Environment Records is defined by the following algorithms.</p>
|
||
|
||
<emu-clause id="sec-object-environment-records-hasbinding-n">
|
||
<h1><span class="secnum">8.1.1.2.1</span>HasBinding ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1864"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method HasBinding for object Environment Records determines if its
|
||
associated binding object has a property whose name is the value of the
|
||
argument <var>N</var>:</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the object <emu-xref href="#sec-environment-records" id="_ref_1865"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>bindings</var> be the binding object for <var>envRec</var>.</li><li>Let <var>foundBinding</var> be ? <emu-xref aoid="HasProperty" id="_ref_1866"><a href="#sec-hasproperty">HasProperty</a></emu-xref>(<var>bindings</var>, <var>N</var>).</li><li>If <var>foundBinding</var> is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>If the <var>withEnvironment</var> flag of <var>envRec</var> is <emu-val>false</emu-val>, return <emu-val>true</emu-val>.</li><li>Let <var>unscopables</var> be ? <emu-xref aoid="Get" id="_ref_1867"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>bindings</var>, @@unscopables).</li><li>If <emu-xref aoid="Type" id="_ref_1868"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>unscopables</var>) is Object, then<ol><li>Let <var>blocked</var> be <emu-xref aoid="ToBoolean" id="_ref_1869"><a href="#sec-toboolean">ToBoolean</a></emu-xref>(? <emu-xref aoid="Get" id="_ref_1870"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>unscopables</var>, <var>N</var>)).</li><li>If <var>blocked</var> is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li></ol></li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-environment-records-createmutablebinding-n-d">
|
||
<h1><span class="secnum">8.1.1.2.2</span>CreateMutableBinding ( <var>N</var>, <var>D</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1871"><a href="#sec-environment-records">Environment Record</a></emu-xref> method CreateMutableBinding for object Environment Records creates in an <emu-xref href="#sec-environment-records" id="_ref_1872"><a href="#sec-environment-records">Environment Record</a></emu-xref>'s associated binding object a property whose name is the String value and initializes it to the value <emu-val>undefined</emu-val>. If Boolean argument <var>D</var> has the value <emu-val>true</emu-val> the new property's [[Configurable]] attribute is set to <emu-val>true</emu-val>; otherwise it is set to <emu-val>false</emu-val>.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the object <emu-xref href="#sec-environment-records" id="_ref_1873"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>bindings</var> be the binding object for <var>envRec</var>.</li><li>Return ? <emu-xref aoid="DefinePropertyOrThrow" id="_ref_1874"><a href="#sec-definepropertyorthrow">DefinePropertyOrThrow</a></emu-xref>(<var>bindings</var>, <var>N</var>, PropertyDescriptor { [[Value]]: <emu-val>undefined</emu-val>, [[Writable]]: <emu-val>true</emu-val>, [[Enumerable]]: <emu-val>true</emu-val>, [[Configurable]]: <var>D</var> }).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Normally <var>envRec</var> will not have a binding for <var>N</var> but if it does, the semantics of <emu-xref aoid="DefinePropertyOrThrow" id="_ref_1875"><a href="#sec-definepropertyorthrow">DefinePropertyOrThrow</a></emu-xref> may result in an existing binding being replaced or shadowed or cause an <emu-xref href="#sec-completion-record-specification-type" id="_ref_1876"><a href="#sec-completion-record-specification-type">abrupt completion</a></emu-xref> to be returned.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-environment-records-createimmutablebinding-n-s">
|
||
<h1><span class="secnum">8.1.1.2.3</span>CreateImmutableBinding ( <var>N</var>, <var>S</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1877"><a href="#sec-environment-records">Environment Record</a></emu-xref> method CreateImmutableBinding is never used within this specification in association with object Environment Records.</p>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-environment-records-initializebinding-n-v">
|
||
<h1><span class="secnum">8.1.1.2.4</span>InitializeBinding ( <var>N</var>, <var>V</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1878"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method InitializeBinding for object Environment Records is used to set
|
||
the bound value of the current binding of the identifier whose name is
|
||
the value of the argument <var>N</var> to the value of argument <var>V</var>. An uninitialized binding for <var>N</var> must already exist.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the object <emu-xref href="#sec-environment-records" id="_ref_1879"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li><emu-xref href="#assert" id="_ref_1880"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var> must have an uninitialized binding for <var>N</var>.</li><li><emu-xref href="#sec-list-and-record-specification-type" id="_ref_1881"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> that the binding for <var>N</var> in <var>envRec</var> has been initialized.</li><li>Return ? <var>envRec</var>.SetMutableBinding(<var>N</var>, <var>V</var>, <emu-val>false</emu-val>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>In this specification, all uses of CreateMutableBinding
|
||
for object Environment Records are immediately followed by a call to
|
||
InitializeBinding for the same name. Hence, implementations do not need
|
||
to explicitly track the initialization state of individual object <emu-xref href="#sec-environment-records" id="_ref_1882"><a href="#sec-environment-records">Environment Record</a></emu-xref> bindings.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-environment-records-setmutablebinding-n-v-s">
|
||
<h1><span class="secnum">8.1.1.2.5</span>SetMutableBinding ( <var>N</var>, <var>V</var>, <var>S</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1883"><a href="#sec-environment-records">Environment Record</a></emu-xref> method SetMutableBinding for object Environment Records attempts to set the value of the <emu-xref href="#sec-environment-records" id="_ref_1884"><a href="#sec-environment-records">Environment Record</a></emu-xref>'s associated binding object's property whose name is the value of the argument <var>N</var> to the value of argument <var>V</var>. A property named <var>N</var>
|
||
normally already exists but if it does not or is not currently
|
||
writable, error handling is determined by the value of the Boolean
|
||
argument <var>S</var>.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the object <emu-xref href="#sec-environment-records" id="_ref_1885"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>bindings</var> be the binding object for <var>envRec</var>.</li><li>Return ? <emu-xref aoid="Set" id="_ref_1886"><a href="#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>bindings</var>, <var>N</var>, <var>V</var>, <var>S</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-environment-records-getbindingvalue-n-s">
|
||
<h1><span class="secnum">8.1.1.2.6</span>GetBindingValue ( <var>N</var>, <var>S</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1887"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method GetBindingValue for object Environment Records returns the value
|
||
of its associated binding object's property whose name is the String
|
||
value of the argument identifier <var>N</var>. The property should already exist but if it does not the result depends upon the value of the <var>S</var> argument:</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the object <emu-xref href="#sec-environment-records" id="_ref_1888"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>bindings</var> be the binding object for <var>envRec</var>.</li><li>Let <var>value</var> be ? <emu-xref aoid="HasProperty" id="_ref_1889"><a href="#sec-hasproperty">HasProperty</a></emu-xref>(<var>bindings</var>, <var>N</var>).</li><li>If <var>value</var> is <emu-val>false</emu-val>, then<ol><li>If <var>S</var> is <emu-val>false</emu-val>, return the value <emu-val>undefined</emu-val>; otherwise throw a <emu-val>ReferenceError</emu-val> exception.</li></ol></li><li>Return ? <emu-xref aoid="Get" id="_ref_1890"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>bindings</var>, <var>N</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-environment-records-deletebinding-n">
|
||
<h1><span class="secnum">8.1.1.2.7</span>DeleteBinding ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1891"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method DeleteBinding for object Environment Records can only delete
|
||
bindings that correspond to properties of the environment object whose
|
||
[[Configurable]] attribute have the value <emu-val>true</emu-val>.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the object <emu-xref href="#sec-environment-records" id="_ref_1892"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>bindings</var> be the binding object for <var>envRec</var>.</li><li>Return ? <var>bindings</var>.[[Delete]](<var>N</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-environment-records-hasthisbinding">
|
||
<h1><span class="secnum">8.1.1.2.8</span>HasThisBinding ( )</h1>
|
||
<p>Regular object Environment Records do not provide a <code>this</code> binding.</p>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-environment-records-hassuperbinding">
|
||
<h1><span class="secnum">8.1.1.2.9</span>HasSuperBinding ( )</h1>
|
||
<p>Regular object Environment Records do not provide a <code>super</code> binding.</p>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-object-environment-records-withbaseobject">
|
||
<h1><span class="secnum">8.1.1.2.10</span>WithBaseObject ( )</h1>
|
||
<p>Object Environment Records return <emu-val>undefined</emu-val> as their WithBaseObject unless their <var>withEnvironment</var> flag is <emu-val>true</emu-val>.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the object <emu-xref href="#sec-environment-records" id="_ref_1893"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>If the <var>withEnvironment</var> flag of <var>envRec</var> is <emu-val>true</emu-val>, return the binding object for <var>envRec</var>.</li><li>Otherwise, return <emu-val>undefined</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-function-environment-records">
|
||
<h1><span class="secnum">8.1.1.3</span>Function Environment Records</h1>
|
||
<p>A <dfn>function Environment Record</dfn> is a declarative <emu-xref href="#sec-environment-records" id="_ref_1894"><a href="#sec-environment-records">Environment Record</a></emu-xref> that is used to represent the top-level scope of a function and, if the function is not an <emu-nt id="_ref_9035"><a href="#prod-ArrowFunction">ArrowFunction</a></emu-nt>, provides a <code>this</code> binding. If a function is not an <emu-nt id="_ref_9036"><a href="#prod-ArrowFunction">ArrowFunction</a></emu-nt> function and references <code>super</code>, its function Environment Record also contains the state that is used to perform <code>super</code> method invocations from within the function.</p>
|
||
<p>Function Environment Records have the additional state fields listed in <emu-xref href="#table-16" id="_ref_157"><a href="#table-16">Table 15</a></emu-xref>.</p>
|
||
<emu-table id="table-16" caption="Additional Fields of Function Environment Records"><figure><figcaption>Table 15: Additional Fields of Function Environment Records</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Field Name
|
||
|
||
</th>
|
||
<th>
|
||
Value
|
||
|
||
</th>
|
||
<th>
|
||
Meaning
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[ThisValue]]
|
||
|
||
</td>
|
||
<td>
|
||
Any
|
||
|
||
</td>
|
||
<td>
|
||
This is the <emu-val>this</emu-val> value used for this invocation of the function.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[ThisBindingStatus]]
|
||
|
||
</td>
|
||
<td>
|
||
<code>"lexical"</code> | <code>"initialized"</code> | <code>"uninitialized"</code>
|
||
|
||
</td>
|
||
<td>
|
||
If the value is <code>"lexical"</code>, this is an <emu-nt id="_ref_9037"><a href="#prod-ArrowFunction">ArrowFunction</a></emu-nt> and does not have a local this value.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[FunctionObject]]
|
||
|
||
</td>
|
||
<td>
|
||
Object
|
||
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#function-object" id="_ref_1895"><a href="#function-object">function object</a></emu-xref> whose invocation caused this <emu-xref href="#sec-environment-records" id="_ref_1896"><a href="#sec-environment-records">Environment Record</a></emu-xref> to be created.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[HomeObject]]
|
||
|
||
</td>
|
||
<td>
|
||
Object | <emu-val>undefined</emu-val>
|
||
|
||
</td>
|
||
<td>
|
||
If the associated function has <code>super</code> property accesses and is not an <emu-nt id="_ref_9038"><a href="#prod-ArrowFunction">ArrowFunction</a></emu-nt>, [[HomeObject]] is the object that the function is bound to as a method. The default value for [[HomeObject]] is <emu-val>undefined</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[NewTarget]]
|
||
|
||
</td>
|
||
<td>
|
||
Object | <emu-val>undefined</emu-val>
|
||
|
||
</td>
|
||
<td>
|
||
If this <emu-xref href="#sec-environment-records" id="_ref_1897"><a href="#sec-environment-records">Environment Record</a></emu-xref> was created by the [[Construct]] internal method, [[NewTarget]] is the value of the [[Construct]] <var>newTarget</var> parameter. Otherwise, its value is <emu-val>undefined</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>Function Environment Records support all of the declarative <emu-xref href="#sec-environment-records" id="_ref_1898"><a href="#sec-environment-records">Environment Record</a></emu-xref> methods listed in <emu-xref href="#table-15" id="_ref_158"><a href="#table-15">Table 14</a></emu-xref>
|
||
and share the same specifications for all of those methods except for
|
||
HasThisBinding and HasSuperBinding. In addition, function Environment
|
||
Records support the methods listed in <emu-xref href="#table-17" id="_ref_159"><a href="#table-17">Table 16</a></emu-xref>:</p>
|
||
<emu-table id="table-17" caption="Additional Methods of Function Environment Records"><figure><figcaption>Table 16: Additional Methods of Function Environment Records</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Method
|
||
|
||
</th>
|
||
<th>
|
||
Purpose
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
BindThisValue(V)
|
||
|
||
</td>
|
||
<td>
|
||
Set the [[ThisValue]] and record that it has been initialized.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
GetThisBinding()
|
||
|
||
</td>
|
||
<td>
|
||
Return the value of this <emu-xref href="#sec-environment-records" id="_ref_1899"><a href="#sec-environment-records">Environment Record</a></emu-xref>'s <code>this</code> binding. Throws a <emu-val>ReferenceError</emu-val> if the <code>this</code> binding has not been initialized.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
GetSuperBase()
|
||
|
||
</td>
|
||
<td>
|
||
Return the object that is the base for <code>super</code> property accesses bound in this <emu-xref href="#sec-environment-records" id="_ref_1900"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The object is derived from this <emu-xref href="#sec-environment-records" id="_ref_1901"><a href="#sec-environment-records">Environment Record</a></emu-xref>'s [[HomeObject]] field. The value <emu-val>undefined</emu-val> indicates that <code>super</code> property accesses will produce runtime errors.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>The behaviour of the additional concrete specification
|
||
methods for function Environment Records is defined by the following
|
||
algorithms:</p>
|
||
|
||
<emu-clause id="sec-bindthisvalue">
|
||
<h1><span class="secnum">8.1.1.3.1</span>BindThisValue ( <var>V</var> )</h1>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the <emu-xref href="#sec-function-environment-records" id="_ref_1902"><a href="#sec-function-environment-records">function Environment Record</a></emu-xref> for which the method was invoked.</li><li><emu-xref href="#assert" id="_ref_1903"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var>.[[ThisBindingStatus]] is not <code>"lexical"</code>.</li><li>If <var>envRec</var>.[[ThisBindingStatus]] is <code>"initialized"</code>, throw a <emu-val>ReferenceError</emu-val> exception.</li><li>Set <var>envRec</var>.[[ThisValue]] to <var>V</var>.</li><li>Set <var>envRec</var>.[[ThisBindingStatus]] to <code>"initialized"</code>.</li><li>Return <var>V</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-function-environment-records-hasthisbinding">
|
||
<h1><span class="secnum">8.1.1.3.2</span>HasThisBinding ( )</h1>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the <emu-xref href="#sec-function-environment-records" id="_ref_1904"><a href="#sec-function-environment-records">function Environment Record</a></emu-xref> for which the method was invoked.</li><li>If <var>envRec</var>.[[ThisBindingStatus]] is <code>"lexical"</code>, return <emu-val>false</emu-val>; otherwise, return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-function-environment-records-hassuperbinding">
|
||
<h1><span class="secnum">8.1.1.3.3</span>HasSuperBinding ( )</h1>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the <emu-xref href="#sec-function-environment-records" id="_ref_1905"><a href="#sec-function-environment-records">function Environment Record</a></emu-xref> for which the method was invoked.</li><li>If <var>envRec</var>.[[ThisBindingStatus]] is <code>"lexical"</code>, return <emu-val>false</emu-val>.</li><li>If <var>envRec</var>.[[HomeObject]] has the value <emu-val>undefined</emu-val>, return <emu-val>false</emu-val>; otherwise, return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-function-environment-records-getthisbinding">
|
||
<h1><span class="secnum">8.1.1.3.4</span>GetThisBinding ( )</h1>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the <emu-xref href="#sec-function-environment-records" id="_ref_1906"><a href="#sec-function-environment-records">function Environment Record</a></emu-xref> for which the method was invoked.</li><li><emu-xref href="#assert" id="_ref_1907"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var>.[[ThisBindingStatus]] is not <code>"lexical"</code>.</li><li>If <var>envRec</var>.[[ThisBindingStatus]] is <code>"uninitialized"</code>, throw a <emu-val>ReferenceError</emu-val> exception.</li><li>Return <var>envRec</var>.[[ThisValue]].
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getsuperbase">
|
||
<h1><span class="secnum">8.1.1.3.5</span>GetSuperBase ( )</h1>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the <emu-xref href="#sec-function-environment-records" id="_ref_1908"><a href="#sec-function-environment-records">function Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>home</var> be <var>envRec</var>.[[HomeObject]].</li><li>If <var>home</var> has the value <emu-val>undefined</emu-val>, return <emu-val>undefined</emu-val>.</li><li><emu-xref href="#assert" id="_ref_1909"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_1910"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>home</var>) is Object.</li><li>Return ? <var>home</var>.[[GetPrototypeOf]]().
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records">
|
||
<h1><span class="secnum">8.1.1.4</span>Global Environment Records</h1>
|
||
<p>A global <emu-xref href="#sec-environment-records" id="_ref_1911"><a href="#sec-environment-records">Environment Record</a></emu-xref> is used to represent the outer most scope that is shared by all of the ECMAScript <emu-nt id="_ref_9039"><a href="#prod-Script">Script</a></emu-nt> elements that are processed in a common <emu-xref href="#realm" id="_ref_1912"><a href="#realm">realm</a></emu-xref>. A global <emu-xref href="#sec-environment-records" id="_ref_1913"><a href="#sec-environment-records">Environment Record</a></emu-xref> provides the bindings for built-in globals (clause <emu-xref href="#sec-global-object" id="_ref_160"><a href="#sec-global-object">18</a></emu-xref>), properties of the <emu-xref href="#sec-global-object" id="_ref_1914"><a href="#sec-global-object">global object</a></emu-xref>, and for all top-level declarations (<emu-xref href="#sec-block-static-semantics-toplevellexicallyscopeddeclarations" id="_ref_161"><a href="#sec-block-static-semantics-toplevellexicallyscopeddeclarations">13.2.8</a></emu-xref>, <emu-xref href="#sec-block-static-semantics-toplevelvarscopeddeclarations" id="_ref_162"><a href="#sec-block-static-semantics-toplevelvarscopeddeclarations">13.2.10</a></emu-xref>) that occur within a <emu-nt id="_ref_9040"><a href="#prod-Script">Script</a></emu-nt>.</p>
|
||
<p>A global <emu-xref href="#sec-environment-records" id="_ref_1915"><a href="#sec-environment-records">Environment Record</a></emu-xref> is logically a single record but it is specified as a composite encapsulating an object <emu-xref href="#sec-environment-records" id="_ref_1916"><a href="#sec-environment-records">Environment Record</a></emu-xref> and a declarative <emu-xref href="#sec-environment-records" id="_ref_1917"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The object <emu-xref href="#sec-environment-records" id="_ref_1918"><a href="#sec-environment-records">Environment Record</a></emu-xref> has as its base object the <emu-xref href="#sec-global-object" id="_ref_1919"><a href="#sec-global-object">global object</a></emu-xref> of the associated <emu-xref href="#realm-record" id="_ref_1920"><a href="#realm-record">Realm Record</a></emu-xref>. This <emu-xref href="#sec-global-object" id="_ref_1921"><a href="#sec-global-object">global object</a></emu-xref> is the value returned by the global <emu-xref href="#sec-environment-records" id="_ref_1922"><a href="#sec-environment-records">Environment Record</a></emu-xref>'s GetThisBinding concrete method. The object <emu-xref href="#sec-environment-records" id="_ref_1923"><a href="#sec-environment-records">Environment Record</a></emu-xref> component of a global <emu-xref href="#sec-environment-records" id="_ref_1924"><a href="#sec-environment-records">Environment Record</a></emu-xref> contains the bindings for all built-in globals (clause <emu-xref href="#sec-global-object" id="_ref_163"><a href="#sec-global-object">18</a></emu-xref>) and all bindings introduced by a <emu-nt id="_ref_9041"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9042"><a href="#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt>, <emu-nt id="_ref_9043"><a href="#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9044"><a href="#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt>, or <emu-nt id="_ref_9045"><a href="#prod-VariableStatement">VariableStatement</a></emu-nt> contained in global code. The bindings for all other ECMAScript declarations in global code are contained in the declarative <emu-xref href="#sec-environment-records" id="_ref_1925"><a href="#sec-environment-records">Environment Record</a></emu-xref> component of the global <emu-xref href="#sec-environment-records" id="_ref_1926"><a href="#sec-environment-records">Environment Record</a></emu-xref>.</p>
|
||
<p>Properties may be created directly on a <emu-xref href="#sec-global-object" id="_ref_1927"><a href="#sec-global-object">global object</a></emu-xref>. Hence, the object <emu-xref href="#sec-environment-records" id="_ref_1928"><a href="#sec-environment-records">Environment Record</a></emu-xref> component of a global <emu-xref href="#sec-environment-records" id="_ref_1929"><a href="#sec-environment-records">Environment Record</a></emu-xref> may contain both bindings created explicitly by <emu-nt id="_ref_9046"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9047"><a href="#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt>, <emu-nt id="_ref_9048"><a href="#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9049"><a href="#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt>, or <emu-nt id="_ref_9050"><a href="#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> declarations and bindings created implicitly as properties of the <emu-xref href="#sec-global-object" id="_ref_1930"><a href="#sec-global-object">global object</a></emu-xref>. In order to identify which bindings were explicitly created using declarations, a global <emu-xref href="#sec-environment-records" id="_ref_1931"><a href="#sec-environment-records">Environment Record</a></emu-xref> maintains a list of the names bound using its CreateGlobalVarBinding and CreateGlobalFunctionBinding concrete methods.</p>
|
||
<p>Global Environment Records have the additional fields listed in <emu-xref href="#table-18" id="_ref_164"><a href="#table-18">Table 17</a></emu-xref> and the additional methods listed in <emu-xref href="#table-19" id="_ref_165"><a href="#table-19">Table 18</a></emu-xref>.</p>
|
||
<emu-table id="table-18" caption="Additional Fields of Global Environment Records"><figure><figcaption>Table 17: Additional Fields of Global Environment Records</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Field Name
|
||
|
||
</th>
|
||
<th>
|
||
Value
|
||
|
||
</th>
|
||
<th>
|
||
Meaning
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[ObjectRecord]]
|
||
|
||
</td>
|
||
<td>
|
||
Object <emu-xref href="#sec-environment-records" id="_ref_1932"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
Binding object is the <emu-xref href="#sec-global-object" id="_ref_1933"><a href="#sec-global-object">global object</a></emu-xref>. It contains global built-in bindings as well as <emu-nt id="_ref_9051"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9052"><a href="#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt>, <emu-nt id="_ref_9053"><a href="#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9054"><a href="#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt>, and <emu-nt id="_ref_9055"><a href="#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> bindings in global code for the associated <emu-xref href="#realm" id="_ref_1934"><a href="#realm">realm</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[GlobalThisValue]]
|
||
|
||
</td>
|
||
<td>
|
||
Object
|
||
|
||
</td>
|
||
<td>
|
||
The value returned by <code>this</code> in global scope. Hosts may provide any ECMAScript Object value.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[DeclarativeRecord]]
|
||
|
||
</td>
|
||
<td>
|
||
Declarative <emu-xref href="#sec-environment-records" id="_ref_1935"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
Contains bindings for all declarations in global code for the associated <emu-xref href="#realm" id="_ref_1936"><a href="#realm">realm</a></emu-xref> code except for <emu-nt id="_ref_9056"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9057"><a href="#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt>, <emu-nt id="_ref_9058"><a href="#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9059"><a href="#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt>, and <emu-nt id="_ref_9060"><a href="#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> <var>bindings</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[VarNames]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-xref href="#sec-list-and-record-specification-type" id="_ref_1937"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of String
|
||
|
||
</td>
|
||
<td>
|
||
The string names bound by <emu-nt id="_ref_9061"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9062"><a href="#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt>, <emu-nt id="_ref_9063"><a href="#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9064"><a href="#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt>, and <emu-nt id="_ref_9065"><a href="#prod-VariableDeclaration">VariableDeclaration</a></emu-nt> declarations in global code for the associated <emu-xref href="#realm" id="_ref_1938"><a href="#realm">realm</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<emu-table id="table-19" caption="Additional Methods of Global Environment Records"><figure><figcaption>Table 18: Additional Methods of Global Environment Records</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Method
|
||
|
||
</th>
|
||
<th>
|
||
Purpose
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
GetThisBinding()
|
||
|
||
</td>
|
||
<td>
|
||
Return the value of this <emu-xref href="#sec-environment-records" id="_ref_1939"><a href="#sec-environment-records">Environment Record</a></emu-xref>'s <code>this</code> binding.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
HasVarDeclaration (N)
|
||
|
||
</td>
|
||
<td>
|
||
Determines if the argument identifier has a binding in this <emu-xref href="#sec-environment-records" id="_ref_1940"><a href="#sec-environment-records">Environment Record</a></emu-xref> that was created using a <emu-nt id="_ref_9066"><a href="#prod-VariableDeclaration">VariableDeclaration</a></emu-nt>, <emu-nt id="_ref_9067"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>, <emu-nt id="_ref_9068"><a href="#prod-GeneratorDeclaration">GeneratorDeclaration</a></emu-nt>, <emu-nt id="_ref_9069"><a href="#prod-AsyncFunctionDeclaration">AsyncFunctionDeclaration</a></emu-nt>, or <emu-nt id="_ref_9070"><a href="#prod-AsyncGeneratorDeclaration">AsyncGeneratorDeclaration</a></emu-nt>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
HasLexicalDeclaration (N)
|
||
|
||
</td>
|
||
<td>
|
||
Determines if the argument identifier has a binding in this <emu-xref href="#sec-environment-records" id="_ref_1941"><a href="#sec-environment-records">Environment Record</a></emu-xref> that was created using a lexical declaration such as a <emu-nt id="_ref_9071"><a href="#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt> or a <emu-nt id="_ref_9072"><a href="#prod-ClassDeclaration">ClassDeclaration</a></emu-nt>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
HasRestrictedGlobalProperty (N)
|
||
|
||
</td>
|
||
<td>
|
||
Determines if the argument is the name of a <emu-xref href="#sec-global-object" id="_ref_1942"><a href="#sec-global-object">global object</a></emu-xref> property that may not be shadowed by a global lexical binding.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
CanDeclareGlobalVar (N)
|
||
|
||
</td>
|
||
<td>
|
||
Determines if a corresponding CreateGlobalVarBinding call would succeed if called for the same argument <var>N</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
CanDeclareGlobalFunction (N)
|
||
|
||
</td>
|
||
<td>
|
||
Determines if a corresponding CreateGlobalFunctionBinding call would succeed if called for the same argument <var>N</var>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
CreateGlobalVarBinding(N, D)
|
||
|
||
</td>
|
||
<td>
|
||
Used to create and initialize to <emu-val>undefined</emu-val> a global <code>var</code> binding in the [[ObjectRecord]] component of a global <emu-xref href="#sec-environment-records" id="_ref_1943"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The binding will be a mutable binding. The corresponding <emu-xref href="#sec-global-object" id="_ref_1944"><a href="#sec-global-object">global object</a></emu-xref> property will have attribute values appropriate for a <code>var</code>. The String value <var>N</var> is the bound name. If <var>D</var> is <emu-val>true</emu-val>
|
||
the binding may be deleted. Logically equivalent to
|
||
CreateMutableBinding followed by a SetMutableBinding but it allows var
|
||
declarations to receive special treatment.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
CreateGlobalFunctionBinding(N, V, D)
|
||
|
||
</td>
|
||
<td>
|
||
Create and initialize a global <code>function</code> binding in the [[ObjectRecord]] component of a global <emu-xref href="#sec-environment-records" id="_ref_1945"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The binding will be a mutable binding. The corresponding <emu-xref href="#sec-global-object" id="_ref_1946"><a href="#sec-global-object">global object</a></emu-xref> property will have attribute values appropriate for a <code>function</code>. The String value <var>N</var> is the bound name. <var>V</var> is the initialization value. If the Boolean argument <var>D</var> is <emu-val>true</emu-val>
|
||
the binding may be deleted. Logically equivalent to
|
||
CreateMutableBinding followed by a SetMutableBinding but it allows
|
||
function declarations to receive special treatment.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>The behaviour of the concrete specification methods for global Environment Records is defined by the following algorithms.</p>
|
||
|
||
<emu-clause id="sec-global-environment-records-hasbinding-n">
|
||
<h1><span class="secnum">8.1.1.4.1</span>HasBinding ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1947"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method HasBinding for global Environment Records simply determines if
|
||
the argument identifier is one of the identifiers bound by the record:</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1948"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>DclRec</var> be <var>envRec</var>.[[DeclarativeRecord]].</li><li>If <var>DclRec</var>.HasBinding(<var>N</var>) is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Let <var>ObjRec</var> be <var>envRec</var>.[[ObjectRecord]].</li><li>Return ? <var>ObjRec</var>.HasBinding(<var>N</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records-createmutablebinding-n-d">
|
||
<h1><span class="secnum">8.1.1.4.2</span>CreateMutableBinding ( <var>N</var>, <var>D</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1949"><a href="#sec-environment-records">Environment Record</a></emu-xref> method CreateMutableBinding for global Environment Records creates a new mutable binding for the name <var>N</var> that is uninitialized. The binding is created in the associated DeclarativeRecord. A binding for <var>N</var> must not already exist in the DeclarativeRecord. If Boolean argument <var>D</var> has the value <emu-val>true</emu-val> the new binding is marked as being subject to deletion.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1950"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>DclRec</var> be <var>envRec</var>.[[DeclarativeRecord]].</li><li>If <var>DclRec</var>.HasBinding(<var>N</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <var>DclRec</var>.CreateMutableBinding(<var>N</var>, <var>D</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records-createimmutablebinding-n-s">
|
||
<h1><span class="secnum">8.1.1.4.3</span>CreateImmutableBinding ( <var>N</var>, <var>S</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1951"><a href="#sec-environment-records">Environment Record</a></emu-xref> method CreateImmutableBinding for global Environment Records creates a new immutable binding for the name <var>N</var> that is uninitialized. A binding must not already exist in this <emu-xref href="#sec-environment-records" id="_ref_1952"><a href="#sec-environment-records">Environment Record</a></emu-xref> for <var>N</var>. If the Boolean argument <var>S</var> has the value <emu-val>true</emu-val> the new binding is marked as a strict binding.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1953"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>DclRec</var> be <var>envRec</var>.[[DeclarativeRecord]].</li><li>If <var>DclRec</var>.HasBinding(<var>N</var>) is <emu-val>true</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Return <var>DclRec</var>.CreateImmutableBinding(<var>N</var>, <var>S</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records-initializebinding-n-v">
|
||
<h1><span class="secnum">8.1.1.4.4</span>InitializeBinding ( <var>N</var>, <var>V</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1954"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method InitializeBinding for global Environment Records is used to set
|
||
the bound value of the current binding of the identifier whose name is
|
||
the value of the argument <var>N</var> to the value of argument <var>V</var>. An uninitialized binding for <var>N</var> must already exist.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1955"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>DclRec</var> be <var>envRec</var>.[[DeclarativeRecord]].</li><li>If <var>DclRec</var>.HasBinding(<var>N</var>) is <emu-val>true</emu-val>, then<ol><li>Return <var>DclRec</var>.InitializeBinding(<var>N</var>, <var>V</var>).</li></ol></li><li><emu-xref href="#assert" id="_ref_1956"><a href="#assert">Assert</a></emu-xref>: If the binding exists, it must be in the object <emu-xref href="#sec-environment-records" id="_ref_1957"><a href="#sec-environment-records">Environment Record</a></emu-xref>.</li><li>Let <var>ObjRec</var> be <var>envRec</var>.[[ObjectRecord]].</li><li>Return ? <var>ObjRec</var>.InitializeBinding(<var>N</var>, <var>V</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records-setmutablebinding-n-v-s">
|
||
<h1><span class="secnum">8.1.1.4.5</span>SetMutableBinding ( <var>N</var>, <var>V</var>, <var>S</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1958"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method SetMutableBinding for global Environment Records attempts to
|
||
change the bound value of the current binding of the identifier whose
|
||
name is the value of the argument <var>N</var> to the value of argument <var>V</var>. If the binding is an immutable binding, a <emu-val>TypeError</emu-val> is thrown if <var>S</var> is <emu-val>true</emu-val>. A property named <var>N</var>
|
||
normally already exists but if it does not or is not currently
|
||
writable, error handling is determined by the value of the Boolean
|
||
argument <var>S</var>.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1959"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>DclRec</var> be <var>envRec</var>.[[DeclarativeRecord]].</li><li>If <var>DclRec</var>.HasBinding(<var>N</var>) is <emu-val>true</emu-val>, then<ol><li>Return <var>DclRec</var>.SetMutableBinding(<var>N</var>, <var>V</var>, <var>S</var>).</li></ol></li><li>Let <var>ObjRec</var> be <var>envRec</var>.[[ObjectRecord]].</li><li>Return ? <var>ObjRec</var>.SetMutableBinding(<var>N</var>, <var>V</var>, <var>S</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records-getbindingvalue-n-s">
|
||
<h1><span class="secnum">8.1.1.4.6</span>GetBindingValue ( <var>N</var>, <var>S</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1960"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method GetBindingValue for global Environment Records returns the value
|
||
of its bound identifier whose name is the value of the argument <var>N</var>. If the binding is an uninitialized binding throw a <emu-val>ReferenceError</emu-val> exception. A property named <var>N</var>
|
||
normally already exists but if it does not or is not currently
|
||
writable, error handling is determined by the value of the Boolean
|
||
argument <var>S</var>.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1961"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>DclRec</var> be <var>envRec</var>.[[DeclarativeRecord]].</li><li>If <var>DclRec</var>.HasBinding(<var>N</var>) is <emu-val>true</emu-val>, then<ol><li>Return <var>DclRec</var>.GetBindingValue(<var>N</var>, <var>S</var>).</li></ol></li><li>Let <var>ObjRec</var> be <var>envRec</var>.[[ObjectRecord]].</li><li>Return ? <var>ObjRec</var>.GetBindingValue(<var>N</var>, <var>S</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records-deletebinding-n">
|
||
<h1><span class="secnum">8.1.1.4.7</span>DeleteBinding ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1962"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method DeleteBinding for global Environment Records can only delete
|
||
bindings that have been explicitly designated as being subject to
|
||
deletion.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1963"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>DclRec</var> be <var>envRec</var>.[[DeclarativeRecord]].</li><li>If <var>DclRec</var>.HasBinding(<var>N</var>) is <emu-val>true</emu-val>, then<ol><li>Return <var>DclRec</var>.DeleteBinding(<var>N</var>).</li></ol></li><li>Let <var>ObjRec</var> be <var>envRec</var>.[[ObjectRecord]].</li><li>Let <var>globalObject</var> be the binding object for <var>ObjRec</var>.</li><li>Let <var>existingProp</var> be ? <emu-xref aoid="HasOwnProperty" id="_ref_1964"><a href="#sec-hasownproperty">HasOwnProperty</a></emu-xref>(<var>globalObject</var>, <var>N</var>).</li><li>If <var>existingProp</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>status</var> be ? <var>ObjRec</var>.DeleteBinding(<var>N</var>).</li><li>If <var>status</var> is <emu-val>true</emu-val>, then<ol><li>Let <var>varNames</var> be <var>envRec</var>.[[VarNames]].</li><li>If <var>N</var> is an element of <var>varNames</var>, remove that element from the <var>varNames</var>.</li></ol></li><li>Return <var>status</var>.</li></ol></li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records-hasthisbinding">
|
||
<h1><span class="secnum">8.1.1.4.8</span>HasThisBinding ( )</h1>
|
||
<emu-alg><ol><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records-hassuperbinding">
|
||
<h1><span class="secnum">8.1.1.4.9</span>HasSuperBinding ( )</h1>
|
||
<emu-alg><ol><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records-withbaseobject">
|
||
<h1><span class="secnum">8.1.1.4.10</span>WithBaseObject ( )</h1>
|
||
<p>Global Environment Records always return <emu-val>undefined</emu-val> as their WithBaseObject.</p>
|
||
<emu-alg><ol><li>Return <emu-val>undefined</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-global-environment-records-getthisbinding">
|
||
<h1><span class="secnum">8.1.1.4.11</span>GetThisBinding ( )</h1>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1965"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Return <var>envRec</var>.[[GlobalThisValue]].
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-hasvardeclaration">
|
||
<h1><span class="secnum">8.1.1.4.12</span>HasVarDeclaration ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1966"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method HasVarDeclaration for global Environment Records determines if
|
||
the argument identifier has a binding in this record that was created
|
||
using a <emu-nt id="_ref_9073"><a href="#prod-VariableStatement">VariableStatement</a></emu-nt> or a <emu-nt id="_ref_9074"><a href="#prod-FunctionDeclaration">FunctionDeclaration</a></emu-nt>:</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1967"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>varDeclaredNames</var> be <var>envRec</var>.[[VarNames]].</li><li>If <var>varDeclaredNames</var> contains <var>N</var>, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-haslexicaldeclaration">
|
||
<h1><span class="secnum">8.1.1.4.13</span>HasLexicalDeclaration ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1968"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method HasLexicalDeclaration for global Environment Records determines
|
||
if the argument identifier has a binding in this record that was created
|
||
using a lexical declaration such as a <emu-nt id="_ref_9075"><a href="#prod-LexicalDeclaration">LexicalDeclaration</a></emu-nt> or a <emu-nt id="_ref_9076"><a href="#prod-ClassDeclaration">ClassDeclaration</a></emu-nt>:</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1969"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>DclRec</var> be <var>envRec</var>.[[DeclarativeRecord]].</li><li>Return <var>DclRec</var>.HasBinding(<var>N</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-hasrestrictedglobalproperty">
|
||
<h1><span class="secnum">8.1.1.4.14</span>HasRestrictedGlobalProperty ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1970"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method HasRestrictedGlobalProperty for global Environment Records
|
||
determines if the argument identifier is the name of a property of the <emu-xref href="#sec-global-object" id="_ref_1971"><a href="#sec-global-object">global object</a></emu-xref> that must not be shadowed by a global lexical binding:</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1972"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>ObjRec</var> be <var>envRec</var>.[[ObjectRecord]].</li><li>Let <var>globalObject</var> be the binding object for <var>ObjRec</var>.</li><li>Let <var>existingProp</var> be ? <var>globalObject</var>.[[GetOwnProperty]](<var>N</var>).</li><li>If <var>existingProp</var> is <emu-val>undefined</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>existingProp</var>.[[Configurable]] is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Properties may exist upon a <emu-xref href="#sec-global-object" id="_ref_1973"><a href="#sec-global-object">global object</a></emu-xref>
|
||
that were directly created rather than being declared using a var or
|
||
function declaration. A global lexical binding may not be created that
|
||
has the same name as a non-configurable property of the <emu-xref href="#sec-global-object" id="_ref_1974"><a href="#sec-global-object">global object</a></emu-xref>. The global property <code>undefined</code> is an example of such a property.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-candeclareglobalvar">
|
||
<h1><span class="secnum">8.1.1.4.15</span>CanDeclareGlobalVar ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1975"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method CanDeclareGlobalVar for global Environment Records determines if
|
||
a corresponding CreateGlobalVarBinding call would succeed if called for
|
||
the same argument <var>N</var>. Redundant var declarations and var declarations for pre-existing <emu-xref href="#sec-global-object" id="_ref_1976"><a href="#sec-global-object">global object</a></emu-xref> properties are allowed.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1977"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>ObjRec</var> be <var>envRec</var>.[[ObjectRecord]].</li><li>Let <var>globalObject</var> be the binding object for <var>ObjRec</var>.</li><li>Let <var>hasProperty</var> be ? <emu-xref aoid="HasOwnProperty" id="_ref_1978"><a href="#sec-hasownproperty">HasOwnProperty</a></emu-xref>(<var>globalObject</var>, <var>N</var>).</li><li>If <var>hasProperty</var> is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>Return ? <emu-xref aoid="IsExtensible" id="_ref_1979"><a href="#sec-isextensible-o">IsExtensible</a></emu-xref>(<var>globalObject</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-candeclareglobalfunction">
|
||
<h1><span class="secnum">8.1.1.4.16</span>CanDeclareGlobalFunction ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1980"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method CanDeclareGlobalFunction for global Environment Records
|
||
determines if a corresponding CreateGlobalFunctionBinding call would
|
||
succeed if called for the same argument <var>N</var>.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1981"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>ObjRec</var> be <var>envRec</var>.[[ObjectRecord]].</li><li>Let <var>globalObject</var> be the binding object for <var>ObjRec</var>.</li><li>Let <var>existingProp</var> be ? <var>globalObject</var>.[[GetOwnProperty]](<var>N</var>).</li><li>If <var>existingProp</var> is <emu-val>undefined</emu-val>, return ? <emu-xref aoid="IsExtensible" id="_ref_1982"><a href="#sec-isextensible-o">IsExtensible</a></emu-xref>(<var>globalObject</var>).</li><li>If <var>existingProp</var>.[[Configurable]] is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>If <emu-xref aoid="IsDataDescriptor" id="_ref_1983"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>existingProp</var>) is <emu-val>true</emu-val> and <var>existingProp</var> has attribute values { [[Writable]]: <emu-val>true</emu-val>, [[Enumerable]]: <emu-val>true</emu-val> }, return <emu-val>true</emu-val>.</li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createglobalvarbinding">
|
||
<h1><span class="secnum">8.1.1.4.17</span>CreateGlobalVarBinding ( <var>N</var>, <var>D</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1984"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method CreateGlobalVarBinding for global Environment Records creates
|
||
and initializes a mutable binding in the associated object <emu-xref href="#sec-environment-records" id="_ref_1985"><a href="#sec-environment-records">Environment Record</a></emu-xref> and records the bound name in the associated [[VarNames]] <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1986"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>. If a binding already exists, it is reused and assumed to be initialized.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1987"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>ObjRec</var> be <var>envRec</var>.[[ObjectRecord]].</li><li>Let <var>globalObject</var> be the binding object for <var>ObjRec</var>.</li><li>Let <var>hasProperty</var> be ? <emu-xref aoid="HasOwnProperty" id="_ref_1988"><a href="#sec-hasownproperty">HasOwnProperty</a></emu-xref>(<var>globalObject</var>, <var>N</var>).</li><li>Let <var>extensible</var> be ? <emu-xref aoid="IsExtensible" id="_ref_1989"><a href="#sec-isextensible-o">IsExtensible</a></emu-xref>(<var>globalObject</var>).</li><li>If <var>hasProperty</var> is <emu-val>false</emu-val> and <var>extensible</var> is <emu-val>true</emu-val>, then<ol><li>Perform ? <var>ObjRec</var>.CreateMutableBinding(<var>N</var>, <var>D</var>).</li><li>Perform ? <var>ObjRec</var>.InitializeBinding(<var>N</var>, <emu-val>undefined</emu-val>).</li></ol></li><li>Let <var>varDeclaredNames</var> be <var>envRec</var>.[[VarNames]].</li><li>If <var>varDeclaredNames</var> does not contain <var>N</var>, then<ol><li>Append <var>N</var> to <var>varDeclaredNames</var>.</li></ol></li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_1990"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createglobalfunctionbinding">
|
||
<h1><span class="secnum">8.1.1.4.18</span>CreateGlobalFunctionBinding ( <var>N</var>, <var>V</var>, <var>D</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_1991"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method CreateGlobalFunctionBinding for global Environment Records
|
||
creates and initializes a mutable binding in the associated object <emu-xref href="#sec-environment-records" id="_ref_1992"><a href="#sec-environment-records">Environment Record</a></emu-xref> and records the bound name in the associated [[VarNames]] <emu-xref href="#sec-list-and-record-specification-type" id="_ref_1993"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>. If a binding already exists, it is replaced.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the global <emu-xref href="#sec-environment-records" id="_ref_1994"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li>Let <var>ObjRec</var> be <var>envRec</var>.[[ObjectRecord]].</li><li>Let <var>globalObject</var> be the binding object for <var>ObjRec</var>.</li><li>Let <var>existingProp</var> be ? <var>globalObject</var>.[[GetOwnProperty]](<var>N</var>).</li><li>If <var>existingProp</var> is <emu-val>undefined</emu-val> or <var>existingProp</var>.[[Configurable]] is <emu-val>true</emu-val>, then<ol><li>Let <var>desc</var> be the PropertyDescriptor { [[Value]]: <var>V</var>, [[Writable]]: <emu-val>true</emu-val>, [[Enumerable]]: <emu-val>true</emu-val>, [[Configurable]]: <var>D</var> }.</li></ol></li><li>Else,<ol><li>Let <var>desc</var> be the PropertyDescriptor { [[Value]]: <var>V</var> }.</li></ol></li><li>Perform ? <emu-xref aoid="DefinePropertyOrThrow" id="_ref_1995"><a href="#sec-definepropertyorthrow">DefinePropertyOrThrow</a></emu-xref>(<var>globalObject</var>, <var>N</var>, <var>desc</var>).</li><li><emu-xref href="#sec-list-and-record-specification-type" id="_ref_1996"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> that the binding for <var>N</var> in <var>ObjRec</var> has been initialized.</li><li>Perform ? <emu-xref aoid="Set" id="_ref_1997"><a href="#sec-set-o-p-v-throw">Set</a></emu-xref>(<var>globalObject</var>, <var>N</var>, <var>V</var>, <emu-val>false</emu-val>).</li><li>Let <var>varDeclaredNames</var> be <var>envRec</var>.[[VarNames]].</li><li>If <var>varDeclaredNames</var> does not contain <var>N</var>, then<ol><li>Append <var>N</var> to <var>varDeclaredNames</var>.</li></ol></li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_1998"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Global function declarations are always represented as own properties of the <emu-xref href="#sec-global-object" id="_ref_1999"><a href="#sec-global-object">global object</a></emu-xref>.
|
||
If possible, an existing own property is reconfigured to have a
|
||
standard set of attribute values. Steps 8-9 are equivalent to what
|
||
calling the InitializeBinding concrete method would do and if <var>globalObject</var> is a Proxy will produce the same sequence of Proxy trap calls.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-module-environment-records">
|
||
<h1><span class="secnum">8.1.1.5</span>Module Environment Records</h1>
|
||
<p>A module <emu-xref href="#sec-environment-records" id="_ref_2000"><a href="#sec-environment-records">Environment Record</a></emu-xref> is a declarative <emu-xref href="#sec-environment-records" id="_ref_2001"><a href="#sec-environment-records">Environment Record</a></emu-xref> that is used to represent the outer scope of an ECMAScript <emu-nt id="_ref_9077"><a href="#prod-Module">Module</a></emu-nt>.
|
||
In additional to normal mutable and immutable bindings, module
|
||
Environment Records also provide immutable import bindings which are
|
||
bindings that provide indirect access to a target binding that exists in
|
||
another <emu-xref href="#sec-environment-records" id="_ref_2002"><a href="#sec-environment-records">Environment Record</a></emu-xref>.</p>
|
||
<p>Module Environment Records support all of the declarative <emu-xref href="#sec-environment-records" id="_ref_2003"><a href="#sec-environment-records">Environment Record</a></emu-xref> methods listed in <emu-xref href="#table-15" id="_ref_166"><a href="#table-15">Table 14</a></emu-xref>
|
||
and share the same specifications for all of those methods except for
|
||
GetBindingValue, DeleteBinding, HasThisBinding and GetThisBinding. In
|
||
addition, module Environment Records support the methods listed in <emu-xref href="#table-20" id="_ref_167"><a href="#table-20">Table 19</a></emu-xref>:</p>
|
||
<emu-table id="table-20" caption="Additional Methods of Module Environment Records"><figure><figcaption>Table 19: Additional Methods of Module Environment Records</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Method
|
||
|
||
</th>
|
||
<th>
|
||
Purpose
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
CreateImportBinding(N, M, N2)
|
||
|
||
</td>
|
||
<td>
|
||
Create an immutable indirect binding in a module <emu-xref href="#sec-environment-records" id="_ref_2004"><a href="#sec-environment-records">Environment Record</a></emu-xref>. The String value <var>N</var> is the text of the bound name. <var>M</var> is a <emu-xref href="#sec-abstract-module-records" id="_ref_2005"><a href="#sec-abstract-module-records">Module Record</a></emu-xref>, and <var>N2</var> is a binding that exists in M's module <emu-xref href="#sec-environment-records" id="_ref_2006"><a href="#sec-environment-records">Environment Record</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
GetThisBinding()
|
||
|
||
</td>
|
||
<td>
|
||
Return the value of this <emu-xref href="#sec-environment-records" id="_ref_2007"><a href="#sec-environment-records">Environment Record</a></emu-xref>'s <code>this</code> binding.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>The behaviour of the additional concrete specification
|
||
methods for module Environment Records are defined by the following
|
||
algorithms:</p>
|
||
|
||
<emu-clause id="sec-module-environment-records-getbindingvalue-n-s">
|
||
<h1><span class="secnum">8.1.1.5.1</span>GetBindingValue ( <var>N</var>, <var>S</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_2008"><a href="#sec-environment-records">Environment Record</a></emu-xref>
|
||
method GetBindingValue for module Environment Records returns the value
|
||
of its bound identifier whose name is the value of the argument <var>N</var>.
|
||
However, if the binding is an indirect binding the value of the target
|
||
binding is returned. If the binding exists but is uninitialized a <emu-val>ReferenceError</emu-val> is thrown.</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2009"><a href="#assert">Assert</a></emu-xref>: <var>S</var> is <emu-val>true</emu-val>.</li><li>Let <var>envRec</var> be the module <emu-xref href="#sec-environment-records" id="_ref_2010"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li><emu-xref href="#assert" id="_ref_2011"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var> has a binding for <var>N</var>.</li><li>If the binding for <var>N</var> is an indirect binding, then<ol><li>Let <var>M</var> and <var>N2</var> be the indirection values provided when this binding for <var>N</var> was created.</li><li>Let <var>targetEnv</var> be <var>M</var>.[[Environment]].</li><li>If <var>targetEnv</var> is <emu-val>undefined</emu-val>, throw a <emu-val>ReferenceError</emu-val> exception.</li><li>Let <var>targetER</var> be <var>targetEnv</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2012"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref>.</li><li>Return ? <var>targetER</var>.GetBindingValue(<var>N2</var>, <emu-val>true</emu-val>).</li></ol></li><li>If the binding for <var>N</var> in <var>envRec</var> is an uninitialized binding, throw a <emu-val>ReferenceError</emu-val> exception.</li><li>Return the value currently bound to <var>N</var> in <var>envRec</var>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p><var>S</var> will always be <emu-val>true</emu-val> because a <emu-nt id="_ref_9078"><a href="#prod-Module">Module</a></emu-nt> is always <emu-xref href="#sec-strict-mode-code" id="_ref_2013"><a href="#sec-strict-mode-code">strict mode code</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-module-environment-records-deletebinding-n">
|
||
<h1><span class="secnum">8.1.1.5.2</span>DeleteBinding ( <var>N</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_2014"><a href="#sec-environment-records">Environment Record</a></emu-xref> method DeleteBinding for module Environment Records refuses to delete bindings.</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2015"><a href="#assert">Assert</a></emu-xref>: This method is never invoked. See <emu-xref href="#sec-delete-operator-static-semantics-early-errors" id="_ref_168"><a href="#sec-delete-operator-static-semantics-early-errors">12.5.3.1</a></emu-xref>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Module Environment Records are only used within strict code and an <emu-xref href="#early-error" id="_ref_2016"><a href="#early-error">early error</a></emu-xref> rule prevents the delete operator, in strict code, from being applied to a <emu-xref href="#sec-reference-specification-type" id="_ref_2017"><a href="#sec-reference-specification-type">Reference</a></emu-xref> that would resolve to a module <emu-xref href="#sec-environment-records" id="_ref_2018"><a href="#sec-environment-records">Environment Record</a></emu-xref> binding. See <emu-xref href="#sec-delete-operator-static-semantics-early-errors" id="_ref_169"><a href="#sec-delete-operator-static-semantics-early-errors">12.5.3.1</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-module-environment-records-hasthisbinding">
|
||
<h1><span class="secnum">8.1.1.5.3</span>HasThisBinding ( )</h1>
|
||
<p>Module Environment Records provide a <code>this</code> binding.</p>
|
||
<emu-alg><ol><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-module-environment-records-getthisbinding">
|
||
<h1><span class="secnum">8.1.1.5.4</span>GetThisBinding ( )</h1>
|
||
<emu-alg><ol><li>Return <emu-val>undefined</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createimportbinding">
|
||
<h1><span class="secnum">8.1.1.5.5</span>CreateImportBinding ( <var>N</var>, <var>M</var>, <var>N2</var> )</h1>
|
||
<p>The concrete <emu-xref href="#sec-environment-records" id="_ref_2019"><a href="#sec-environment-records">Environment Record</a></emu-xref> method CreateImportBinding for module Environment Records creates a new initialized immutable indirect binding for the name <var>N</var>. A binding must not already exist in this <emu-xref href="#sec-environment-records" id="_ref_2020"><a href="#sec-environment-records">Environment Record</a></emu-xref> for <var>N</var>. <var>M</var> is a <emu-xref href="#sec-abstract-module-records" id="_ref_2021"><a href="#sec-abstract-module-records">Module Record</a></emu-xref>, and <var>N2</var> is the name of a binding that exists in M's module <emu-xref href="#sec-environment-records" id="_ref_2022"><a href="#sec-environment-records">Environment Record</a></emu-xref>. Accesses to the value of the new binding will indirectly access the bound value of the target binding.</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be the module <emu-xref href="#sec-environment-records" id="_ref_2023"><a href="#sec-environment-records">Environment Record</a></emu-xref> for which the method was invoked.</li><li><emu-xref href="#assert" id="_ref_2024"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var> does not already have a binding for <var>N</var>.</li><li><emu-xref href="#assert" id="_ref_2025"><a href="#assert">Assert</a></emu-xref>: <var>M</var> is a <emu-xref href="#sec-abstract-module-records" id="_ref_2026"><a href="#sec-abstract-module-records">Module Record</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_2027"><a href="#assert">Assert</a></emu-xref>: When <var>M</var>.[[Environment]] is instantiated it will have a direct binding for <var>N2</var>.</li><li>Create an immutable indirect binding in <var>envRec</var> for <var>N</var> that references <var>M</var> and <var>N2</var> as its target binding and record that the binding is initialized.</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_2028"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-lexical-environment-operations">
|
||
<h1><span class="secnum">8.1.2</span>Lexical Environment Operations</h1>
|
||
<p>The following <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_2029"><a href="#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref> are used in this specification to operate upon lexical environments:</p>
|
||
|
||
<emu-clause id="sec-getidentifierreference" aoid="GetIdentifierReference">
|
||
<h1><span class="secnum">8.1.2.1</span>GetIdentifierReference ( <var>lex</var>, <var>name</var>, <var>strict</var> )</h1>
|
||
<p>The abstract operation GetIdentifierReference is called with a <emu-xref href="#sec-lexical-environments" id="_ref_2030"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> <var>lex</var>, a String <var>name</var>, and a Boolean flag <var>strict</var>. The value of <var>lex</var> may be <emu-val>null</emu-val>. When called, the following steps are performed:</p>
|
||
<emu-alg><ol><li>If <var>lex</var> is the value <emu-val>null</emu-val>, then<ol><li>Return a value of type <emu-xref href="#sec-reference-specification-type" id="_ref_2031"><a href="#sec-reference-specification-type">Reference</a></emu-xref> whose base value component is <emu-val>undefined</emu-val>, whose referenced name component is <var>name</var>, and whose strict reference flag is <var>strict</var>.</li></ol></li><li>Let <var>envRec</var> be <var>lex</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2032"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref>.</li><li>Let <var>exists</var> be ? <var>envRec</var>.HasBinding(<var>name</var>).</li><li>If <var>exists</var> is <emu-val>true</emu-val>, then<ol><li>Return a value of type <emu-xref href="#sec-reference-specification-type" id="_ref_2033"><a href="#sec-reference-specification-type">Reference</a></emu-xref> whose base value component is <var>envRec</var>, whose referenced name component is <var>name</var>, and whose strict reference flag is <var>strict</var>.</li></ol></li><li>Else,<ol><li>Let <var>outer</var> be the value of <var>lex</var>'s outer environment reference.</li><li>Return ? <emu-xref aoid="GetIdentifierReference" id="_ref_2034"><a href="#sec-getidentifierreference">GetIdentifierReference</a></emu-xref>(<var>outer</var>, <var>name</var>, <var>strict</var>).
|
||
</li></ol></li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-newdeclarativeenvironment" aoid="NewDeclarativeEnvironment">
|
||
<h1><span class="secnum">8.1.2.2</span>NewDeclarativeEnvironment ( <var>E</var> )</h1>
|
||
<p>When the abstract operation NewDeclarativeEnvironment is called with a <emu-xref href="#sec-lexical-environments" id="_ref_2035"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> as argument <var>E</var> the following steps are performed:</p>
|
||
<emu-alg><ol><li>Let <var>env</var> be a new <emu-xref href="#sec-lexical-environments" id="_ref_2036"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref>.</li><li>Let <var>envRec</var> be a new declarative <emu-xref href="#sec-environment-records" id="_ref_2037"><a href="#sec-environment-records">Environment Record</a></emu-xref> containing no bindings.</li><li>Set <var>env</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2038"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref> to <var>envRec</var>.</li><li>Set the outer lexical environment reference of <var>env</var> to <var>E</var>.</li><li>Return <var>env</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-newobjectenvironment" aoid="NewObjectEnvironment">
|
||
<h1><span class="secnum">8.1.2.3</span>NewObjectEnvironment ( <var>O</var>, <var>E</var> )</h1>
|
||
<p>When the abstract operation NewObjectEnvironment is called with an Object <var>O</var> and a <emu-xref href="#sec-lexical-environments" id="_ref_2039"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> <var>E</var> as arguments, the following steps are performed:</p>
|
||
<emu-alg><ol><li>Let <var>env</var> be a new <emu-xref href="#sec-lexical-environments" id="_ref_2040"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref>.</li><li>Let <var>envRec</var> be a new object <emu-xref href="#sec-environment-records" id="_ref_2041"><a href="#sec-environment-records">Environment Record</a></emu-xref> containing <var>O</var> as the binding object.</li><li>Set <var>env</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2042"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref> to <var>envRec</var>.</li><li>Set the outer lexical environment reference of <var>env</var> to <var>E</var>.</li><li>Return <var>env</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-newfunctionenvironment" aoid="NewFunctionEnvironment">
|
||
<h1><span class="secnum">8.1.2.4</span>NewFunctionEnvironment ( <var>F</var>, <var>newTarget</var> )</h1>
|
||
<p>When the abstract operation NewFunctionEnvironment is called with arguments <var>F</var> and <var>newTarget</var> the following steps are performed:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2043"><a href="#assert">Assert</a></emu-xref>: <var>F</var> is an ECMAScript function.</li><li><emu-xref href="#assert" id="_ref_2044"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_2045"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>newTarget</var>) is Undefined or Object.</li><li>Let <var>env</var> be a new <emu-xref href="#sec-lexical-environments" id="_ref_2046"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref>.</li><li>Let <var>envRec</var> be a new <emu-xref href="#sec-function-environment-records" id="_ref_2047"><a href="#sec-function-environment-records">function Environment Record</a></emu-xref> containing no bindings.</li><li>Set <var>envRec</var>.[[FunctionObject]] to <var>F</var>.</li><li>If <var>F</var>.[[ThisMode]] is <emu-const>lexical</emu-const>, set <var>envRec</var>.[[ThisBindingStatus]] to <code>"lexical"</code>.</li><li>Else, set <var>envRec</var>.[[ThisBindingStatus]] to <code>"uninitialized"</code>.</li><li>Let <var>home</var> be <var>F</var>.[[HomeObject]].</li><li>Set <var>envRec</var>.[[HomeObject]] to <var>home</var>.</li><li>Set <var>envRec</var>.[[NewTarget]] to <var>newTarget</var>.</li><li>Set <var>env</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2048"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref> to <var>envRec</var>.</li><li>Set the outer lexical environment reference of <var>env</var> to <var>F</var>.[[Environment]].</li><li>Return <var>env</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-newglobalenvironment" aoid="NewGlobalEnvironment">
|
||
<h1><span class="secnum">8.1.2.5</span>NewGlobalEnvironment ( <var>G</var>, <var>thisValue</var> )</h1>
|
||
<p>When the abstract operation NewGlobalEnvironment is called with arguments <var>G</var> and <var>thisValue</var>, the following steps are performed:</p>
|
||
<emu-alg><ol><li>Let <var>env</var> be a new <emu-xref href="#sec-lexical-environments" id="_ref_2049"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref>.</li><li>Let <var>objRec</var> be a new object <emu-xref href="#sec-environment-records" id="_ref_2050"><a href="#sec-environment-records">Environment Record</a></emu-xref> containing <var>G</var> as the binding object.</li><li>Let <var>dclRec</var> be a new declarative <emu-xref href="#sec-environment-records" id="_ref_2051"><a href="#sec-environment-records">Environment Record</a></emu-xref> containing no bindings.</li><li>Let <var>globalRec</var> be a new global <emu-xref href="#sec-environment-records" id="_ref_2052"><a href="#sec-environment-records">Environment Record</a></emu-xref>.</li><li>Set <var>globalRec</var>.[[ObjectRecord]] to <var>objRec</var>.</li><li>Set <var>globalRec</var>.[[GlobalThisValue]] to <var>thisValue</var>.</li><li>Set <var>globalRec</var>.[[DeclarativeRecord]] to <var>dclRec</var>.</li><li>Set <var>globalRec</var>.[[VarNames]] to a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2053"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Set <var>env</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2054"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref> to <var>globalRec</var>.</li><li>Set the outer lexical environment reference of <var>env</var> to <emu-val>null</emu-val>.</li><li>Return <var>env</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-newmoduleenvironment" aoid="NewModuleEnvironment">
|
||
<h1><span class="secnum">8.1.2.6</span>NewModuleEnvironment ( <var>E</var> )</h1>
|
||
<p>When the abstract operation NewModuleEnvironment is called with a <emu-xref href="#sec-lexical-environments" id="_ref_2055"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> argument <var>E</var> the following steps are performed:</p>
|
||
<emu-alg><ol><li>Let <var>env</var> be a new <emu-xref href="#sec-lexical-environments" id="_ref_2056"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref>.</li><li>Let <var>envRec</var> be a new module <emu-xref href="#sec-environment-records" id="_ref_2057"><a href="#sec-environment-records">Environment Record</a></emu-xref> containing no bindings.</li><li>Set <var>env</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2058"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref> to <var>envRec</var>.</li><li>Set the outer lexical environment reference of <var>env</var> to <var>E</var>.</li><li>Return <var>env</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-code-realms">
|
||
<h1><span class="secnum">8.2</span>Realms</h1>
|
||
<p>Before it is evaluated, all ECMAScript code must be associated with a <dfn id="realm">realm</dfn>. Conceptually, a <emu-xref href="#realm" id="_ref_2059"><a href="#realm">realm</a></emu-xref> consists of a set of intrinsic objects, an ECMAScript <emu-xref href="#global-environment" id="_ref_2060"><a href="#global-environment">global environment</a></emu-xref>, all of the ECMAScript code that is loaded within the scope of that <emu-xref href="#global-environment" id="_ref_2061"><a href="#global-environment">global environment</a></emu-xref>, and other associated state and resources.</p>
|
||
<p>A <emu-xref href="#realm" id="_ref_2062"><a href="#realm">realm</a></emu-xref> is represented in this specification as a <dfn id="realm-record">Realm Record</dfn> with the fields specified in <emu-xref href="#table-21" id="_ref_170"><a href="#table-21">Table 20</a></emu-xref>:</p>
|
||
<emu-table id="table-21" caption="Realm Record Fields"><figure><figcaption>Table 20: <emu-xref href="#realm-record" id="_ref_2063"><a href="#realm-record">Realm Record</a></emu-xref> Fields</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Field Name
|
||
|
||
</th>
|
||
<th>
|
||
Value
|
||
|
||
</th>
|
||
<th>
|
||
Meaning
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Intrinsics]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-xref href="#sec-list-and-record-specification-type" id="_ref_2064"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> whose field names are intrinsic keys and whose values are objects
|
||
|
||
</td>
|
||
<td>
|
||
The intrinsic values used by code associated with this <emu-xref href="#realm" id="_ref_2065"><a href="#realm">realm</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[GlobalObject]]
|
||
|
||
</td>
|
||
<td>
|
||
Object
|
||
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#sec-global-object" id="_ref_2066"><a href="#sec-global-object">global object</a></emu-xref> for this <emu-xref href="#realm" id="_ref_2067"><a href="#realm">realm</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[GlobalEnv]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-xref href="#sec-lexical-environments" id="_ref_2068"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#global-environment" id="_ref_2069"><a href="#global-environment">global environment</a></emu-xref> for this <emu-xref href="#realm" id="_ref_2070"><a href="#realm">realm</a></emu-xref>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[TemplateMap]]
|
||
|
||
</td>
|
||
<td>
|
||
A <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2071"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2072"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> { [[Site]]: <emu-xref href="#sec-syntactic-grammar" id="_ref_2073"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref>, [[Array]]: Object }.
|
||
|
||
</td>
|
||
<td>
|
||
<p>Template objects are canonicalized separately for each <emu-xref href="#realm" id="_ref_2074"><a href="#realm">realm</a></emu-xref> using its <emu-xref href="#realm-record" id="_ref_2075"><a href="#realm-record">Realm Record</a></emu-xref>'s [[TemplateMap]]. Each [[Site]] value is a <emu-xref href="#sec-syntactic-grammar" id="_ref_2076"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> that is a <emu-nt id="_ref_9079"><a href="#prod-TemplateLiteral">TemplateLiteral</a></emu-nt>. The associated [[Array]] value is the corresponding template object that is passed to a tag function.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">Once a <emu-xref href="#sec-syntactic-grammar" id="_ref_2077"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref>
|
||
becomes unreachable, the corresponding [[Array]] is also unreachable,
|
||
and it would be unobservable if an implementation removed the pair from
|
||
the [[TemplateMap]] list.</div></emu-note>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[HostDefined]]
|
||
|
||
</td>
|
||
<td>
|
||
Any, default value is <emu-val>undefined</emu-val>.
|
||
|
||
</td>
|
||
<td>
|
||
Field reserved for use by host environments that need to associate additional information with a <emu-xref href="#realm-record" id="_ref_2078"><a href="#realm-record">Realm Record</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
|
||
<emu-clause id="sec-createrealm" aoid="CreateRealm">
|
||
<h1><span class="secnum">8.2.1</span>CreateRealm ( )</h1>
|
||
<p>The abstract operation CreateRealm with no arguments performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>realmRec</var> be a new <emu-xref href="#realm-record" id="_ref_2079"><a href="#realm-record">Realm Record</a></emu-xref>.</li><li>Perform <emu-xref aoid="CreateIntrinsics" id="_ref_2080"><a href="#sec-createintrinsics">CreateIntrinsics</a></emu-xref>(<var>realmRec</var>).</li><li>Set <var>realmRec</var>.[[GlobalObject]] to <emu-val>undefined</emu-val>.</li><li>Set <var>realmRec</var>.[[GlobalEnv]] to <emu-val>undefined</emu-val>.</li><li>Set <var>realmRec</var>.[[TemplateMap]] to a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2081"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Return <var>realmRec</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-createintrinsics" aoid="CreateIntrinsics">
|
||
<h1><span class="secnum">8.2.2</span>CreateIntrinsics ( <var>realmRec</var> )</h1>
|
||
<p>The abstract operation CreateIntrinsics with argument <var>realmRec</var> performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>intrinsics</var> be a new <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2082"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref>.</li><li>Set <var>realmRec</var>.[[Intrinsics]] to <var>intrinsics</var>.</li><li>Let <var>objProto</var> be <emu-xref aoid="ObjectCreate" id="_ref_2083"><a href="#sec-objectcreate">ObjectCreate</a></emu-xref>(<emu-val>null</emu-val>).</li><li>Set <var>intrinsics</var>.[[<emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_2084"><a href="#sec-properties-of-the-object-prototype-object">%ObjectPrototype%</a></emu-xref>]] to <var>objProto</var>.</li><li>Let <var>throwerSteps</var> be the algorithm steps specified in <emu-xref href="#sec-%throwtypeerror%" id="_ref_171"><a href="#sec-%throwtypeerror%">9.2.9.1</a></emu-xref> for the <emu-xref href="#sec-%throwtypeerror%" id="_ref_2085"><a href="#sec-%throwtypeerror%">%ThrowTypeError%</a></emu-xref> function.</li><li>Let <var>thrower</var> be <emu-xref aoid="CreateBuiltinFunction" id="_ref_2086"><a href="#sec-createbuiltinfunction">CreateBuiltinFunction</a></emu-xref>(<var>throwerSteps</var>, « », <var>realmRec</var>, <emu-val>null</emu-val>).</li><li>Set <var>intrinsics</var>.[[<emu-xref href="#sec-%throwtypeerror%" id="_ref_2087"><a href="#sec-%throwtypeerror%">%ThrowTypeError%</a></emu-xref>]] to <var>thrower</var>.</li><li>Let <var>noSteps</var> be an empty sequence of algorithm steps.</li><li>Let <var>funcProto</var> be <emu-xref aoid="CreateBuiltinFunction" id="_ref_2088"><a href="#sec-createbuiltinfunction">CreateBuiltinFunction</a></emu-xref>(<var>noSteps</var>, « », <var>realmRec</var>, <var>objProto</var>).</li><li>Set <var>intrinsics</var>.[[<emu-xref href="#sec-properties-of-the-function-prototype-object" id="_ref_2089"><a href="#sec-properties-of-the-function-prototype-object">%FunctionPrototype%</a></emu-xref>]] to <var>funcProto</var>.</li><li>Call <var>thrower</var>.[[SetPrototypeOf]](<var>funcProto</var>).</li><li>Perform <emu-xref aoid="AddRestrictedFunctionProperties" id="_ref_2090"><a href="#sec-addrestrictedfunctionproperties">AddRestrictedFunctionProperties</a></emu-xref>(<var>funcProto</var>, <var>realmRec</var>).</li><li>Set fields of <var>intrinsics</var> with the values listed in <emu-xref href="#table-7" id="_ref_172"><a href="#table-7">Table 7</a></emu-xref>
|
||
that have not already been handled above. The field names are the names
|
||
listed in column one of the table. The value of each field is a new
|
||
object value fully and recursively populated with property values as
|
||
defined by the specification of each object in clauses 18-26. All object
|
||
property values are newly created object values. All values that are
|
||
built-in function objects are created by performing <emu-xref aoid="CreateBuiltinFunction" id="_ref_2091"><a href="#sec-createbuiltinfunction">CreateBuiltinFunction</a></emu-xref>(<steps>, <slots>, <var>realmRec</var>,
|
||
<prototype>) where <steps> is the definition of that
|
||
function provided by this specification, <slots> is a list of the
|
||
names, if any, of the function's specified internal slots, and
|
||
<prototype> is the specified value of the function's [[Prototype]]
|
||
internal slot. The creation of the intrinsics and their properties must
|
||
be ordered to avoid any dependencies upon objects that have not yet
|
||
been created.</li><li>Return <var>intrinsics</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-setrealmglobalobject" aoid="SetRealmGlobalObject">
|
||
<h1><span class="secnum">8.2.3</span>SetRealmGlobalObject ( <var>realmRec</var>, <var>globalObj</var>, <var>thisValue</var> )</h1>
|
||
<p>The abstract operation SetRealmGlobalObject with arguments <var>realmRec</var>, <var>globalObj</var>, and <var>thisValue</var> performs the following steps:</p>
|
||
<emu-alg><ol><li>If <var>globalObj</var> is <emu-val>undefined</emu-val>, then<ol><li>Let <var>intrinsics</var> be <var>realmRec</var>.[[Intrinsics]].</li><li>Set <var>globalObj</var> to <emu-xref aoid="ObjectCreate" id="_ref_2092"><a href="#sec-objectcreate">ObjectCreate</a></emu-xref>(<var>intrinsics</var>.[[<emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_2093"><a href="#sec-properties-of-the-object-prototype-object">%ObjectPrototype%</a></emu-xref>]]).</li></ol></li><li><emu-xref href="#assert" id="_ref_2094"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_2095"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>globalObj</var>) is Object.</li><li>If <var>thisValue</var> is <emu-val>undefined</emu-val>, set <var>thisValue</var> to <var>globalObj</var>.</li><li>Set <var>realmRec</var>.[[GlobalObject]] to <var>globalObj</var>.</li><li>Let <var>newGlobalEnv</var> be <emu-xref aoid="NewGlobalEnvironment" id="_ref_2096"><a href="#sec-newglobalenvironment">NewGlobalEnvironment</a></emu-xref>(<var>globalObj</var>, <var>thisValue</var>).</li><li>Set <var>realmRec</var>.[[GlobalEnv]] to <var>newGlobalEnv</var>.</li><li>Return <var>realmRec</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-setdefaultglobalbindings" aoid="SetDefaultGlobalBindings">
|
||
<h1><span class="secnum">8.2.4</span>SetDefaultGlobalBindings ( <var>realmRec</var> )</h1>
|
||
<p>The abstract operation SetDefaultGlobalBindings with argument <var>realmRec</var> performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>global</var> be <var>realmRec</var>.[[GlobalObject]].</li><li>For each property of the Global Object specified in clause <emu-xref href="#sec-global-object" id="_ref_173"><a href="#sec-global-object">18</a></emu-xref>, do<ol><li>Let <var>name</var> be the String value of the <emu-xref href="#property-name" id="_ref_2097"><a href="#property-name">property name</a></emu-xref>.</li><li>Let <var>desc</var> be the fully populated <emu-xref href="#sec-object-type" id="_ref_2098"><a href="#sec-object-type">data property</a></emu-xref> descriptor for the property containing the specified attributes for the property. For properties listed in <emu-xref href="#sec-function-properties-of-the-global-object" id="_ref_174"><a href="#sec-function-properties-of-the-global-object">18.2</a></emu-xref>, <emu-xref href="#sec-constructor-properties-of-the-global-object" id="_ref_175"><a href="#sec-constructor-properties-of-the-global-object">18.3</a></emu-xref>, or <emu-xref href="#sec-other-properties-of-the-global-object" id="_ref_176"><a href="#sec-other-properties-of-the-global-object">18.4</a></emu-xref> the value of the [[Value]] attribute is the corresponding intrinsic object from <var>realmRec</var>.</li><li>Perform ? <emu-xref aoid="DefinePropertyOrThrow" id="_ref_2099"><a href="#sec-definepropertyorthrow">DefinePropertyOrThrow</a></emu-xref>(<var>global</var>, <var>name</var>, <var>desc</var>).</li></ol></li><li>Return <var>global</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-execution-contexts">
|
||
<h1><span class="secnum">8.3</span>Execution Contexts</h1>
|
||
<p>An <dfn>execution context</dfn> is a specification device that
|
||
is used to track the runtime evaluation of code by an ECMAScript
|
||
implementation. At any point in time, there is at most one execution
|
||
context per <emu-xref href="#agent" id="_ref_2100"><a href="#agent">agent</a></emu-xref> that is actually executing code. This is known as the <emu-xref href="#agent" id="_ref_2101"><a href="#agent">agent</a></emu-xref>'s <dfn id="running-execution-context">running execution context</dfn>. All references to the <emu-xref href="#running-execution-context" id="_ref_2102"><a href="#running-execution-context">running execution context</a></emu-xref> in this specification denote the <emu-xref href="#running-execution-context" id="_ref_2103"><a href="#running-execution-context">running execution context</a></emu-xref> of the <emu-xref href="#surrounding-agent" id="_ref_2104"><a href="#surrounding-agent">surrounding agent</a></emu-xref>.</p>
|
||
<p>The <dfn id="execution-context-stack">execution context stack</dfn> is used to track execution contexts. The <emu-xref href="#running-execution-context" id="_ref_2105"><a href="#running-execution-context">running execution context</a></emu-xref>
|
||
is always the top element of this stack. A new execution context is
|
||
created whenever control is transferred from the executable code
|
||
associated with the currently <emu-xref href="#running-execution-context" id="_ref_2106"><a href="#running-execution-context">running execution context</a></emu-xref>
|
||
to executable code that is not associated with that execution context.
|
||
The newly created execution context is pushed onto the stack and becomes
|
||
the <emu-xref href="#running-execution-context" id="_ref_2107"><a href="#running-execution-context">running execution context</a></emu-xref>.</p>
|
||
<p>An execution context contains whatever implementation specific
|
||
state is necessary to track the execution progress of its associated
|
||
code. Each execution context has at least the state components listed in
|
||
<emu-xref href="#table-22" id="_ref_177"><a href="#table-22">Table 21</a></emu-xref>.</p>
|
||
<emu-table id="table-22" caption="State Components for All Execution Contexts"><figure><figcaption>Table 21: State Components for All Execution Contexts</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Component
|
||
|
||
</th>
|
||
<th>
|
||
Purpose
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
code evaluation state
|
||
|
||
</td>
|
||
<td>
|
||
Any state needed to perform, suspend, and resume evaluation of the code associated with this <emu-xref href="#sec-execution-contexts" id="_ref_2108"><a href="#sec-execution-contexts">execution context</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Function
|
||
|
||
</td>
|
||
<td>
|
||
If this <emu-xref href="#sec-execution-contexts" id="_ref_2109"><a href="#sec-execution-contexts">execution context</a></emu-xref> is evaluating the code of a <emu-xref href="#function-object" id="_ref_2110"><a href="#function-object">function object</a></emu-xref>, then the value of this component is that <emu-xref href="#function-object" id="_ref_2111"><a href="#function-object">function object</a></emu-xref>. If the context is evaluating the code of a <emu-nt id="_ref_9080"><a href="#prod-Script">Script</a></emu-nt> or <emu-nt id="_ref_9081"><a href="#prod-Module">Module</a></emu-nt>, the value is <emu-val>null</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<emu-xref href="#realm" id="_ref_2112"><a href="#realm">Realm</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#realm-record" id="_ref_2113"><a href="#realm-record">Realm Record</a></emu-xref> from which associated code accesses ECMAScript resources.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
ScriptOrModule
|
||
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#sec-abstract-module-records" id="_ref_2114"><a href="#sec-abstract-module-records">Module Record</a></emu-xref> or <emu-xref href="#script-record" id="_ref_2115"><a href="#script-record">Script Record</a></emu-xref> from which associated code originates. If there is no originating script or module, as is the case for the original <emu-xref href="#sec-execution-contexts" id="_ref_2116"><a href="#sec-execution-contexts">execution context</a></emu-xref> created in <emu-xref aoid="InitializeHostDefinedRealm" id="_ref_2117"><a href="#sec-initializehostdefinedrealm">InitializeHostDefinedRealm</a></emu-xref>, the value is <emu-val>null</emu-val>.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>Evaluation of code by the <emu-xref href="#running-execution-context" id="_ref_2118"><a href="#running-execution-context">running execution context</a></emu-xref> may be suspended at various points defined within this specification. Once the <emu-xref href="#running-execution-context" id="_ref_2119"><a href="#running-execution-context">running execution context</a></emu-xref> has been suspended a different execution context may become the <emu-xref href="#running-execution-context" id="_ref_2120"><a href="#running-execution-context">running execution context</a></emu-xref> and commence evaluating its code. At some later time a suspended execution context may again become the <emu-xref href="#running-execution-context" id="_ref_2121"><a href="#running-execution-context">running execution context</a></emu-xref> and continue evaluating its code at the point where it had previously been suspended. Transition of the <emu-xref href="#running-execution-context" id="_ref_2122"><a href="#running-execution-context">running execution context</a></emu-xref>
|
||
status among execution contexts usually occurs in stack-like
|
||
last-in/first-out manner. However, some ECMAScript features require
|
||
non-LIFO transitions of the <emu-xref href="#running-execution-context" id="_ref_2123"><a href="#running-execution-context">running execution context</a></emu-xref>.</p>
|
||
<p>The value of the <emu-xref href="#realm" id="_ref_2124"><a href="#realm">Realm</a></emu-xref> component of the <emu-xref href="#running-execution-context" id="_ref_2125"><a href="#running-execution-context">running execution context</a></emu-xref> is also called <dfn id="current-realm">the current Realm Record</dfn>. The value of the Function component of the <emu-xref href="#running-execution-context" id="_ref_2126"><a href="#running-execution-context">running execution context</a></emu-xref> is also called the <dfn id="active-function-object">active function object</dfn>.</p>
|
||
<p>Execution contexts for ECMAScript code have the additional state components listed in <emu-xref href="#table-23" id="_ref_178"><a href="#table-23">Table 22</a></emu-xref>.</p>
|
||
<emu-table id="table-23" caption="Additional State Components for ECMAScript Code Execution Contexts"><figure><figcaption>Table 22: Additional State Components for ECMAScript Code Execution Contexts</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Component
|
||
|
||
</th>
|
||
<th>
|
||
Purpose
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
LexicalEnvironment
|
||
|
||
</td>
|
||
<td>
|
||
Identifies the <emu-xref href="#sec-lexical-environments" id="_ref_2127"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> used to resolve identifier references made by code within this <emu-xref href="#sec-execution-contexts" id="_ref_2128"><a href="#sec-execution-contexts">execution context</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
VariableEnvironment
|
||
|
||
</td>
|
||
<td>
|
||
Identifies the <emu-xref href="#sec-lexical-environments" id="_ref_2129"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> whose <emu-xref href="#sec-lexical-environments" id="_ref_2130"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref> holds bindings created by <emu-nt id="_ref_9082"><a href="#prod-VariableStatement">VariableStatement</a></emu-nt>s within this <emu-xref href="#sec-execution-contexts" id="_ref_2131"><a href="#sec-execution-contexts">execution context</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>The LexicalEnvironment and VariableEnvironment components of an execution context are always Lexical Environments.</p>
|
||
<p>Execution contexts representing the evaluation of generator objects have the additional state components listed in <emu-xref href="#table-24" id="_ref_179"><a href="#table-24">Table 23</a></emu-xref>.</p>
|
||
<emu-table id="table-24" caption="Additional State Components for Generator Execution Contexts"><figure><figcaption>Table 23: Additional State Components for Generator Execution Contexts</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Component
|
||
|
||
</th>
|
||
<th>
|
||
Purpose
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Generator
|
||
|
||
</td>
|
||
<td>
|
||
The GeneratorObject that this <emu-xref href="#sec-execution-contexts" id="_ref_2132"><a href="#sec-execution-contexts">execution context</a></emu-xref> is evaluating.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>In most situations only the <emu-xref href="#running-execution-context" id="_ref_2133"><a href="#running-execution-context">running execution context</a></emu-xref> (the top of the <emu-xref href="#execution-context-stack" id="_ref_2134"><a href="#execution-context-stack">execution context stack</a></emu-xref>)
|
||
is directly manipulated by algorithms within this specification. Hence
|
||
when the terms “LexicalEnvironment”, and “VariableEnvironment” are used
|
||
without qualification they are in reference to those components of the <emu-xref href="#running-execution-context" id="_ref_2135"><a href="#running-execution-context">running execution context</a></emu-xref>.</p>
|
||
<p>An execution context is purely a specification mechanism and need
|
||
not correspond to any particular artefact of an ECMAScript
|
||
implementation. It is impossible for ECMAScript code to directly access
|
||
or observe an execution context.</p>
|
||
|
||
<emu-clause id="sec-getactivescriptormodule" aoid="GetActiveScriptOrModule">
|
||
<h1><span class="secnum">8.3.1</span>GetActiveScriptOrModule ( )</h1>
|
||
<p>The GetActiveScriptOrModule abstract operation is used to determine the running script or module, based on the <emu-xref href="#running-execution-context" id="_ref_2136"><a href="#running-execution-context">running execution context</a></emu-xref>. GetActiveScriptOrModule performs the following steps:</p>
|
||
|
||
<emu-alg><ol><li>If the <emu-xref href="#execution-context-stack" id="_ref_2137"><a href="#execution-context-stack">execution context stack</a></emu-xref> is empty, return <emu-val>null</emu-val>.</li><li>Let <var>ec</var> be the topmost <emu-xref href="#sec-execution-contexts" id="_ref_2138"><a href="#sec-execution-contexts">execution context</a></emu-xref> on the <emu-xref href="#execution-context-stack" id="_ref_2139"><a href="#execution-context-stack">execution context stack</a></emu-xref> whose ScriptOrModule component is not <emu-val>null</emu-val>.</li><li>If no such <emu-xref href="#sec-execution-contexts" id="_ref_2140"><a href="#sec-execution-contexts">execution context</a></emu-xref> exists, return <emu-val>null</emu-val>. Otherwise, return <var>ec</var>'s ScriptOrModule component.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-resolvebinding" aoid="ResolveBinding">
|
||
<h1><span class="secnum">8.3.2</span>ResolveBinding ( <var>name</var> [ , <var>env</var> ] )</h1>
|
||
<p>The ResolveBinding abstract operation is used to determine the binding of <var>name</var> passed as a String value. The optional argument <var>env</var> can be used to explicitly provide the <emu-xref href="#sec-lexical-environments" id="_ref_2141"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref>
|
||
that is to be searched for the binding. During execution of ECMAScript
|
||
code, ResolveBinding is performed using the following algorithm:</p>
|
||
<emu-alg><ol><li>If <var>env</var> is not present or if <var>env</var> is <emu-val>undefined</emu-val>, then<ol><li>Set <var>env</var> to the <emu-xref href="#running-execution-context" id="_ref_2142"><a href="#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li></ol></li><li><emu-xref href="#assert" id="_ref_2143"><a href="#assert">Assert</a></emu-xref>: <var>env</var> is a <emu-xref href="#sec-lexical-environments" id="_ref_2144"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref>.</li><li>If the code matching the syntactic production that is being evaluated is contained in <emu-xref href="#sec-strict-mode-code" id="_ref_2145"><a href="#sec-strict-mode-code">strict mode code</a></emu-xref>, let <var>strict</var> be <emu-val>true</emu-val>, else let <var>strict</var> be <emu-val>false</emu-val>.</li><li>Return ? <emu-xref aoid="GetIdentifierReference" id="_ref_2146"><a href="#sec-getidentifierreference">GetIdentifierReference</a></emu-xref>(<var>env</var>, <var>name</var>, <var>strict</var>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The result of ResolveBinding is always a <emu-xref href="#sec-reference-specification-type" id="_ref_2147"><a href="#sec-reference-specification-type">Reference</a></emu-xref> value with its referenced name component equal to the <var>name</var> argument.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getthisenvironment" aoid="GetThisEnvironment">
|
||
<h1><span class="secnum">8.3.3</span>GetThisEnvironment ( )</h1>
|
||
<p>The abstract operation GetThisEnvironment finds the <emu-xref href="#sec-environment-records" id="_ref_2148"><a href="#sec-environment-records">Environment Record</a></emu-xref> that currently supplies the binding of the keyword <code>this</code>. GetThisEnvironment performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>lex</var> be the <emu-xref href="#running-execution-context" id="_ref_2149"><a href="#running-execution-context">running execution context</a></emu-xref>'s LexicalEnvironment.</li><li>Repeat,<ol><li>Let <var>envRec</var> be <var>lex</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2150"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref>.</li><li>Let <var>exists</var> be <var>envRec</var>.HasThisBinding().</li><li>If <var>exists</var> is <emu-val>true</emu-val>, return <var>envRec</var>.</li><li>Let <var>outer</var> be the value of <var>lex</var>'s outer environment reference.</li><li><emu-xref href="#assert" id="_ref_2151"><a href="#assert">Assert</a></emu-xref>: <var>outer</var> is not <emu-val>null</emu-val>.</li><li>Set <var>lex</var> to <var>outer</var>.
|
||
</li></ol></li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The loop in step 2 will always terminate because the list of environments always ends with the <emu-xref href="#global-environment" id="_ref_2152"><a href="#global-environment">global environment</a></emu-xref> which has a <code>this</code> binding.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-resolvethisbinding" aoid="ResolveThisBinding">
|
||
<h1><span class="secnum">8.3.4</span>ResolveThisBinding ( )</h1>
|
||
<p>The abstract operation ResolveThisBinding determines the binding of the keyword <code>this</code> using the LexicalEnvironment of the <emu-xref href="#running-execution-context" id="_ref_2153"><a href="#running-execution-context">running execution context</a></emu-xref>. ResolveThisBinding performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be <emu-xref aoid="GetThisEnvironment" id="_ref_2154"><a href="#sec-getthisenvironment">GetThisEnvironment</a></emu-xref>().</li><li>Return ? <var>envRec</var>.GetThisBinding().
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getnewtarget" aoid="GetNewTarget">
|
||
<h1><span class="secnum">8.3.5</span>GetNewTarget ( )</h1>
|
||
<p>The abstract operation GetNewTarget determines the NewTarget value using the LexicalEnvironment of the <emu-xref href="#running-execution-context" id="_ref_2155"><a href="#running-execution-context">running execution context</a></emu-xref>. GetNewTarget performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>envRec</var> be <emu-xref aoid="GetThisEnvironment" id="_ref_2156"><a href="#sec-getthisenvironment">GetThisEnvironment</a></emu-xref>().</li><li><emu-xref href="#assert" id="_ref_2157"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var> has a [[NewTarget]] field.</li><li>Return <var>envRec</var>.[[NewTarget]].
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getglobalobject" aoid="GetGlobalObject">
|
||
<h1><span class="secnum">8.3.6</span>GetGlobalObject ( )</h1>
|
||
<p>The abstract operation GetGlobalObject returns the <emu-xref href="#sec-global-object" id="_ref_2158"><a href="#sec-global-object">global object</a></emu-xref> used by the currently <emu-xref href="#running-execution-context" id="_ref_2159"><a href="#running-execution-context">running execution context</a></emu-xref>. GetGlobalObject performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>ctx</var> be the <emu-xref href="#running-execution-context" id="_ref_2160"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Let <var>currentRealm</var> be <var>ctx</var>'s <emu-xref href="#realm" id="_ref_2161"><a href="#realm">Realm</a></emu-xref>.</li><li>Return <var>currentRealm</var>.[[GlobalObject]].
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-jobs-and-job-queues">
|
||
<h1><span class="secnum">8.4</span>Jobs and Job Queues</h1>
|
||
<p>A Job is an abstract operation that initiates an ECMAScript
|
||
computation when no other ECMAScript computation is currently in
|
||
progress. A Job abstract operation may be defined to accept an arbitrary
|
||
set of job parameters.</p>
|
||
<p>Execution of a Job can be initiated only when there is no <emu-xref href="#running-execution-context" id="_ref_2162"><a href="#running-execution-context">running execution context</a></emu-xref> and the <emu-xref href="#execution-context-stack" id="_ref_2163"><a href="#execution-context-stack">execution context stack</a></emu-xref> is empty. A PendingJob is a request for the future execution of a Job. A PendingJob is an internal <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2164"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> whose fields are specified in <emu-xref href="#table-25" id="_ref_180"><a href="#table-25">Table 24</a></emu-xref>.
|
||
Once execution of a Job is initiated, the Job always executes to
|
||
completion. No other Job may be initiated until the currently running
|
||
Job completes. However, the currently running Job or external events may
|
||
cause the enqueuing of additional PendingJobs that may be initiated
|
||
sometime after completion of the currently running Job.</p>
|
||
<emu-table id="table-25" caption="PendingJob Record Fields"><figure><figcaption>Table 24: PendingJob <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2165"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref> Fields</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Field Name
|
||
|
||
</th>
|
||
<th>
|
||
Value
|
||
|
||
</th>
|
||
<th>
|
||
Meaning
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Job]]
|
||
|
||
</td>
|
||
<td>
|
||
The name of a Job abstract operation
|
||
|
||
</td>
|
||
<td>
|
||
This is the abstract operation that is performed when execution of this PendingJob is initiated.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Arguments]]
|
||
|
||
</td>
|
||
<td>
|
||
A <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2166"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2167"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of argument values that are to be passed to [[Job]] when it is activated.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Realm]]
|
||
|
||
</td>
|
||
<td>
|
||
A <emu-xref href="#realm-record" id="_ref_2168"><a href="#realm-record">Realm Record</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#realm-record" id="_ref_2169"><a href="#realm-record">Realm Record</a></emu-xref> for the initial <emu-xref href="#sec-execution-contexts" id="_ref_2170"><a href="#sec-execution-contexts">execution context</a></emu-xref> when this PendingJob is initiated.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[ScriptOrModule]]
|
||
|
||
</td>
|
||
<td>
|
||
A <emu-xref href="#script-record" id="_ref_2171"><a href="#script-record">Script Record</a></emu-xref> or <emu-xref href="#sec-abstract-module-records" id="_ref_2172"><a href="#sec-abstract-module-records">Module Record</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The script or module for the initial <emu-xref href="#sec-execution-contexts" id="_ref_2173"><a href="#sec-execution-contexts">execution context</a></emu-xref> when this PendingJob is initiated.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[HostDefined]]
|
||
|
||
</td>
|
||
<td>
|
||
Any, default value is <emu-val>undefined</emu-val>.
|
||
|
||
</td>
|
||
<td>
|
||
Field reserved for use by host environments that need to associate additional information with a pending Job.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>A Job Queue is a FIFO queue of PendingJob records. Each Job Queue
|
||
has a name and the full set of available Job Queues are defined by an
|
||
ECMAScript implementation. Every ECMAScript implementation has at least
|
||
the Job Queues defined in <emu-xref href="#table-26" id="_ref_181"><a href="#table-26">Table 25</a></emu-xref>.</p>
|
||
<p>Each <emu-xref href="#agent" id="_ref_2174"><a href="#agent">agent</a></emu-xref>
|
||
has its own set of named Job Queues. All references to a named job
|
||
queue in this specification denote the named job queue of the <emu-xref href="#surrounding-agent" id="_ref_2175"><a href="#surrounding-agent">surrounding agent</a></emu-xref>.</p>
|
||
<emu-table id="table-26" caption="Required Job Queues"><figure><figcaption>Table 25: Required Job Queues</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Name
|
||
|
||
</th>
|
||
<th>
|
||
Purpose
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
ScriptJobs
|
||
|
||
</td>
|
||
<td>
|
||
Jobs that validate and evaluate ECMAScript <emu-nt id="_ref_9083"><a href="#prod-Script">Script</a></emu-nt> and <emu-nt id="_ref_9084"><a href="#prod-Module">Module</a></emu-nt> source text. See clauses 10 and 15.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
PromiseJobs
|
||
|
||
</td>
|
||
<td>
|
||
Jobs that are responses to the settlement of a Promise (see <emu-xref href="#sec-promise-objects" id="_ref_182"><a href="#sec-promise-objects">25.6</a></emu-xref>).
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>A request for the future execution of a Job is made by
|
||
enqueueing, on a Job Queue, a PendingJob record that includes a Job
|
||
abstract operation name and any necessary argument values. When there is
|
||
no <emu-xref href="#running-execution-context" id="_ref_2176"><a href="#running-execution-context">running execution context</a></emu-xref> and the <emu-xref href="#execution-context-stack" id="_ref_2177"><a href="#execution-context-stack">execution context stack</a></emu-xref>
|
||
is empty, the ECMAScript implementation removes the first PendingJob
|
||
from a Job Queue and uses the information contained in it to create an <emu-xref href="#sec-execution-contexts" id="_ref_2178"><a href="#sec-execution-contexts">execution context</a></emu-xref> and starts execution of the associated Job abstract operation.</p>
|
||
<p>The PendingJob records from a single Job Queue are always
|
||
initiated in FIFO order. This specification does not define the order in
|
||
which multiple Job Queues are serviced. An ECMAScript implementation
|
||
may interweave the FIFO evaluation of the PendingJob records of a Job
|
||
Queue with the evaluation of the PendingJob records of one or more other
|
||
Job Queues. An implementation must define what occurs when there are no
|
||
<emu-xref href="#running-execution-context" id="_ref_2179"><a href="#running-execution-context">running execution context</a></emu-xref> and all Job Queues are empty.</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>Typically an ECMAScript implementation will have its Job Queues
|
||
pre-initialized with at least one PendingJob and one of those Jobs will
|
||
be the first to be executed. An implementation might choose to free all
|
||
resources and terminate if the current Job completes and all Job Queues
|
||
are empty. Alternatively, it might choose to wait for a some
|
||
implementation specific <emu-xref href="#agent" id="_ref_2180"><a href="#agent">agent</a></emu-xref> or mechanism to enqueue new PendingJob requests.</p>
|
||
</div></emu-note>
|
||
<p>The following <emu-xref href="#sec-algorithm-conventions-abstract-operations" id="_ref_2181"><a href="#sec-algorithm-conventions-abstract-operations">abstract operations</a></emu-xref> are used to create and manage Jobs and Job Queues:</p>
|
||
|
||
<emu-clause id="sec-enqueuejob" aoid="EnqueueJob">
|
||
<h1><span class="secnum">8.4.1</span>EnqueueJob ( <var>queueName</var>, <var>job</var>, <var>arguments</var> )</h1>
|
||
<p>The EnqueueJob abstract operation requires three arguments: <var>queueName</var>, <var>job</var>, and <var>arguments</var>. It performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2182"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_2183"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>queueName</var>) is String and its value is the name of a Job Queue recognized by this implementation.</li><li><emu-xref href="#assert" id="_ref_2184"><a href="#assert">Assert</a></emu-xref>: <var>job</var> is the name of a Job.</li><li><emu-xref href="#assert" id="_ref_2185"><a href="#assert">Assert</a></emu-xref>: <var>arguments</var> is a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2186"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> that has the same number of elements as the number of parameters required by <var>job</var>.</li><li>Let <var>callerContext</var> be the <emu-xref href="#running-execution-context" id="_ref_2187"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Let <var>callerRealm</var> be <var>callerContext</var>'s <emu-xref href="#realm" id="_ref_2188"><a href="#realm">Realm</a></emu-xref>.</li><li>Let <var>callerScriptOrModule</var> be <var>callerContext</var>'s ScriptOrModule.</li><li>Let <var>pending</var> be PendingJob { [[Job]]: <var>job</var>, [[Arguments]]: <var>arguments</var>, [[Realm]]: <var>callerRealm</var>, [[ScriptOrModule]]: <var>callerScriptOrModule</var>, [[HostDefined]]: <emu-val>undefined</emu-val> }.</li><li>Perform any implementation or host environment defined processing of <var>pending</var>. This may include modifying the [[HostDefined]] field or any other field of <var>pending</var>.</li><li>Add <var>pending</var> at the back of the Job Queue named by <var>queueName</var>.</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_2189"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-initializehostdefinedrealm" aoid="InitializeHostDefinedRealm">
|
||
<h1><span class="secnum">8.5</span>InitializeHostDefinedRealm ( )</h1>
|
||
<p>The abstract operation InitializeHostDefinedRealm performs the following steps:</p>
|
||
|
||
<emu-alg><ol><li>Let <var>realm</var> be <emu-xref aoid="CreateRealm" id="_ref_2190"><a href="#sec-createrealm">CreateRealm</a></emu-xref>().</li><li>Let <var>newContext</var> be a new <emu-xref href="#sec-execution-contexts" id="_ref_2191"><a href="#sec-execution-contexts">execution context</a></emu-xref>.</li><li>Set the Function of <var>newContext</var> to <emu-val>null</emu-val>.</li><li>Set the <emu-xref href="#realm" id="_ref_2192"><a href="#realm">Realm</a></emu-xref> of <var>newContext</var> to <var>realm</var>.</li><li>Set the ScriptOrModule of <var>newContext</var> to <emu-val>null</emu-val>.</li><li>Push <var>newContext</var> onto the <emu-xref href="#execution-context-stack" id="_ref_2193"><a href="#execution-context-stack">execution context stack</a></emu-xref>; <var>newContext</var> is now the <emu-xref href="#running-execution-context" id="_ref_2194"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>If the host requires use of an <emu-xref href="#exotic-object" id="_ref_2195"><a href="#exotic-object">exotic object</a></emu-xref> to serve as <var>realm</var>'s <emu-xref href="#sec-global-object" id="_ref_2196"><a href="#sec-global-object">global object</a></emu-xref>, let <var>global</var> be such an object created in an implementation-defined manner. Otherwise, let <var>global</var> be <emu-val>undefined</emu-val>, indicating that an ordinary object should be created as the <emu-xref href="#sec-global-object" id="_ref_2197"><a href="#sec-global-object">global object</a></emu-xref>.</li><li>If the host requires that the <code>this</code> binding in <var>realm</var>'s global scope return an object other than the <emu-xref href="#sec-global-object" id="_ref_2198"><a href="#sec-global-object">global object</a></emu-xref>, let <var>thisValue</var> be such an object created in an implementation-defined manner. Otherwise, let <var>thisValue</var> be <emu-val>undefined</emu-val>, indicating that <var>realm</var>'s global <code>this</code> binding should be the <emu-xref href="#sec-global-object" id="_ref_2199"><a href="#sec-global-object">global object</a></emu-xref>.</li><li>Perform <emu-xref aoid="SetRealmGlobalObject" id="_ref_2200"><a href="#sec-setrealmglobalobject">SetRealmGlobalObject</a></emu-xref>(<var>realm</var>, <var>global</var>, <var>thisValue</var>).</li><li>Let <var>globalObj</var> be ? <emu-xref aoid="SetDefaultGlobalBindings" id="_ref_2201"><a href="#sec-setdefaultglobalbindings">SetDefaultGlobalBindings</a></emu-xref>(<var>realm</var>).</li><li>Create any implementation-defined <emu-xref href="#sec-global-object" id="_ref_2202"><a href="#sec-global-object">global object</a></emu-xref> properties on <var>globalObj</var>.</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_2203"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-const>empty</emu-const>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-runjobs" aoid="RunJobs">
|
||
<h1><span class="secnum">8.6</span>RunJobs ( )</h1>
|
||
<p>The abstract operation RunJobs performs the following steps:</p>
|
||
<emu-alg><ol><li>Perform ? <emu-xref aoid="InitializeHostDefinedRealm" id="_ref_2204"><a href="#sec-initializehostdefinedrealm">InitializeHostDefinedRealm</a></emu-xref>().</li><li>In an implementation-dependent manner, obtain the ECMAScript source texts (see clause <emu-xref href="#sec-ecmascript-language-source-code" id="_ref_183"><a href="#sec-ecmascript-language-source-code">10</a></emu-xref>) and any associated host-defined values for zero or more ECMAScript scripts and/or ECMAScript modules. For each such <var>sourceText</var> and <var>hostDefined</var>, do<ol><li>If <var>sourceText</var> is the source code of a script, then<ol><li>Perform <emu-xref aoid="EnqueueJob" id="_ref_2205"><a href="#sec-enqueuejob">EnqueueJob</a></emu-xref>(<code>"ScriptJobs"</code>, <emu-xref aoid="ScriptEvaluationJob" id="_ref_2206"><a href="#sec-scriptevaluationjob">ScriptEvaluationJob</a></emu-xref>, « <var>sourceText</var>, <var>hostDefined</var> »).</li></ol></li><li>Else <var>sourceText</var> is the source code of a module,<ol><li>Perform <emu-xref aoid="EnqueueJob" id="_ref_2207"><a href="#sec-enqueuejob">EnqueueJob</a></emu-xref>(<code>"ScriptJobs"</code>, <emu-xref aoid="TopLevelModuleEvaluationJob" id="_ref_2208"><a href="#sec-toplevelmoduleevaluationjob">TopLevelModuleEvaluationJob</a></emu-xref>, « <var>sourceText</var>, <var>hostDefined</var> »).</li></ol></li></ol></li><li>Repeat,<ol><li><emu-xref aoid="Suspend" id="_ref_2209"><a href="#sec-suspend">Suspend</a></emu-xref> the <emu-xref href="#running-execution-context" id="_ref_2210"><a href="#running-execution-context">running execution context</a></emu-xref> and remove it from the <emu-xref href="#execution-context-stack" id="_ref_2211"><a href="#execution-context-stack">execution context stack</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_2212"><a href="#assert">Assert</a></emu-xref>: The <emu-xref href="#execution-context-stack" id="_ref_2213"><a href="#execution-context-stack">execution context stack</a></emu-xref> is now empty.</li><li>Let <var>nextQueue</var>
|
||
be a non-empty Job Queue chosen in an implementation-defined manner. If
|
||
all Job Queues are empty, the result is implementation-defined.</li><li>Let <var>nextPending</var> be the PendingJob record at the front of <var>nextQueue</var>. Remove that record from <var>nextQueue</var>.</li><li>Let <var>newContext</var> be a new <emu-xref href="#sec-execution-contexts" id="_ref_2214"><a href="#sec-execution-contexts">execution context</a></emu-xref>.</li><li>Set <var>newContext</var>'s Function to <emu-val>null</emu-val>.</li><li>Set <var>newContext</var>'s <emu-xref href="#realm" id="_ref_2215"><a href="#realm">Realm</a></emu-xref> to <var>nextPending</var>.[[Realm]].</li><li>Set <var>newContext</var>'s ScriptOrModule to <var>nextPending</var>.[[ScriptOrModule]].</li><li>Push <var>newContext</var> onto the <emu-xref href="#execution-context-stack" id="_ref_2216"><a href="#execution-context-stack">execution context stack</a></emu-xref>; <var>newContext</var> is now the <emu-xref href="#running-execution-context" id="_ref_2217"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Perform any implementation or host environment defined job initialization using <var>nextPending</var>.</li><li>Let <var>result</var> be the result of performing the abstract operation named by <var>nextPending</var>.[[Job]] using the elements of <var>nextPending</var>.[[Arguments]] as its arguments.</li><li>If <var>result</var> is an <emu-xref href="#sec-completion-record-specification-type" id="_ref_2218"><a href="#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, perform <emu-xref aoid="HostReportErrors" id="_ref_2219"><a href="#sec-host-report-errors">HostReportErrors</a></emu-xref>(« <var>result</var>.[[Value]] »).
|
||
</li></ol></li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-agents">
|
||
<h1><span class="secnum">8.7</span>Agents</h1>
|
||
|
||
<p>An <dfn id="agent">agent</dfn> comprises a set of ECMAScript execution contexts, an <emu-xref href="#execution-context-stack" id="_ref_2220"><a href="#execution-context-stack">execution context stack</a></emu-xref>, a <emu-xref href="#running-execution-context" id="_ref_2221"><a href="#running-execution-context">running execution context</a></emu-xref>, a set of named job queues, an <dfn id="agent-record">Agent Record</dfn>, and an <dfn id="executing-thread">executing thread</dfn>. Except for the <emu-xref href="#executing-thread" id="_ref_2222"><a href="#executing-thread">executing thread</a></emu-xref>, the constituents of an <emu-xref href="#agent" id="_ref_2223"><a href="#agent">agent</a></emu-xref> belong exclusively to that <emu-xref href="#agent" id="_ref_2224"><a href="#agent">agent</a></emu-xref>.</p>
|
||
<p>An <emu-xref href="#agent" id="_ref_2225"><a href="#agent">agent</a></emu-xref>'s <emu-xref href="#executing-thread" id="_ref_2226"><a href="#executing-thread">executing thread</a></emu-xref> executes the jobs in the <emu-xref href="#agent" id="_ref_2227"><a href="#agent">agent</a></emu-xref>'s job queues on the <emu-xref href="#agent" id="_ref_2228"><a href="#agent">agent</a></emu-xref>'s execution contexts independently of other agents, except that an <emu-xref href="#executing-thread" id="_ref_2229"><a href="#executing-thread">executing thread</a></emu-xref> may be used as the <emu-xref href="#executing-thread" id="_ref_2230"><a href="#executing-thread">executing thread</a></emu-xref> by multiple agents, provided none of the agents sharing the thread have an <emu-xref href="#agent-record" id="_ref_2231"><a href="#agent-record">Agent Record</a></emu-xref> whose [[CanBlock]] property is <emu-val>true</emu-val>.</p>
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>Some web browsers share a single <emu-xref href="#executing-thread" id="_ref_2232"><a href="#executing-thread">executing thread</a></emu-xref> across multiple unrelated tabs of a browser window, for example.</p>
|
||
</div></emu-note>
|
||
<p>While an <emu-xref href="#agent" id="_ref_2233"><a href="#agent">agent</a></emu-xref>'s <emu-xref href="#executing-thread" id="_ref_2234"><a href="#executing-thread">executing thread</a></emu-xref> executes the jobs in the <emu-xref href="#agent" id="_ref_2235"><a href="#agent">agent</a></emu-xref>'s job queues, the <emu-xref href="#agent" id="_ref_2236"><a href="#agent">agent</a></emu-xref> is the <dfn id="surrounding-agent">surrounding agent</dfn> for the code in those jobs. The code uses the <emu-xref href="#surrounding-agent" id="_ref_2237"><a href="#surrounding-agent">surrounding agent</a></emu-xref> to access the specification level execution objects held within the <emu-xref href="#agent" id="_ref_2238"><a href="#agent">agent</a></emu-xref>: the <emu-xref href="#running-execution-context" id="_ref_2239"><a href="#running-execution-context">running execution context</a></emu-xref>, the <emu-xref href="#execution-context-stack" id="_ref_2240"><a href="#execution-context-stack">execution context stack</a></emu-xref>, the named job queues, and the <emu-xref href="#agent-record" id="_ref_2241"><a href="#agent-record">Agent Record</a></emu-xref>'s fields.</p>
|
||
<emu-table id="table-agent-record" caption="Agent Record Fields"><figure><figcaption>Table 26: <emu-xref href="#agent-record" id="_ref_2242"><a href="#agent-record">Agent Record</a></emu-xref> Fields</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>Field Name</th>
|
||
<th>Value</th>
|
||
<th>Meaning</th>
|
||
</tr>
|
||
<tr>
|
||
<td>[[LittleEndian]]</td>
|
||
<td>Boolean</td>
|
||
<td>The default value computed for the <em>isLittleEndian</em> parameter when it is needed by the algorithms <emu-xref aoid="GetValueFromBuffer" id="_ref_2243"><a href="#sec-getvaluefrombuffer">GetValueFromBuffer</a></emu-xref> and <emu-xref aoid="SetValueInBuffer" id="_ref_2244"><a href="#sec-setvalueinbuffer">SetValueInBuffer</a></emu-xref>.
|
||
The choice is implementation-dependent and should be the alternative
|
||
that is most efficient for the implementation. Once the value has been
|
||
observed it cannot change.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>[[CanBlock]]</td>
|
||
<td>Boolean</td>
|
||
<td>Determines whether the <emu-xref href="#agent" id="_ref_2245"><a href="#agent">agent</a></emu-xref> can block or not.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>[[Signifier]]</td>
|
||
<td>Any globally-unique value</td>
|
||
<td>Uniquely identifies the <emu-xref href="#agent" id="_ref_2246"><a href="#agent">agent</a></emu-xref> within its <emu-xref href="#sec-agent-clusters" id="_ref_2247"><a href="#sec-agent-clusters">agent cluster</a></emu-xref>.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>[[IsLockFree1]]</td>
|
||
<td>Boolean</td>
|
||
<td><emu-val>true</emu-val> if atomic operations on one-byte values are lock-free, <emu-val>false</emu-val> otherwise.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>[[IsLockFree2]]</td>
|
||
<td>Boolean</td>
|
||
<td><emu-val>true</emu-val> if atomic operations on two-byte values are lock-free, <emu-val>false</emu-val> otherwise.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>[[CandidateExecution]]</td>
|
||
<td>A <emu-xref href="#sec-candidate-executions" id="_ref_2248"><a href="#sec-candidate-executions">candidate execution</a></emu-xref> <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2249"><a href="#sec-list-and-record-specification-type">Record</a></emu-xref></td>
|
||
<td>See the <emu-xref href="#sec-memory-model" id="_ref_2250"><a href="#sec-memory-model">memory model</a></emu-xref>.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
|
||
<p>Once the values of [[Signifier]], [[IsLockFree1]], and [[IsLockFree2]] have been observed by any <emu-xref href="#agent" id="_ref_2251"><a href="#agent">agent</a></emu-xref> in the <emu-xref href="#sec-agent-clusters" id="_ref_2252"><a href="#sec-agent-clusters">agent cluster</a></emu-xref> they cannot change.</p>
|
||
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>The values of [[IsLockFree1]] and [[IsLockFree2]] are not
|
||
necessarily determined by the hardware, but may also reflect
|
||
implementation choices that can vary over time and between ECMAScript
|
||
implementations.</p>
|
||
|
||
<p>There is no [[IsLockFree4]] property: 4-byte atomic operations are always lock-free.</p>
|
||
|
||
<p>In practice, if an atomic operation is implemented with any
|
||
type of lock the operation is not lock-free. Lock-free does not imply
|
||
wait-free: there is no upper bound on how many machine steps may be
|
||
required to complete a lock-free atomic operation.</p>
|
||
|
||
<p>That an atomic access of size <em>n</em> is lock-free does not imply anything about the (perceived) atomicity of non-atomic accesses of size <em>n</em>, specifically, non-atomic accesses may still be performed as a sequence of several separate memory accesses. See <emu-xref href="#sec-memory-model-fundamentals" id="_ref_2253"><a href="#sec-memory-model-fundamentals">ReadSharedMemory</a></emu-xref> and <emu-xref href="#sec-memory-model-fundamentals" id="_ref_2254"><a href="#sec-memory-model-fundamentals">WriteSharedMemory</a></emu-xref> for details.</p>
|
||
</div></emu-note>
|
||
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>An <emu-xref href="#agent" id="_ref_2255"><a href="#agent">agent</a></emu-xref> is a specification mechanism and need not correspond to any particular artefact of an ECMAScript implementation.</p>
|
||
</div></emu-note>
|
||
|
||
<emu-clause id="sec-agentsignifier" aoid="AgentSignifier">
|
||
<h1><span class="secnum">8.7.1</span>AgentSignifier ( )</h1>
|
||
<p>The abstract operation AgentSignifier takes no arguments. It performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>AR</var> be the <emu-xref href="#agent-record" id="_ref_2256"><a href="#agent-record">Agent Record</a></emu-xref> of the <emu-xref href="#surrounding-agent" id="_ref_2257"><a href="#surrounding-agent">surrounding agent</a></emu-xref>.</li><li>Return <var>AR</var>.[[Signifier]].
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-agentcansuspend" aoid="AgentCanSuspend">
|
||
<h1><span class="secnum">8.7.2</span>AgentCanSuspend ( )</h1>
|
||
<p>The abstract operation AgentCanSuspend takes no arguments. It performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>AR</var> be the <emu-xref href="#agent-record" id="_ref_2258"><a href="#agent-record">Agent Record</a></emu-xref> of the <emu-xref href="#surrounding-agent" id="_ref_2259"><a href="#surrounding-agent">surrounding agent</a></emu-xref>.</li><li>Return <var>AR</var>.[[CanBlock]].
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>In some environments it may not be reasonable for a given <emu-xref href="#agent" id="_ref_2260"><a href="#agent">agent</a></emu-xref>
|
||
to suspend. For example, in a web browser environment, it may be
|
||
reasonable to disallow suspending a document's main event handling
|
||
thread, while still allowing workers' event handling threads to suspend.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-agent-clusters">
|
||
<h1><span class="secnum">8.8</span>Agent Clusters</h1>
|
||
|
||
<p>An <dfn>agent cluster</dfn> is a maximal set of agents that can communicate by operating on shared memory.</p>
|
||
|
||
<emu-note><span class="note">Note 1</span><div class="note-contents">
|
||
<p>Programs within different agents may share memory by
|
||
unspecified means. At a minimum, the backing memory for
|
||
SharedArrayBuffer objects can be shared among the agents in the cluster.</p>
|
||
|
||
<p>There may be agents that can communicate by message passing that cannot share memory; they are never in the same agent cluster.</p>
|
||
</div></emu-note>
|
||
|
||
<p>Every <emu-xref href="#agent" id="_ref_2261"><a href="#agent">agent</a></emu-xref> belongs to exactly one agent cluster.</p>
|
||
|
||
<emu-note><span class="note">Note 2</span><div class="note-contents">
|
||
<p>The agents in a cluster need not all be alive at some particular point in time. If <emu-xref href="#agent" id="_ref_2262"><a href="#agent">agent</a></emu-xref> <b>A</b> creates another <emu-xref href="#agent" id="_ref_2263"><a href="#agent">agent</a></emu-xref> <b>B</b>, after which <b>A</b> terminates and <b>B</b> creates <emu-xref href="#agent" id="_ref_2264"><a href="#agent">agent</a></emu-xref> <b>C</b>, the three agents are in the same cluster if <b>A</b> could share some memory with <b>B</b> and <b>B</b> could share some memory with <b>C</b>.</p>
|
||
</div></emu-note>
|
||
|
||
<p>All agents within a cluster must have the same value for the [[LittleEndian]] property in their respective <emu-xref href="#agent" id="_ref_2265"><a href="#agent">Agent</a></emu-xref> Records.</p>
|
||
|
||
<emu-note><span class="note">Note 3</span><div class="note-contents">
|
||
<p>If different agents within an agent cluster have different
|
||
values of [[LittleEndian]] it becomes hard to use shared memory for
|
||
multi-byte data.</p>
|
||
</div></emu-note>
|
||
|
||
<p>All agents within a cluster must have the same values for the [[IsLockFree1]] property in their respective <emu-xref href="#agent" id="_ref_2266"><a href="#agent">Agent</a></emu-xref> Records; similarly for the [[IsLockFree2]] property.</p>
|
||
|
||
<p>All agents within a cluster must have different values for the [[Signifier]] property in their respective <emu-xref href="#agent" id="_ref_2267"><a href="#agent">Agent</a></emu-xref> Records.</p>
|
||
|
||
<p>An embedding may deactivate (stop forward progress) or activate (resume forward progress) an <emu-xref href="#agent" id="_ref_2268"><a href="#agent">agent</a></emu-xref> without the <emu-xref href="#agent" id="_ref_2269"><a href="#agent">agent</a></emu-xref>'s
|
||
knowledge or cooperation. If the embedding does so, it must not leave
|
||
some agents in the cluster active while other agents in the cluster are
|
||
deactivated indefinitely.</p>
|
||
|
||
<emu-note><span class="note">Note 4</span><div class="note-contents">
|
||
<p>The purpose of the preceding restriction is to avoid a situation where an <emu-xref href="#agent" id="_ref_2270"><a href="#agent">agent</a></emu-xref> deadlocks or starves because another <emu-xref href="#agent" id="_ref_2271"><a href="#agent">agent</a></emu-xref>
|
||
has been deactivated. For example, if an HTML shared worker that has a
|
||
lifetime independent of documents in any windows were allowed to share
|
||
memory with the dedicated worker of such an independent document, and
|
||
the document and its dedicated worker were to be deactivated while the
|
||
dedicated worker holds a lock (say, the document is pushed into its
|
||
window's history), and the shared worker then tries to acquire the lock,
|
||
then the shared worker will be blocked until the dedicated worker is
|
||
activated again, if ever. Meanwhile other workers trying to access the
|
||
shared worker from other windows will starve.</p>
|
||
|
||
<p>The implication of the restriction is that it will not be
|
||
possible to share memory between agents that don't belong to the same
|
||
suspend/wake collective within the embedding.</p>
|
||
</div></emu-note>
|
||
|
||
<p>An embedding may terminate an <emu-xref href="#agent" id="_ref_2272"><a href="#agent">agent</a></emu-xref> without any of the <emu-xref href="#agent" id="_ref_2273"><a href="#agent">agent</a></emu-xref>'s cluster's other agents' prior knowledge or cooperation. If an <emu-xref href="#agent" id="_ref_2274"><a href="#agent">agent</a></emu-xref> is terminated not by programmatic action of its own or of another <emu-xref href="#agent" id="_ref_2275"><a href="#agent">agent</a></emu-xref>
|
||
in the cluster but by forces external to the cluster, then the
|
||
embedding must choose one of two strategies: Either terminate all the
|
||
agents in the cluster, or provide reliable APIs that allow the agents in
|
||
the cluster to coordinate so that at least one remaining member of the
|
||
cluster will be able to detect the termination, with the termination
|
||
data containing enough information to identify the <emu-xref href="#agent" id="_ref_2276"><a href="#agent">agent</a></emu-xref> that was terminated.</p>
|
||
|
||
<emu-note><span class="note">Note 5</span><div class="note-contents">
|
||
<p>Examples of that type of termination are: operating systems or
|
||
users terminating agents that are running in separate processes; the
|
||
embedding itself terminating an <emu-xref href="#agent" id="_ref_2277"><a href="#agent">agent</a></emu-xref> that is running in-process with the other agents when per-<emu-xref href="#agent" id="_ref_2278"><a href="#agent">agent</a></emu-xref> resource accounting indicates that the <emu-xref href="#agent" id="_ref_2279"><a href="#agent">agent</a></emu-xref> is runaway.</p>
|
||
</div></emu-note>
|
||
|
||
<p>Prior to any evaluation of any ECMAScript code by any <emu-xref href="#agent" id="_ref_2280"><a href="#agent">agent</a></emu-xref> in a cluster, the [[CandidateExecution]] field of the <emu-xref href="#agent-record" id="_ref_2281"><a href="#agent-record">Agent Record</a></emu-xref> for all agents in the cluster is set to the initial <emu-xref href="#sec-candidate-executions" id="_ref_2282"><a href="#sec-candidate-executions">candidate execution</a></emu-xref>. The initial <emu-xref href="#sec-candidate-executions" id="_ref_2283"><a href="#sec-candidate-executions">candidate execution</a></emu-xref> is an <emu-xref href="#sec-candidate-executions" id="_ref_2284"><a href="#sec-candidate-executions">empty candidate execution</a></emu-xref> whose [[EventsRecords]] field is a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2285"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> containing, for each <emu-xref href="#agent" id="_ref_2286"><a href="#agent">agent</a></emu-xref>, an <emu-xref href="#sec-agent-event-records" id="_ref_2287"><a href="#sec-agent-event-records">Agent Events Record</a></emu-xref> whose [[AgentSignifier]] field is that <emu-xref href="#agent" id="_ref_2288"><a href="#agent">agent</a></emu-xref>'s signifier, and whose [[EventList]] and [[AgentSynchronizesWith]] fields are empty Lists.</p>
|
||
|
||
<emu-note><span class="note">Note 6</span><div class="note-contents">
|
||
<p>All agents in an agent cluster share the same <emu-xref href="#sec-candidate-executions" id="_ref_2289"><a href="#sec-candidate-executions">candidate execution</a></emu-xref> in its <emu-xref href="#agent-record" id="_ref_2290"><a href="#agent-record">Agent Record</a></emu-xref>'s [[CandidateExecution]] field. The <emu-xref href="#sec-candidate-executions" id="_ref_2291"><a href="#sec-candidate-executions">candidate execution</a></emu-xref> is a specification mechanism used by the <emu-xref href="#sec-memory-model" id="_ref_2292"><a href="#sec-memory-model">memory model</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
|
||
<emu-note><span class="note">Note 7</span><div class="note-contents">
|
||
<p>An agent cluster is a specification mechanism and need not
|
||
correspond to any particular artefact of an ECMAScript implementation.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-forward-progress">
|
||
<h1><span class="secnum">8.9</span>Forward Progress</h1>
|
||
<p>For an <emu-xref href="#agent" id="_ref_2293"><a href="#agent">agent</a></emu-xref> to <em>make forward progress</em> is for it to perform an evaluation step according to this specification.</p>
|
||
<p>An <emu-xref href="#agent" id="_ref_2294"><a href="#agent">agent</a></emu-xref> becomes <em>blocked</em> when its <emu-xref href="#running-execution-context" id="_ref_2295"><a href="#running-execution-context">running execution context</a></emu-xref> waits synchronously and indefinitely for an external event. Only agents whose <emu-xref href="#agent-record" id="_ref_2296"><a href="#agent-record">Agent Record</a></emu-xref>'s [[CanBlock]] property is <emu-val>true</emu-val> can become blocked in this sense. An <em>unblocked</em> <emu-xref href="#agent" id="_ref_2297"><a href="#agent">agent</a></emu-xref> is one that is not blocked.</p>
|
||
|
||
<p>Implementations must ensure that:</p>
|
||
<ul>
|
||
<li>every unblocked <emu-xref href="#agent" id="_ref_2298"><a href="#agent">agent</a></emu-xref> with a dedicated <emu-xref href="#executing-thread" id="_ref_2299"><a href="#executing-thread">executing thread</a></emu-xref> eventually makes forward progress</li>
|
||
<li>in a set of agents that share an <emu-xref href="#executing-thread" id="_ref_2300"><a href="#executing-thread">executing thread</a></emu-xref>, one <emu-xref href="#agent" id="_ref_2301"><a href="#agent">agent</a></emu-xref> eventually makes forward progress</li>
|
||
<li>an <emu-xref href="#agent" id="_ref_2302"><a href="#agent">agent</a></emu-xref> does not cause another <emu-xref href="#agent" id="_ref_2303"><a href="#agent">agent</a></emu-xref> to become blocked except via explicit APIs that provide blocking.</li>
|
||
</ul>
|
||
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>This, along with the liveness guarantee in the <emu-xref href="#sec-memory-model" id="_ref_2304"><a href="#sec-memory-model">memory model</a></emu-xref>, ensures that all <code>"SeqCst"</code> writes eventually become observable to all agents.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-and-exotic-objects-behaviours">
|
||
<h1><span class="secnum">9</span>Ordinary and Exotic Objects Behaviours</h1>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots">
|
||
<h1><span class="secnum">9.1</span>Ordinary Object Internal Methods and Internal Slots</h1>
|
||
<p>All ordinary objects have an internal slot called [[Prototype]]. The value of this internal slot is either <emu-val>null</emu-val>
|
||
or an object and is used for implementing inheritance. Data properties
|
||
of the [[Prototype]] object are inherited (and visible as properties of
|
||
the child object) for the purposes of get access, but not for set
|
||
access. Accessor properties are inherited for both get access and set
|
||
access.</p>
|
||
<p>Every ordinary object has a Boolean-valued [[Extensible]]
|
||
internal slot which is used to fulfill the extensibility-related
|
||
internal method invariants specified in <emu-xref href="#sec-invariants-of-the-essential-internal-methods" id="_ref_184"><a href="#sec-invariants-of-the-essential-internal-methods">6.1.7.3</a></emu-xref>. Namely, once the value of an object's [[Extensible]] internal slot has been set to <emu-val>false</emu-val>,
|
||
it is no longer possible to add properties to the object, to modify the
|
||
value of the object's [[Prototype]] internal slot, or to subsequently
|
||
change the value of [[Extensible]] to <emu-val>true</emu-val>.</p>
|
||
<p>In the following algorithm descriptions, assume <var>O</var> is an ordinary object, <var>P</var> is a property key value, <var>V</var> is any <emu-xref href="#sec-ecmascript-language-types" id="_ref_2305"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref>, and <var>Desc</var> is a <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_2306"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> record.</p>
|
||
<p>Each ordinary object internal method delegates to a
|
||
similarly-named abstract operation. If such an abstract operation
|
||
depends on another internal method, then the internal method is invoked
|
||
on <var>O</var> rather than calling the similarly-named abstract
|
||
operation directly. These semantics ensure that exotic objects have
|
||
their overridden internal methods invoked when ordinary object internal
|
||
methods are applied to them.</p>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-getprototypeof">
|
||
<h1><span class="secnum">9.1.1</span>[[GetPrototypeOf]] ( )</h1>
|
||
<p>When the [[GetPrototypeOf]] internal method of <var>O</var> is called, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return ! <emu-xref aoid="OrdinaryGetPrototypeOf" id="_ref_2307"><a href="#sec-ordinarygetprototypeof">OrdinaryGetPrototypeOf</a></emu-xref>(<var>O</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinarygetprototypeof" aoid="OrdinaryGetPrototypeOf">
|
||
<h1><span class="secnum">9.1.1.1</span>OrdinaryGetPrototypeOf ( <var>O</var> )</h1>
|
||
<p>When the abstract operation OrdinaryGetPrototypeOf is called with Object <var>O</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return <var>O</var>.[[Prototype]].
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-setprototypeof-v">
|
||
<h1><span class="secnum">9.1.2</span>[[SetPrototypeOf]] ( <var>V</var> )</h1>
|
||
<p>When the [[SetPrototypeOf]] internal method of <var>O</var> is called with argument <var>V</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return ! <emu-xref aoid="OrdinarySetPrototypeOf" id="_ref_2308"><a href="#sec-ordinarysetprototypeof">OrdinarySetPrototypeOf</a></emu-xref>(<var>O</var>, <var>V</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinarysetprototypeof" aoid="OrdinarySetPrototypeOf">
|
||
<h1><span class="secnum">9.1.2.1</span>OrdinarySetPrototypeOf ( <var>O</var>, <var>V</var> )</h1>
|
||
<p>When the abstract operation OrdinarySetPrototypeOf is called with Object <var>O</var> and value <var>V</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2309"><a href="#assert">Assert</a></emu-xref>: Either <emu-xref aoid="Type" id="_ref_2310"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is Object or <emu-xref aoid="Type" id="_ref_2311"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>V</var>) is Null.</li><li>Let <var>extensible</var> be <var>O</var>.[[Extensible]].</li><li>Let <var>current</var> be <var>O</var>.[[Prototype]].</li><li>If <emu-xref aoid="SameValue" id="_ref_2312"><a href="#sec-samevalue">SameValue</a></emu-xref>(<var>V</var>, <var>current</var>) is <emu-val>true</emu-val>, return <emu-val>true</emu-val>.</li><li>If <var>extensible</var> is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>Let <var>p</var> be <var>V</var>.</li><li>Let <var>done</var> be <emu-val>false</emu-val>.</li><li>Repeat, while <var>done</var> is <emu-val>false</emu-val>,<ol><li>If <var>p</var> is <emu-val>null</emu-val>, set <var>done</var> to <emu-val>true</emu-val>.</li><li>Else if <emu-xref aoid="SameValue" id="_ref_2313"><a href="#sec-samevalue">SameValue</a></emu-xref>(<var>p</var>, <var>O</var>) is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li><li>Else,<ol><li>If <var>p</var>.[[GetPrototypeOf]] is not the ordinary object internal method defined in <emu-xref href="#sec-ordinary-object-internal-methods-and-internal-slots-getprototypeof" id="_ref_185"><a href="#sec-ordinary-object-internal-methods-and-internal-slots-getprototypeof">9.1.1</a></emu-xref>, set <var>done</var> to <emu-val>true</emu-val>.</li><li>Else, set <var>p</var> to <var>p</var>.[[Prototype]].</li></ol></li></ol></li><li>Set <var>O</var>.[[Prototype]] to <var>V</var>.</li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>The loop in step 8 guarantees that there will be no
|
||
circularities in any prototype chain that only includes objects that use
|
||
the ordinary object definitions for [[GetPrototypeOf]] and
|
||
[[SetPrototypeOf]].</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-isextensible">
|
||
<h1><span class="secnum">9.1.3</span>[[IsExtensible]] ( )</h1>
|
||
<p>When the [[IsExtensible]] internal method of <var>O</var> is called, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return ! <emu-xref aoid="OrdinaryIsExtensible" id="_ref_2314"><a href="#sec-ordinaryisextensible">OrdinaryIsExtensible</a></emu-xref>(<var>O</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinaryisextensible" aoid="OrdinaryIsExtensible">
|
||
<h1><span class="secnum">9.1.3.1</span>OrdinaryIsExtensible ( <var>O</var> )</h1>
|
||
<p>When the abstract operation OrdinaryIsExtensible is called with Object <var>O</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return <var>O</var>.[[Extensible]].
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-preventextensions">
|
||
<h1><span class="secnum">9.1.4</span>[[PreventExtensions]] ( )</h1>
|
||
<p>When the [[PreventExtensions]] internal method of <var>O</var> is called, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return ! <emu-xref aoid="OrdinaryPreventExtensions" id="_ref_2315"><a href="#sec-ordinarypreventextensions">OrdinaryPreventExtensions</a></emu-xref>(<var>O</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinarypreventextensions" aoid="OrdinaryPreventExtensions">
|
||
<h1><span class="secnum">9.1.4.1</span>OrdinaryPreventExtensions ( <var>O</var> )</h1>
|
||
<p>When the abstract operation OrdinaryPreventExtensions is called with Object <var>O</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Set <var>O</var>.[[Extensible]] to <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-getownproperty-p">
|
||
<h1><span class="secnum">9.1.5</span>[[GetOwnProperty]] ( <var>P</var> )</h1>
|
||
<p>When the [[GetOwnProperty]] internal method of <var>O</var> is called with property key <var>P</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return ! <emu-xref aoid="OrdinaryGetOwnProperty" id="_ref_2316"><a href="#sec-ordinarygetownproperty">OrdinaryGetOwnProperty</a></emu-xref>(<var>O</var>, <var>P</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinarygetownproperty" aoid="OrdinaryGetOwnProperty">
|
||
<h1><span class="secnum">9.1.5.1</span>OrdinaryGetOwnProperty ( <var>O</var>, <var>P</var> )</h1>
|
||
<p>When the abstract operation OrdinaryGetOwnProperty is called with Object <var>O</var> and with property key <var>P</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2317"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_2318"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>If <var>O</var> does not have an own property with key <var>P</var>, return <emu-val>undefined</emu-val>.</li><li>Let <var>D</var> be a newly created <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_2319"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> with no fields.</li><li>Let <var>X</var> be <var>O</var>'s own property whose key is <var>P</var>.</li><li>If <var>X</var> is a <emu-xref href="#sec-object-type" id="_ref_2320"><a href="#sec-object-type">data property</a></emu-xref>, then<ol><li>Set <var>D</var>.[[Value]] to the value of <var>X</var>'s [[Value]] attribute.</li><li>Set <var>D</var>.[[Writable]] to the value of <var>X</var>'s [[Writable]] attribute.</li></ol></li><li>Else <var>X</var> is an <emu-xref href="#sec-object-type" id="_ref_2321"><a href="#sec-object-type">accessor property</a></emu-xref>,<ol><li>Set <var>D</var>.[[Get]] to the value of <var>X</var>'s [[Get]] attribute.</li><li>Set <var>D</var>.[[Set]] to the value of <var>X</var>'s [[Set]] attribute.</li></ol></li><li>Set <var>D</var>.[[Enumerable]] to the value of <var>X</var>'s [[Enumerable]] attribute.</li><li>Set <var>D</var>.[[Configurable]] to the value of <var>X</var>'s [[Configurable]] attribute.</li><li>Return <var>D</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-defineownproperty-p-desc">
|
||
<h1><span class="secnum">9.1.6</span>[[DefineOwnProperty]] ( <var>P</var>, <var>Desc</var> )</h1>
|
||
<p>When the [[DefineOwnProperty]] internal method of <var>O</var> is called with property key <var>P</var> and <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_2322"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> <var>Desc</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return ? <emu-xref aoid="OrdinaryDefineOwnProperty" id="_ref_2323"><a href="#sec-ordinarydefineownproperty">OrdinaryDefineOwnProperty</a></emu-xref>(<var>O</var>, <var>P</var>, <var>Desc</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinarydefineownproperty" aoid="OrdinaryDefineOwnProperty">
|
||
<h1><span class="secnum">9.1.6.1</span>OrdinaryDefineOwnProperty ( <var>O</var>, <var>P</var>, <var>Desc</var> )</h1>
|
||
<p>When the abstract operation OrdinaryDefineOwnProperty is called with Object <var>O</var>, property key <var>P</var>, and <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_2324"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> <var>Desc</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Let <var>current</var> be ? <var>O</var>.[[GetOwnProperty]](<var>P</var>).</li><li>Let <var>extensible</var> be ? <emu-xref aoid="IsExtensible" id="_ref_2325"><a href="#sec-isextensible-o">IsExtensible</a></emu-xref>(<var>O</var>).</li><li>Return <emu-xref aoid="ValidateAndApplyPropertyDescriptor" id="_ref_2326"><a href="#sec-validateandapplypropertydescriptor">ValidateAndApplyPropertyDescriptor</a></emu-xref>(<var>O</var>, <var>P</var>, <var>extensible</var>, <var>Desc</var>, <var>current</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-iscompatiblepropertydescriptor" aoid="IsCompatiblePropertyDescriptor">
|
||
<h1><span class="secnum">9.1.6.2</span>IsCompatiblePropertyDescriptor ( <var>Extensible</var>, <var>Desc</var>, <var>Current</var> )</h1>
|
||
<p>When the abstract operation IsCompatiblePropertyDescriptor is called with Boolean value <var>Extensible</var>, and Property Descriptors <var>Desc</var>, and <var>Current</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return <emu-xref aoid="ValidateAndApplyPropertyDescriptor" id="_ref_2327"><a href="#sec-validateandapplypropertydescriptor">ValidateAndApplyPropertyDescriptor</a></emu-xref>(<emu-val>undefined</emu-val>, <emu-val>undefined</emu-val>, <var>Extensible</var>, <var>Desc</var>, <var>Current</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-validateandapplypropertydescriptor" aoid="ValidateAndApplyPropertyDescriptor">
|
||
<h1><span class="secnum">9.1.6.3</span>ValidateAndApplyPropertyDescriptor ( <var>O</var>, <var>P</var>, <var>extensible</var>, <var>Desc</var>, <var>current</var> )</h1>
|
||
<p>When the abstract operation ValidateAndApplyPropertyDescriptor is called with Object <var>O</var>, property key <var>P</var>, Boolean value <var>extensible</var>, and Property Descriptors <var>Desc</var>, and <var>current</var>, the following steps are taken:</p>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>If <emu-val>undefined</emu-val> is passed as <var>O</var>, only validation is performed and no object updates are performed.</p>
|
||
</div></emu-note>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2328"><a href="#assert">Assert</a></emu-xref>: If <var>O</var> is not <emu-val>undefined</emu-val>, then <emu-xref aoid="IsPropertyKey" id="_ref_2329"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>If <var>current</var> is <emu-val>undefined</emu-val>, then<ol><li>If <var>extensible</var> is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li><emu-xref href="#assert" id="_ref_2330"><a href="#assert">Assert</a></emu-xref>: <var>extensible</var> is <emu-val>true</emu-val>.</li><li>If <emu-xref aoid="IsGenericDescriptor" id="_ref_2331"><a href="#sec-isgenericdescriptor">IsGenericDescriptor</a></emu-xref>(<var>Desc</var>) is <emu-val>true</emu-val> or <emu-xref aoid="IsDataDescriptor" id="_ref_2332"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>Desc</var>) is <emu-val>true</emu-val>, then<ol><li>If <var>O</var> is not <emu-val>undefined</emu-val>, create an own <emu-xref href="#sec-object-type" id="_ref_2333"><a href="#sec-object-type">data property</a></emu-xref> named <var>P</var> of object <var>O</var> whose [[Value]], [[Writable]], [[Enumerable]] and [[Configurable]] attribute values are described by <var>Desc</var>. If the value of an attribute field of <var>Desc</var> is absent, the attribute of the newly created property is set to its default value.</li></ol></li><li>Else <var>Desc</var> must be an accessor <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_2334"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref>,<ol><li>If <var>O</var> is not <emu-val>undefined</emu-val>, create an own <emu-xref href="#sec-object-type" id="_ref_2335"><a href="#sec-object-type">accessor property</a></emu-xref> named <var>P</var> of object <var>O</var> whose [[Get]], [[Set]], [[Enumerable]] and [[Configurable]] attribute values are described by <var>Desc</var>. If the value of an attribute field of <var>Desc</var> is absent, the attribute of the newly created property is set to its default value.</li></ol></li><li>Return <emu-val>true</emu-val>.</li></ol></li><li>If every field in <var>Desc</var> is absent, return <emu-val>true</emu-val>.</li><li>If <var>current</var>.[[Configurable]] is <emu-val>false</emu-val>, then<ol><li>If <var>Desc</var>.[[Configurable]] is present and its value is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>Desc</var>.[[Enumerable]] is present and the [[Enumerable]] fields of <var>current</var> and <var>Desc</var> are the Boolean negation of each other, return <emu-val>false</emu-val>.</li></ol></li><li>If <emu-xref aoid="IsGenericDescriptor" id="_ref_2336"><a href="#sec-isgenericdescriptor">IsGenericDescriptor</a></emu-xref>(<var>Desc</var>) is <emu-val>true</emu-val>, no further validation is required.</li><li>Else if <emu-xref aoid="IsDataDescriptor" id="_ref_2337"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>current</var>) and <emu-xref aoid="IsDataDescriptor" id="_ref_2338"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>Desc</var>) have different results, then<ol><li>If <var>current</var>.[[Configurable]] is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>If <emu-xref aoid="IsDataDescriptor" id="_ref_2339"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>current</var>) is <emu-val>true</emu-val>, then<ol><li>If <var>O</var> is not <emu-val>undefined</emu-val>, convert the property named <var>P</var> of object <var>O</var> from a <emu-xref href="#sec-object-type" id="_ref_2340"><a href="#sec-object-type">data property</a></emu-xref> to an <emu-xref href="#sec-object-type" id="_ref_2341"><a href="#sec-object-type">accessor property</a></emu-xref>.
|
||
Preserve the existing values of the converted property's
|
||
[[Configurable]] and [[Enumerable]] attributes and set the rest of the
|
||
property's attributes to their default values.</li></ol></li><li>Else,<ol><li>If <var>O</var> is not <emu-val>undefined</emu-val>, convert the property named <var>P</var> of object <var>O</var> from an <emu-xref href="#sec-object-type" id="_ref_2342"><a href="#sec-object-type">accessor property</a></emu-xref> to a <emu-xref href="#sec-object-type" id="_ref_2343"><a href="#sec-object-type">data property</a></emu-xref>.
|
||
Preserve the existing values of the converted property's
|
||
[[Configurable]] and [[Enumerable]] attributes and set the rest of the
|
||
property's attributes to their default values.</li></ol></li></ol></li><li>Else if <emu-xref aoid="IsDataDescriptor" id="_ref_2344"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>current</var>) and <emu-xref aoid="IsDataDescriptor" id="_ref_2345"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>Desc</var>) are both <emu-val>true</emu-val>, then<ol><li>If <var>current</var>.[[Configurable]] is <emu-val>false</emu-val> and <var>current</var>.[[Writable]] is <emu-val>false</emu-val>, then<ol><li>If <var>Desc</var>.[[Writable]] is present and <var>Desc</var>.[[Writable]] is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>Desc</var>.[[Value]] is present and <emu-xref aoid="SameValue" id="_ref_2346"><a href="#sec-samevalue">SameValue</a></emu-xref>(<var>Desc</var>.[[Value]], <var>current</var>.[[Value]]) is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.</li></ol></li></ol></li><li>Else <emu-xref aoid="IsAccessorDescriptor" id="_ref_2347"><a href="#sec-isaccessordescriptor">IsAccessorDescriptor</a></emu-xref>(<var>current</var>) and <emu-xref aoid="IsAccessorDescriptor" id="_ref_2348"><a href="#sec-isaccessordescriptor">IsAccessorDescriptor</a></emu-xref>(<var>Desc</var>) are both <emu-val>true</emu-val>,<ol><li>If <var>current</var>.[[Configurable]] is <emu-val>false</emu-val>, then<ol><li>If <var>Desc</var>.[[Set]] is present and <emu-xref aoid="SameValue" id="_ref_2349"><a href="#sec-samevalue">SameValue</a></emu-xref>(<var>Desc</var>.[[Set]], <var>current</var>.[[Set]]) is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>Desc</var>.[[Get]] is present and <emu-xref aoid="SameValue" id="_ref_2350"><a href="#sec-samevalue">SameValue</a></emu-xref>(<var>Desc</var>.[[Get]], <var>current</var>.[[Get]]) is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>Return <emu-val>true</emu-val>.</li></ol></li></ol></li><li>If <var>O</var> is not <emu-val>undefined</emu-val>, then<ol><li>For each field of <var>Desc</var> that is present, set the corresponding attribute of the property named <var>P</var> of object <var>O</var> to the value of the field.</li></ol></li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-hasproperty-p">
|
||
<h1><span class="secnum">9.1.7</span>[[HasProperty]] ( <var>P</var> )</h1>
|
||
<p>When the [[HasProperty]] internal method of <var>O</var> is called with property key <var>P</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return ? <emu-xref aoid="OrdinaryHasProperty" id="_ref_2351"><a href="#sec-ordinaryhasproperty">OrdinaryHasProperty</a></emu-xref>(<var>O</var>, <var>P</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinaryhasproperty" aoid="OrdinaryHasProperty">
|
||
<h1><span class="secnum">9.1.7.1</span>OrdinaryHasProperty ( <var>O</var>, <var>P</var> )</h1>
|
||
<p>When the abstract operation OrdinaryHasProperty is called with Object <var>O</var> and with property key <var>P</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2352"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_2353"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>hasOwn</var> be ? <var>O</var>.[[GetOwnProperty]](<var>P</var>).</li><li>If <var>hasOwn</var> is not <emu-val>undefined</emu-val>, return <emu-val>true</emu-val>.</li><li>Let <var>parent</var> be ? <var>O</var>.[[GetPrototypeOf]]().</li><li>If <var>parent</var> is not <emu-val>null</emu-val>, then<ol><li>Return ? <var>parent</var>.[[HasProperty]](<var>P</var>).</li></ol></li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-get-p-receiver">
|
||
<h1><span class="secnum">9.1.8</span>[[Get]] ( <var>P</var>, <var>Receiver</var> )</h1>
|
||
<p>When the [[Get]] internal method of <var>O</var> is called with property key <var>P</var> and <emu-xref href="#sec-ecmascript-language-types" id="_ref_2354"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> <var>Receiver</var>, the following steps are taken:</p>
|
||
|
||
<emu-alg><ol><li>Return ? <emu-xref aoid="OrdinaryGet" id="_ref_2355"><a href="#sec-ordinaryget">OrdinaryGet</a></emu-xref>(<var>O</var>, <var>P</var>, <var>Receiver</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinaryget" aoid="OrdinaryGet">
|
||
<h1><span class="secnum">9.1.8.1</span>OrdinaryGet ( <var>O</var>, <var>P</var>, <var>Receiver</var> )</h1>
|
||
<p>When the abstract operation OrdinaryGet is called with Object <var>O</var>, property key <var>P</var>, and <emu-xref href="#sec-ecmascript-language-types" id="_ref_2356"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> <var>Receiver</var>, the following steps are taken:</p>
|
||
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2357"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_2358"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>desc</var> be ? <var>O</var>.[[GetOwnProperty]](<var>P</var>).</li><li>If <var>desc</var> is <emu-val>undefined</emu-val>, then<ol><li>Let <var>parent</var> be ? <var>O</var>.[[GetPrototypeOf]]().</li><li>If <var>parent</var> is <emu-val>null</emu-val>, return <emu-val>undefined</emu-val>.</li><li>Return ? <var>parent</var>.[[Get]](<var>P</var>, <var>Receiver</var>).</li></ol></li><li>If <emu-xref aoid="IsDataDescriptor" id="_ref_2359"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>desc</var>) is <emu-val>true</emu-val>, return <var>desc</var>.[[Value]].</li><li><emu-xref href="#assert" id="_ref_2360"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsAccessorDescriptor" id="_ref_2361"><a href="#sec-isaccessordescriptor">IsAccessorDescriptor</a></emu-xref>(<var>desc</var>) is <emu-val>true</emu-val>.</li><li>Let <var>getter</var> be <var>desc</var>.[[Get]].</li><li>If <var>getter</var> is <emu-val>undefined</emu-val>, return <emu-val>undefined</emu-val>.</li><li>Return ? <emu-xref aoid="Call" id="_ref_2362"><a href="#sec-call">Call</a></emu-xref>(<var>getter</var>, <var>Receiver</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-set-p-v-receiver">
|
||
<h1><span class="secnum">9.1.9</span>[[Set]] ( <var>P</var>, <var>V</var>, <var>Receiver</var> )</h1>
|
||
<p>When the [[Set]] internal method of <var>O</var> is called with property key <var>P</var>, value <var>V</var>, and <emu-xref href="#sec-ecmascript-language-types" id="_ref_2363"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> <var>Receiver</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return ? <emu-xref aoid="OrdinarySet" id="_ref_2364"><a href="#sec-ordinaryset">OrdinarySet</a></emu-xref>(<var>O</var>, <var>P</var>, <var>V</var>, <var>Receiver</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinaryset" aoid="OrdinarySet">
|
||
<h1><span class="secnum">9.1.9.1</span>OrdinarySet ( <var>O</var>, <var>P</var>, <var>V</var>, <var>Receiver</var> )</h1>
|
||
<p>When the abstract operation OrdinarySet is called with Object <var>O</var>, property key <var>P</var>, value <var>V</var>, and <emu-xref href="#sec-ecmascript-language-types" id="_ref_2365"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> <var>Receiver</var>, the following steps are taken:</p>
|
||
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2366"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_2367"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>ownDesc</var> be ? <var>O</var>.[[GetOwnProperty]](<var>P</var>).</li><li>Return <emu-xref aoid="OrdinarySetWithOwnDescriptor" id="_ref_2368"><a href="#sec-ordinarysetwithowndescriptor">OrdinarySetWithOwnDescriptor</a></emu-xref>(<var>O</var>, <var>P</var>, <var>V</var>, <var>Receiver</var>, <var>ownDesc</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinarysetwithowndescriptor" aoid="OrdinarySetWithOwnDescriptor">
|
||
<h1><span class="secnum">9.1.9.2</span>OrdinarySetWithOwnDescriptor ( <var>O</var>, <var>P</var>, <var>V</var>, <var>Receiver</var>, <var>ownDesc</var> )</h1>
|
||
<p>When the abstract operation OrdinarySetWithOwnDescriptor is called with Object <var>O</var>, property key <var>P</var>, value <var>V</var>, <emu-xref href="#sec-ecmascript-language-types" id="_ref_2369"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> <var>Receiver</var>, and <emu-xref href="#sec-property-descriptor-specification-type" id="_ref_2370"><a href="#sec-property-descriptor-specification-type">Property Descriptor</a></emu-xref> (or <emu-val>undefined</emu-val>) <var>ownDesc</var>, the following steps are taken:</p>
|
||
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2371"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_2372"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>If <var>ownDesc</var> is <emu-val>undefined</emu-val>, then<ol><li>Let <var>parent</var> be ? <var>O</var>.[[GetPrototypeOf]]().</li><li>If <var>parent</var> is not <emu-val>null</emu-val>, then<ol><li>Return ? <var>parent</var>.[[Set]](<var>P</var>, <var>V</var>, <var>Receiver</var>).</li></ol></li><li>Else,<ol><li>Set <var>ownDesc</var> to the PropertyDescriptor { [[Value]]: <emu-val>undefined</emu-val>, [[Writable]]: <emu-val>true</emu-val>, [[Enumerable]]: <emu-val>true</emu-val>, [[Configurable]]: <emu-val>true</emu-val> }.</li></ol></li></ol></li><li>If <emu-xref aoid="IsDataDescriptor" id="_ref_2373"><a href="#sec-isdatadescriptor">IsDataDescriptor</a></emu-xref>(<var>ownDesc</var>) is <emu-val>true</emu-val>, then<ol><li>If <var>ownDesc</var>.[[Writable]] is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>If <emu-xref aoid="Type" id="_ref_2374"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>Receiver</var>) is not Object, return <emu-val>false</emu-val>.</li><li>Let <var>existingDescriptor</var> be ? <var>Receiver</var>.[[GetOwnProperty]](<var>P</var>).</li><li>If <var>existingDescriptor</var> is not <emu-val>undefined</emu-val>, then<ol><li>If <emu-xref aoid="IsAccessorDescriptor" id="_ref_2375"><a href="#sec-isaccessordescriptor">IsAccessorDescriptor</a></emu-xref>(<var>existingDescriptor</var>) is <emu-val>true</emu-val>, return <emu-val>false</emu-val>.</li><li>If <var>existingDescriptor</var>.[[Writable]] is <emu-val>false</emu-val>, return <emu-val>false</emu-val>.</li><li>Let <var>valueDesc</var> be the PropertyDescriptor { [[Value]]: <var>V</var> }.</li><li>Return ? <var>Receiver</var>.[[DefineOwnProperty]](<var>P</var>, <var>valueDesc</var>).</li></ol></li><li>Else <var>Receiver</var> does not currently have a property <var>P</var>,<ol><li>Return ? <emu-xref aoid="CreateDataProperty" id="_ref_2376"><a href="#sec-createdataproperty">CreateDataProperty</a></emu-xref>(<var>Receiver</var>, <var>P</var>, <var>V</var>).</li></ol></li></ol></li><li><emu-xref href="#assert" id="_ref_2377"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsAccessorDescriptor" id="_ref_2378"><a href="#sec-isaccessordescriptor">IsAccessorDescriptor</a></emu-xref>(<var>ownDesc</var>) is <emu-val>true</emu-val>.</li><li>Let <var>setter</var> be <var>ownDesc</var>.[[Set]].</li><li>If <var>setter</var> is <emu-val>undefined</emu-val>, return <emu-val>false</emu-val>.</li><li>Perform ? <emu-xref aoid="Call" id="_ref_2379"><a href="#sec-call">Call</a></emu-xref>(<var>setter</var>, <var>Receiver</var>, « <var>V</var> »).</li><li>Return <emu-val>true</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-delete-p">
|
||
<h1><span class="secnum">9.1.10</span>[[Delete]] ( <var>P</var> )</h1>
|
||
<p>When the [[Delete]] internal method of <var>O</var> is called with property key <var>P</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return ? <emu-xref aoid="OrdinaryDelete" id="_ref_2380"><a href="#sec-ordinarydelete">OrdinaryDelete</a></emu-xref>(<var>O</var>, <var>P</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinarydelete" aoid="OrdinaryDelete">
|
||
<h1><span class="secnum">9.1.10.1</span>OrdinaryDelete ( <var>O</var>, <var>P</var> )</h1>
|
||
<p>When the abstract operation OrdinaryDelete is called with Object <var>O</var> and property key <var>P</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2381"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsPropertyKey" id="_ref_2382"><a href="#sec-ispropertykey">IsPropertyKey</a></emu-xref>(<var>P</var>) is <emu-val>true</emu-val>.</li><li>Let <var>desc</var> be ? <var>O</var>.[[GetOwnProperty]](<var>P</var>).</li><li>If <var>desc</var> is <emu-val>undefined</emu-val>, return <emu-val>true</emu-val>.</li><li>If <var>desc</var>.[[Configurable]] is <emu-val>true</emu-val>, then<ol><li>Remove the own property with name <var>P</var> from <var>O</var>.</li><li>Return <emu-val>true</emu-val>.</li></ol></li><li>Return <emu-val>false</emu-val>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinary-object-internal-methods-and-internal-slots-ownpropertykeys">
|
||
<h1><span class="secnum">9.1.11</span>[[OwnPropertyKeys]] ( )</h1>
|
||
<p>When the [[OwnPropertyKeys]] internal method of <var>O</var> is called, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return ! <emu-xref aoid="OrdinaryOwnPropertyKeys" id="_ref_2383"><a href="#sec-ordinaryownpropertykeys">OrdinaryOwnPropertyKeys</a></emu-xref>(<var>O</var>).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-ordinaryownpropertykeys" aoid="OrdinaryOwnPropertyKeys">
|
||
<h1><span class="secnum">9.1.11.1</span>OrdinaryOwnPropertyKeys ( <var>O</var> )</h1>
|
||
<p>When the abstract operation OrdinaryOwnPropertyKeys is called with Object <var>O</var>, the following steps are taken:</p>
|
||
|
||
<emu-alg><ol><li>Let <var>keys</var> be a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2384"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>For each own property key <var>P</var> of <var>O</var> that is an <emu-xref href="#array-index" id="_ref_2385"><a href="#array-index">array index</a></emu-xref>, in ascending numeric index order, do<ol><li>Add <var>P</var> as the last element of <var>keys</var>.</li></ol></li><li>For each own property key <var>P</var> of <var>O</var> that is a String but is not an <emu-xref href="#array-index" id="_ref_2386"><a href="#array-index">array index</a></emu-xref>, in ascending chronological order of property creation, do<ol><li>Add <var>P</var> as the last element of <var>keys</var>.</li></ol></li><li>For each own property key <var>P</var> of <var>O</var> that is a Symbol, in ascending chronological order of property creation, do<ol><li>Add <var>P</var> as the last element of <var>keys</var>.</li></ol></li><li>Return <var>keys</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-objectcreate" aoid="ObjectCreate">
|
||
<h1><span class="secnum">9.1.12</span>ObjectCreate ( <var>proto</var> [ , <var>internalSlotsList</var> ] )</h1>
|
||
<p>The abstract operation ObjectCreate with argument <var>proto</var> (an object or null) is used to specify the runtime creation of new ordinary objects. The optional argument <var>internalSlotsList</var> is a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2387"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of the names of additional internal slots that must be defined as part of the object. If the list is not provided, a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2388"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> is used. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li>If <var>internalSlotsList</var> is not present, set <var>internalSlotsList</var> to a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2389"><a href="#sec-list-and-record-specification-type">List</a></emu-xref>.</li><li>Let <var>obj</var> be a newly created object with an internal slot for each name in <var>internalSlotsList</var>.</li><li>Set <var>obj</var>'s essential internal methods to the default ordinary object definitions specified in <emu-xref href="#sec-ordinary-object-internal-methods-and-internal-slots" id="_ref_186"><a href="#sec-ordinary-object-internal-methods-and-internal-slots">9.1</a></emu-xref>.</li><li>Set <var>obj</var>.[[Prototype]] to <var>proto</var>.</li><li>Set <var>obj</var>.[[Extensible]] to <emu-val>true</emu-val>.</li><li>Return <var>obj</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinarycreatefromconstructor" aoid="OrdinaryCreateFromConstructor">
|
||
<h1><span class="secnum">9.1.13</span>OrdinaryCreateFromConstructor ( <var>constructor</var>, <var>intrinsicDefaultProto</var> [ , <var>internalSlotsList</var> ] )</h1>
|
||
<p>The abstract operation OrdinaryCreateFromConstructor creates an ordinary object whose [[Prototype]] value is retrieved from a <emu-xref href="#constructor" id="_ref_2390"><a href="#constructor">constructor</a></emu-xref>'s <code>prototype</code> property, if it exists. Otherwise the intrinsic named by <var>intrinsicDefaultProto</var> is used for [[Prototype]]. The optional <var>internalSlotsList</var> is a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2391"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of the names of additional internal slots that must be defined as part of the object. If the list is not provided, a new empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2392"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> is used. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2393"><a href="#assert">Assert</a></emu-xref>: <var>intrinsicDefaultProto</var>
|
||
is a String value that is this specification's name of an intrinsic
|
||
object. The corresponding object must be an intrinsic that is intended
|
||
to be used as the [[Prototype]] value of an object.</li><li>Let <var>proto</var> be ? <emu-xref aoid="GetPrototypeFromConstructor" id="_ref_2394"><a href="#sec-getprototypefromconstructor">GetPrototypeFromConstructor</a></emu-xref>(<var>constructor</var>, <var>intrinsicDefaultProto</var>).</li><li>Return <emu-xref aoid="ObjectCreate" id="_ref_2395"><a href="#sec-objectcreate">ObjectCreate</a></emu-xref>(<var>proto</var>, <var>internalSlotsList</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-getprototypefromconstructor" aoid="GetPrototypeFromConstructor">
|
||
<h1><span class="secnum">9.1.14</span>GetPrototypeFromConstructor ( <var>constructor</var>, <var>intrinsicDefaultProto</var> )</h1>
|
||
<p>The abstract operation GetPrototypeFromConstructor determines
|
||
the [[Prototype]] value that should be used to create an object
|
||
corresponding to a specific <emu-xref href="#constructor" id="_ref_2396"><a href="#constructor">constructor</a></emu-xref>. The value is retrieved from the <emu-xref href="#constructor" id="_ref_2397"><a href="#constructor">constructor</a></emu-xref>'s <code>prototype</code> property, if it exists. Otherwise the intrinsic named by <var>intrinsicDefaultProto</var> is used for [[Prototype]]. This abstract operation performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2398"><a href="#assert">Assert</a></emu-xref>: <var>intrinsicDefaultProto</var>
|
||
is a String value that is this specification's name of an intrinsic
|
||
object. The corresponding object must be an intrinsic that is intended
|
||
to be used as the [[Prototype]] value of an object.</li><li><emu-xref href="#assert" id="_ref_2399"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsCallable" id="_ref_2400"><a href="#sec-iscallable">IsCallable</a></emu-xref>(<var>constructor</var>) is <emu-val>true</emu-val>.</li><li>Let <var>proto</var> be ? <emu-xref aoid="Get" id="_ref_2401"><a href="#sec-get-o-p">Get</a></emu-xref>(<var>constructor</var>, <code>"prototype"</code>).</li><li>If <emu-xref aoid="Type" id="_ref_2402"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>proto</var>) is not Object, then<ol><li>Let <var>realm</var> be ? <emu-xref aoid="GetFunctionRealm" id="_ref_2403"><a href="#sec-getfunctionrealm">GetFunctionRealm</a></emu-xref>(<var>constructor</var>).</li><li>Set <var>proto</var> to <var>realm</var>'s intrinsic object named <var>intrinsicDefaultProto</var>.</li></ol></li><li>Return <var>proto</var>.
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>If <var>constructor</var> does not supply a [[Prototype]] value, the default value that is used is obtained from the <emu-xref href="#realm" id="_ref_2404"><a href="#realm">realm</a></emu-xref> of the <var>constructor</var> function rather than from the <emu-xref href="#running-execution-context" id="_ref_2405"><a href="#running-execution-context">running execution context</a></emu-xref>.</p>
|
||
</div></emu-note>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ecmascript-function-objects">
|
||
<h1><span class="secnum">9.2</span>ECMAScript Function Objects</h1>
|
||
<p>ECMAScript function objects encapsulate parameterized ECMAScript
|
||
code closed over a lexical environment and support the dynamic
|
||
evaluation of that code. An ECMAScript <emu-xref href="#function-object" id="_ref_2406"><a href="#function-object">function object</a></emu-xref>
|
||
is an ordinary object and has the same internal slots and the same
|
||
internal methods as other ordinary objects. The code of an ECMAScript <emu-xref href="#function-object" id="_ref_2407"><a href="#function-object">function object</a></emu-xref> may be either <emu-xref href="#sec-strict-mode-code" id="_ref_2408"><a href="#sec-strict-mode-code">strict mode code</a></emu-xref> (<emu-xref href="#sec-strict-mode-code" id="_ref_187"><a href="#sec-strict-mode-code">10.2.1</a></emu-xref>) or <emu-xref href="#non-strict-code" id="_ref_2409"><a href="#non-strict-code">non-strict code</a></emu-xref>. An ECMAScript <emu-xref href="#function-object" id="_ref_2410"><a href="#function-object">function object</a></emu-xref> whose code is <emu-xref href="#sec-strict-mode-code" id="_ref_2411"><a href="#sec-strict-mode-code">strict mode code</a></emu-xref> is called a <dfn id="strict-function">strict function</dfn>. One whose code is not <emu-xref href="#sec-strict-mode-code" id="_ref_2412"><a href="#sec-strict-mode-code">strict mode code</a></emu-xref> is called a <dfn id="non-strict-function">non-strict function</dfn>.</p>
|
||
<p>ECMAScript function objects have the additional internal slots listed in <emu-xref href="#table-27" id="_ref_188"><a href="#table-27">Table 27</a></emu-xref>.</p>
|
||
<emu-table id="table-27" caption="Internal Slots of ECMAScript Function Objects"><figure><figcaption>Table 27: Internal Slots of ECMAScript Function Objects</figcaption>
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>
|
||
Internal Slot
|
||
|
||
</th>
|
||
<th>
|
||
Type
|
||
|
||
</th>
|
||
<th>
|
||
Description
|
||
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Environment]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-xref href="#sec-lexical-environments" id="_ref_2413"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#sec-lexical-environments" id="_ref_2414"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> that the function was closed over. Used as the outer environment when evaluating the code of the function.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[FormalParameters]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-xref href="#sec-syntactic-grammar" id="_ref_2415"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The root parse node of the source text that defines the function's formal parameter list.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[FunctionKind]]
|
||
|
||
</td>
|
||
<td>
|
||
String
|
||
|
||
</td>
|
||
<td>
|
||
Either <code>"normal"</code>, <code>"classConstructor"</code>, <code>"generator"</code>, <code>"async"</code>, or <code>"async generator"</code>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[ECMAScriptCode]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-xref href="#sec-syntactic-grammar" id="_ref_2416"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The root parse node of the source text that defines the function's body.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[ConstructorKind]]
|
||
|
||
</td>
|
||
<td>
|
||
String
|
||
|
||
</td>
|
||
<td>
|
||
Either <code>"base"</code> or <code>"derived"</code>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Realm]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-xref href="#realm-record" id="_ref_2417"><a href="#realm-record">Realm Record</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#realm" id="_ref_2418"><a href="#realm">realm</a></emu-xref> in which the function was created and which provides any intrinsic objects that are accessed when evaluating the function.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[ScriptOrModule]]
|
||
|
||
</td>
|
||
<td>
|
||
<emu-xref href="#script-record" id="_ref_2419"><a href="#script-record">Script Record</a></emu-xref> or <emu-xref href="#sec-abstract-module-records" id="_ref_2420"><a href="#sec-abstract-module-records">Module Record</a></emu-xref>
|
||
|
||
</td>
|
||
<td>
|
||
The script or module in which the function was created.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[ThisMode]]
|
||
|
||
</td>
|
||
<td>
|
||
(lexical, strict, global)
|
||
|
||
</td>
|
||
<td>
|
||
Defines how <code>this</code> references are interpreted within the formal parameters and code body of the function. <emu-const>lexical</emu-const> means that <code>this</code> refers to the <emu-val>this</emu-val> value of a lexically enclosing function. <emu-const>strict</emu-const> means that the <emu-val>this</emu-val> value is used exactly as provided by an invocation of the function. <emu-const>global</emu-const> means that a <emu-val>this</emu-val> value of <emu-val>undefined</emu-val> is interpreted as a reference to the <emu-xref href="#sec-global-object" id="_ref_2421"><a href="#sec-global-object">global object</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[Strict]]
|
||
|
||
</td>
|
||
<td>
|
||
Boolean
|
||
|
||
</td>
|
||
<td>
|
||
<emu-val>true</emu-val> if this is a <emu-xref href="#strict-function" id="_ref_2422"><a href="#strict-function">strict function</a></emu-xref>, <emu-val>false</emu-val> if this is a <emu-xref href="#non-strict-function" id="_ref_2423"><a href="#non-strict-function">non-strict function</a></emu-xref>.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[HomeObject]]
|
||
|
||
</td>
|
||
<td>
|
||
Object
|
||
|
||
</td>
|
||
<td>
|
||
If the function uses <code>super</code>, this is the object whose [[GetPrototypeOf]] provides the object where <code>super</code> property lookups begin.
|
||
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
[[SourceText]]
|
||
|
||
</td>
|
||
<td>
|
||
String
|
||
|
||
</td>
|
||
<td>
|
||
The <emu-xref href="#sec-source-text" id="_ref_189"><a href="#sec-source-text">source text</a></emu-xref> that defines the function.
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure></emu-table>
|
||
<p>All ECMAScript function objects have the [[Call]] internal method
|
||
defined here. ECMAScript functions that are also constructors in
|
||
addition have the [[Construct]] internal method.</p>
|
||
|
||
<emu-clause id="sec-ecmascript-function-objects-call-thisargument-argumentslist">
|
||
<h1><span class="secnum">9.2.1</span>[[Call]] ( <var>thisArgument</var>, <var>argumentsList</var> )</h1>
|
||
<p>The [[Call]] internal method for an ECMAScript <emu-xref href="#function-object" id="_ref_2424"><a href="#function-object">function object</a></emu-xref> <var>F</var> is called with parameters <var>thisArgument</var> and <var>argumentsList</var>, a <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2425"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of ECMAScript language values. The following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2426"><a href="#assert">Assert</a></emu-xref>: <var>F</var> is an ECMAScript <emu-xref href="#function-object" id="_ref_2427"><a href="#function-object">function object</a></emu-xref>.</li><li>If <var>F</var>.[[FunctionKind]] is <code>"classConstructor"</code>, throw a <emu-val>TypeError</emu-val> exception.</li><li>Let <var>callerContext</var> be the <emu-xref href="#running-execution-context" id="_ref_2428"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Let <var>calleeContext</var> be <emu-xref aoid="PrepareForOrdinaryCall" id="_ref_2429"><a href="#sec-prepareforordinarycall">PrepareForOrdinaryCall</a></emu-xref>(<var>F</var>, <emu-val>undefined</emu-val>).</li><li><emu-xref href="#assert" id="_ref_2430"><a href="#assert">Assert</a></emu-xref>: <var>calleeContext</var> is now the <emu-xref href="#running-execution-context" id="_ref_2431"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Perform <emu-xref aoid="OrdinaryCallBindThis" id="_ref_2432"><a href="#sec-ordinarycallbindthis">OrdinaryCallBindThis</a></emu-xref>(<var>F</var>, <var>calleeContext</var>, <var>thisArgument</var>).</li><li>Let <var>result</var> be <emu-xref aoid="OrdinaryCallEvaluateBody" id="_ref_2433"><a href="#sec-ordinarycallevaluatebody">OrdinaryCallEvaluateBody</a></emu-xref>(<var>F</var>, <var>argumentsList</var>).</li><li>Remove <var>calleeContext</var> from the <emu-xref href="#execution-context-stack" id="_ref_2434"><a href="#execution-context-stack">execution context stack</a></emu-xref> and restore <var>callerContext</var> as the <emu-xref href="#running-execution-context" id="_ref_2435"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>If <var>result</var>.[[Type]] is <emu-const>return</emu-const>, return <emu-xref aoid="NormalCompletion" id="_ref_2436"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<var>result</var>.[[Value]]).</li><li><emu-xref aoid="ReturnIfAbrupt" id="_ref_2437"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>result</var>).</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_2438"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-val>undefined</emu-val>).
|
||
</li></ol></emu-alg>
|
||
<emu-note><span class="note">Note</span><div class="note-contents">
|
||
<p>When <var>calleeContext</var> is removed from the <emu-xref href="#execution-context-stack" id="_ref_2439"><a href="#execution-context-stack">execution context stack</a></emu-xref> in step 8 it must not be destroyed if it is suspended and retained for later resumption by an accessible generator object.</p>
|
||
</div></emu-note>
|
||
|
||
<emu-clause id="sec-prepareforordinarycall" aoid="PrepareForOrdinaryCall">
|
||
<h1><span class="secnum">9.2.1.1</span>PrepareForOrdinaryCall ( <var>F</var>, <var>newTarget</var> )</h1>
|
||
<p>When the abstract operation PrepareForOrdinaryCall is called with <emu-xref href="#function-object" id="_ref_2440"><a href="#function-object">function object</a></emu-xref> <var>F</var> and <emu-xref href="#sec-ecmascript-language-types" id="_ref_2441"><a href="#sec-ecmascript-language-types">ECMAScript language value</a></emu-xref> <var>newTarget</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2442"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_2443"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>newTarget</var>) is Undefined or Object.</li><li>Let <var>callerContext</var> be the <emu-xref href="#running-execution-context" id="_ref_2444"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Let <var>calleeContext</var> be a new ECMAScript code <emu-xref href="#sec-execution-contexts" id="_ref_2445"><a href="#sec-execution-contexts">execution context</a></emu-xref>.</li><li>Set the Function of <var>calleeContext</var> to <var>F</var>.</li><li>Let <var>calleeRealm</var> be <var>F</var>.[[Realm]].</li><li>Set the <emu-xref href="#realm" id="_ref_2446"><a href="#realm">Realm</a></emu-xref> of <var>calleeContext</var> to <var>calleeRealm</var>.</li><li>Set the ScriptOrModule of <var>calleeContext</var> to <var>F</var>.[[ScriptOrModule]].</li><li>Let <var>localEnv</var> be <emu-xref aoid="NewFunctionEnvironment" id="_ref_2447"><a href="#sec-newfunctionenvironment">NewFunctionEnvironment</a></emu-xref>(<var>F</var>, <var>newTarget</var>).</li><li>Set the LexicalEnvironment of <var>calleeContext</var> to <var>localEnv</var>.</li><li>Set the VariableEnvironment of <var>calleeContext</var> to <var>localEnv</var>.</li><li>If <var>callerContext</var> is not already suspended, suspend <var>callerContext</var>.</li><li>Push <var>calleeContext</var> onto the <emu-xref href="#execution-context-stack" id="_ref_2448"><a href="#execution-context-stack">execution context stack</a></emu-xref>; <var>calleeContext</var> is now the <emu-xref href="#running-execution-context" id="_ref_2449"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>NOTE: Any exception objects produced after this point are associated with <var>calleeRealm</var>.</li><li>Return <var>calleeContext</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinarycallbindthis" aoid="OrdinaryCallBindThis">
|
||
<h1><span class="secnum">9.2.1.2</span>OrdinaryCallBindThis ( <var>F</var>, <var>calleeContext</var>, <var>thisArgument</var> )</h1>
|
||
<p>When the abstract operation OrdinaryCallBindThis is called with <emu-xref href="#function-object" id="_ref_2450"><a href="#function-object">function object</a></emu-xref> <var>F</var>, <emu-xref href="#sec-execution-contexts" id="_ref_2451"><a href="#sec-execution-contexts">execution context</a></emu-xref> <var>calleeContext</var>, and ECMAScript value <var>thisArgument</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Let <var>thisMode</var> be <var>F</var>.[[ThisMode]].</li><li>If <var>thisMode</var> is <emu-const>lexical</emu-const>, return <emu-xref aoid="NormalCompletion" id="_ref_2452"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-val>undefined</emu-val>).</li><li>Let <var>calleeRealm</var> be <var>F</var>.[[Realm]].</li><li>Let <var>localEnv</var> be the LexicalEnvironment of <var>calleeContext</var>.</li><li>If <var>thisMode</var> is <emu-const>strict</emu-const>, let <var>thisValue</var> be <var>thisArgument</var>.</li><li>Else,<ol><li>If <var>thisArgument</var> is <emu-val>undefined</emu-val> or <emu-val>null</emu-val>, then<ol><li>Let <var>globalEnv</var> be <var>calleeRealm</var>.[[GlobalEnv]].</li><li>Let <var>globalEnvRec</var> be <var>globalEnv</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2453"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_2454"><a href="#assert">Assert</a></emu-xref>: <var>globalEnvRec</var> is a global <emu-xref href="#sec-environment-records" id="_ref_2455"><a href="#sec-environment-records">Environment Record</a></emu-xref>.</li><li>Let <var>thisValue</var> be <var>globalEnvRec</var>.[[GlobalThisValue]].</li></ol></li><li>Else,<ol><li>Let <var>thisValue</var> be ! <emu-xref aoid="ToObject" id="_ref_2456"><a href="#sec-toobject">ToObject</a></emu-xref>(<var>thisArgument</var>).</li><li>NOTE: <emu-xref aoid="ToObject" id="_ref_2457"><a href="#sec-toobject">ToObject</a></emu-xref> produces wrapper objects using <var>calleeRealm</var>.</li></ol></li></ol></li><li>Let <var>envRec</var> be <var>localEnv</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2458"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_2459"><a href="#assert">Assert</a></emu-xref>: <var>envRec</var> is a <emu-xref href="#sec-function-environment-records" id="_ref_2460"><a href="#sec-function-environment-records">function Environment Record</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_2461"><a href="#assert">Assert</a></emu-xref>: The next step never returns an <emu-xref href="#sec-completion-record-specification-type" id="_ref_2462"><a href="#sec-completion-record-specification-type">abrupt completion</a></emu-xref> because <var>envRec</var>.[[ThisBindingStatus]] is not <code>"initialized"</code>.</li><li>Return <var>envRec</var>.BindThisValue(<var>thisValue</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ordinarycallevaluatebody" aoid="OrdinaryCallEvaluateBody">
|
||
<h1><span class="secnum">9.2.1.3</span>OrdinaryCallEvaluateBody ( <var>F</var>, <var>argumentsList</var> )</h1>
|
||
<p>When the abstract operation OrdinaryCallEvaluateBody is called with <emu-xref href="#function-object" id="_ref_2463"><a href="#function-object">function object</a></emu-xref> <var>F</var> and <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2464"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> <var>argumentsList</var>, the following steps are taken:</p>
|
||
<emu-alg><ol><li>Return the result of EvaluateBody of the parsed code that is <var>F</var>.[[ECMAScriptCode]] passing <var>F</var> and <var>argumentsList</var> as the arguments.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-ecmascript-function-objects-construct-argumentslist-newtarget">
|
||
<h1><span class="secnum">9.2.2</span>[[Construct]] ( <var>argumentsList</var>, <var>newTarget</var> )</h1>
|
||
<p>The [[Construct]] internal method for an ECMAScript <emu-xref href="#function-object" id="_ref_2465"><a href="#function-object">function object</a></emu-xref> <var>F</var> is called with parameters <var>argumentsList</var> and <var>newTarget</var>. <var>argumentsList</var> is a possibly empty <emu-xref href="#sec-list-and-record-specification-type" id="_ref_2466"><a href="#sec-list-and-record-specification-type">List</a></emu-xref> of ECMAScript language values. The following steps are taken:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2467"><a href="#assert">Assert</a></emu-xref>: <var>F</var> is an ECMAScript <emu-xref href="#function-object" id="_ref_2468"><a href="#function-object">function object</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_2469"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_2470"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>newTarget</var>) is Object.</li><li>Let <var>callerContext</var> be the <emu-xref href="#running-execution-context" id="_ref_2471"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>Let <var>kind</var> be <var>F</var>.[[ConstructorKind]].</li><li>If <var>kind</var> is <code>"base"</code>, then<ol><li>Let <var>thisArgument</var> be ? <emu-xref aoid="OrdinaryCreateFromConstructor" id="_ref_2472"><a href="#sec-ordinarycreatefromconstructor">OrdinaryCreateFromConstructor</a></emu-xref>(<var>newTarget</var>, <code>"%ObjectPrototype%"</code>).</li></ol></li><li>Let <var>calleeContext</var> be <emu-xref aoid="PrepareForOrdinaryCall" id="_ref_2473"><a href="#sec-prepareforordinarycall">PrepareForOrdinaryCall</a></emu-xref>(<var>F</var>, <var>newTarget</var>).</li><li><emu-xref href="#assert" id="_ref_2474"><a href="#assert">Assert</a></emu-xref>: <var>calleeContext</var> is now the <emu-xref href="#running-execution-context" id="_ref_2475"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>If <var>kind</var> is <code>"base"</code>, perform <emu-xref aoid="OrdinaryCallBindThis" id="_ref_2476"><a href="#sec-ordinarycallbindthis">OrdinaryCallBindThis</a></emu-xref>(<var>F</var>, <var>calleeContext</var>, <var>thisArgument</var>).</li><li>Let <var>constructorEnv</var> be the LexicalEnvironment of <var>calleeContext</var>.</li><li>Let <var>envRec</var> be <var>constructorEnv</var>'s <emu-xref href="#sec-lexical-environments" id="_ref_2477"><a href="#sec-lexical-environments">EnvironmentRecord</a></emu-xref>.</li><li>Let <var>result</var> be <emu-xref aoid="OrdinaryCallEvaluateBody" id="_ref_2478"><a href="#sec-ordinarycallevaluatebody">OrdinaryCallEvaluateBody</a></emu-xref>(<var>F</var>, <var>argumentsList</var>).</li><li>Remove <var>calleeContext</var> from the <emu-xref href="#execution-context-stack" id="_ref_2479"><a href="#execution-context-stack">execution context stack</a></emu-xref> and restore <var>callerContext</var> as the <emu-xref href="#running-execution-context" id="_ref_2480"><a href="#running-execution-context">running execution context</a></emu-xref>.</li><li>If <var>result</var>.[[Type]] is <emu-const>return</emu-const>, then<ol><li>If <emu-xref aoid="Type" id="_ref_2481"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>result</var>.[[Value]]) is Object, return <emu-xref aoid="NormalCompletion" id="_ref_2482"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<var>result</var>.[[Value]]).</li><li>If <var>kind</var> is <code>"base"</code>, return <emu-xref aoid="NormalCompletion" id="_ref_2483"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<var>thisArgument</var>).</li><li>If <var>result</var>.[[Value]] is not <emu-val>undefined</emu-val>, throw a <emu-val>TypeError</emu-val> exception.</li></ol></li><li>Else, <emu-xref aoid="ReturnIfAbrupt" id="_ref_2484"><a href="#sec-returnifabrupt">ReturnIfAbrupt</a></emu-xref>(<var>result</var>).</li><li>Return ? <var>envRec</var>.GetThisBinding().
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-functionallocate" aoid="FunctionAllocate">
|
||
<h1><span class="secnum">9.2.3</span>FunctionAllocate ( <var>functionPrototype</var>, <var>strict</var>, <var>functionKind</var> )</h1>
|
||
<p>The abstract operation FunctionAllocate requires the three arguments <var>functionPrototype</var>, <var>strict</var> and <var>functionKind</var>. FunctionAllocate performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2485"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_2486"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>functionPrototype</var>) is Object.</li><li><emu-xref href="#assert" id="_ref_2487"><a href="#assert">Assert</a></emu-xref>: <var>functionKind</var> is either <code>"normal"</code>, <code>"non-constructor"</code>, <code>"generator"</code>, <code>"async"</code>, or <code>"async generator"</code>.</li><li>If <var>functionKind</var> is <code>"normal"</code>, let <var>needsConstruct</var> be <emu-val>true</emu-val>.</li><li>Else, let <var>needsConstruct</var> be <emu-val>false</emu-val>.</li><li>If <var>functionKind</var> is <code>"non-constructor"</code>, set <var>functionKind</var> to <code>"normal"</code>.</li><li>Let <var>F</var> be a newly created ECMAScript <emu-xref href="#function-object" id="_ref_2488"><a href="#function-object">function object</a></emu-xref> with the internal slots listed in <emu-xref href="#table-27" id="_ref_190"><a href="#table-27">Table 27</a></emu-xref>. All of those internal slots are initialized to <emu-val>undefined</emu-val>.</li><li>Set <var>F</var>'s essential internal methods to the default ordinary object definitions specified in <emu-xref href="#sec-ordinary-object-internal-methods-and-internal-slots" id="_ref_191"><a href="#sec-ordinary-object-internal-methods-and-internal-slots">9.1</a></emu-xref>.</li><li>Set <var>F</var>.[[Call]] to the definition specified in <emu-xref href="#sec-ecmascript-function-objects-call-thisargument-argumentslist" id="_ref_192"><a href="#sec-ecmascript-function-objects-call-thisargument-argumentslist">9.2.1</a></emu-xref>.</li><li>If <var>needsConstruct</var> is <emu-val>true</emu-val>, then<ol><li>Set <var>F</var>.[[Construct]] to the definition specified in <emu-xref href="#sec-ecmascript-function-objects-construct-argumentslist-newtarget" id="_ref_193"><a href="#sec-ecmascript-function-objects-construct-argumentslist-newtarget">9.2.2</a></emu-xref>.</li><li>Set <var>F</var>.[[ConstructorKind]] to <code>"base"</code>.</li></ol></li><li>Set <var>F</var>.[[Strict]] to <var>strict</var>.</li><li>Set <var>F</var>.[[FunctionKind]] to <var>functionKind</var>.</li><li>Set <var>F</var>.[[Prototype]] to <var>functionPrototype</var>.</li><li>Set <var>F</var>.[[Extensible]] to <emu-val>true</emu-val>.</li><li>Set <var>F</var>.[[Realm]] to <emu-xref href="#current-realm" id="_ref_2489"><a href="#current-realm">the current Realm Record</a></emu-xref>.</li><li>Return <var>F</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-functioninitialize" aoid="FunctionInitialize">
|
||
<h1><span class="secnum">9.2.4</span>FunctionInitialize ( <var>F</var>, <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var> )</h1>
|
||
<p>The abstract operation FunctionInitialize requires the arguments: a <emu-xref href="#function-object" id="_ref_2490"><a href="#function-object">function object</a></emu-xref> <var>F</var>, <var>kind</var> which is one of (Normal, Method, Arrow), a parameter list <emu-xref href="#sec-syntactic-grammar" id="_ref_2491"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> specified by <var>ParameterList</var>, a body <emu-xref href="#sec-syntactic-grammar" id="_ref_2492"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> specified by <var>Body</var>, a <emu-xref href="#sec-lexical-environments" id="_ref_2493"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> specified by <var>Scope</var>. FunctionInitialize performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>len</var> be the ExpectedArgumentCount of <var>ParameterList</var>.</li><li>Perform ! <emu-xref aoid="SetFunctionLength" id="_ref_2494"><a href="#sec-setfunctionlength">SetFunctionLength</a></emu-xref>(<var>F</var>, <var>len</var>).</li><li>Let <var>Strict</var> be <var>F</var>.[[Strict]].</li><li>Set <var>F</var>.[[Environment]] to <var>Scope</var>.</li><li>Set <var>F</var>.[[FormalParameters]] to <var>ParameterList</var>.</li><li>Set <var>F</var>.[[ECMAScriptCode]] to <var>Body</var>.</li><li>Set <var>F</var>.[[ScriptOrModule]] to <emu-xref aoid="GetActiveScriptOrModule" id="_ref_2495"><a href="#sec-getactivescriptormodule">GetActiveScriptOrModule</a></emu-xref>().</li><li>If <var>kind</var> is <emu-const>Arrow</emu-const>, set <var>F</var>.[[ThisMode]] to <emu-const>lexical</emu-const>.</li><li>Else if <var>Strict</var> is <emu-val>true</emu-val>, set <var>F</var>.[[ThisMode]] to <emu-const>strict</emu-const>.</li><li>Else, set <var>F</var>.[[ThisMode]] to <emu-const>global</emu-const>.</li><li>Return <var>F</var>.
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-functioncreate" aoid="FunctionCreate">
|
||
<h1><span class="secnum">9.2.5</span>FunctionCreate ( <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>, <var>Strict</var> [ , <var>prototype</var> ] )</h1>
|
||
<p>The abstract operation FunctionCreate requires the arguments: <var>kind</var> which is one of (Normal, Method, Arrow), a parameter list <emu-xref href="#sec-syntactic-grammar" id="_ref_2496"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> specified by <var>ParameterList</var>, a body <emu-xref href="#sec-syntactic-grammar" id="_ref_2497"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> specified by <var>Body</var>, a <emu-xref href="#sec-lexical-environments" id="_ref_2498"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> specified by <var>Scope</var>, a Boolean flag <var>Strict</var>, and optionally, an object <var>prototype</var>. FunctionCreate performs the following steps:</p>
|
||
<emu-alg><ol><li>If <var>prototype</var> is not present, then<ol><li>Set <var>prototype</var> to the intrinsic object <emu-xref href="#sec-properties-of-the-function-prototype-object" id="_ref_2499"><a href="#sec-properties-of-the-function-prototype-object">%FunctionPrototype%</a></emu-xref>.</li></ol></li><li>If <var>kind</var> is not <emu-const>Normal</emu-const>, let <var>allocKind</var> be <code>"non-constructor"</code>.</li><li>Else, let <var>allocKind</var> be <code>"normal"</code>.</li><li>Let <var>F</var> be <emu-xref aoid="FunctionAllocate" id="_ref_2500"><a href="#sec-functionallocate">FunctionAllocate</a></emu-xref>(<var>prototype</var>, <var>Strict</var>, <var>allocKind</var>).</li><li>Return <emu-xref aoid="FunctionInitialize" id="_ref_2501"><a href="#sec-functioninitialize">FunctionInitialize</a></emu-xref>(<var>F</var>, <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-generatorfunctioncreate" aoid="GeneratorFunctionCreate">
|
||
<h1><span class="secnum">9.2.6</span>GeneratorFunctionCreate ( <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>, <var>Strict</var> )</h1>
|
||
<p>The abstract operation GeneratorFunctionCreate requires the arguments: <var>kind</var> which is one of (Normal, Method), a parameter list <emu-xref href="#sec-syntactic-grammar" id="_ref_2502"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> specified by <var>ParameterList</var>, a body <emu-xref href="#sec-syntactic-grammar" id="_ref_2503"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> specified by <var>Body</var>, a <emu-xref href="#sec-lexical-environments" id="_ref_2504"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> specified by <var>Scope</var>, and a Boolean flag <var>Strict</var>. GeneratorFunctionCreate performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>functionPrototype</var> be the intrinsic object <emu-xref href="#sec-properties-of-the-generatorfunction-prototype-object" id="_ref_2505"><a href="#sec-properties-of-the-generatorfunction-prototype-object">%Generator%</a></emu-xref>.</li><li>Let <var>F</var> be <emu-xref aoid="FunctionAllocate" id="_ref_2506"><a href="#sec-functionallocate">FunctionAllocate</a></emu-xref>(<var>functionPrototype</var>, <var>Strict</var>, <code>"generator"</code>).</li><li>Return <emu-xref aoid="FunctionInitialize" id="_ref_2507"><a href="#sec-functioninitialize">FunctionInitialize</a></emu-xref>(<var>F</var>, <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-asyncgeneratorfunctioncreate" aoid="AsyncGeneratorFunctionCreate">
|
||
<h1><span class="secnum">9.2.7</span>AsyncGeneratorFunctionCreate ( <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>, <var>Strict</var> )</h1>
|
||
<p>The abstract operation AsyncGeneratorFunctionCreate requires the arguments: <var>kind</var> which is one of (<emu-const>Normal</emu-const>, <emu-const>Method</emu-const>), a parameter list <emu-xref href="#sec-syntactic-grammar" id="_ref_2508"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> specified by <var>ParameterList</var>, a body <emu-xref href="#sec-syntactic-grammar" id="_ref_2509"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> specified by <var>Body</var>, a <emu-xref href="#sec-lexical-environments" id="_ref_2510"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> specified by <var>Scope</var>, and a Boolean flag <var>Strict</var>. AsyncGeneratorFunctionCreate performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>functionPrototype</var> be the intrinsic object <emu-xref href="#sec-asyncgeneratorfunction-prototype" id="_ref_2511"><a href="#sec-asyncgeneratorfunction-prototype">%AsyncGenerator%</a></emu-xref>.</li><li>Let <var>F</var> be ! <emu-xref aoid="FunctionAllocate" id="_ref_2512"><a href="#sec-functionallocate">FunctionAllocate</a></emu-xref>(<var>functionPrototype</var>, <var>Strict</var>, <code>"generator"</code>).</li><li>Return ! <emu-xref aoid="FunctionInitialize" id="_ref_2513"><a href="#sec-functioninitialize">FunctionInitialize</a></emu-xref>(<var>F</var>, <var>kind</var>, <var>ParameterList</var>, <var>Body</var>, <var>Scope</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-async-functions-abstract-operations-async-function-create" aoid="AsyncFunctionCreate">
|
||
<h1><span class="secnum">9.2.8</span>AsyncFunctionCreate ( <var>kind</var>, <var>parameters</var>, <var>body</var>, <var>Scope</var>, <var>Strict</var> )</h1>
|
||
<p>The abstract operation AsyncFunctionCreate requires the arguments: <var>kind</var> which is one of (<emu-const>Normal</emu-const>, <emu-const>Method</emu-const>, <emu-const>Arrow</emu-const>), a parameter list <emu-xref href="#sec-syntactic-grammar" id="_ref_2514"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> specified by <var>parameters</var>, a body <emu-xref href="#sec-syntactic-grammar" id="_ref_2515"><a href="#sec-syntactic-grammar">Parse Node</a></emu-xref> specified by <var>body</var>, a <emu-xref href="#sec-lexical-environments" id="_ref_2516"><a href="#sec-lexical-environments">Lexical Environment</a></emu-xref> specified by <var>Scope</var>, and a Boolean flag <var>Strict</var>. AsyncFunctionCreate performs the following steps:</p>
|
||
<emu-alg><ol><li>Let <var>functionPrototype</var> be the intrinsic object <emu-xref href="#sec-async-function-prototype-properties" id="_ref_2517"><a href="#sec-async-function-prototype-properties">%AsyncFunctionPrototype%</a></emu-xref>.</li><li>Let <var>F</var> be ! <emu-xref aoid="FunctionAllocate" id="_ref_2518"><a href="#sec-functionallocate">FunctionAllocate</a></emu-xref>(<var>functionPrototype</var>, <var>Strict</var>, <code>"async"</code>).</li><li>Return ! <emu-xref aoid="FunctionInitialize" id="_ref_2519"><a href="#sec-functioninitialize">FunctionInitialize</a></emu-xref>(<var>F</var>, <var>kind</var>, <var>parameters</var>, <var>body</var>, <var>Scope</var>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-addrestrictedfunctionproperties" aoid="AddRestrictedFunctionProperties">
|
||
<h1><span class="secnum">9.2.9</span>AddRestrictedFunctionProperties ( <var>F</var>, <var>realm</var> )</h1>
|
||
<p>The abstract operation AddRestrictedFunctionProperties is called with a <emu-xref href="#function-object" id="_ref_2520"><a href="#function-object">function object</a></emu-xref> <var>F</var> and <emu-xref href="#realm-record" id="_ref_2521"><a href="#realm-record">Realm Record</a></emu-xref> <var>realm</var> as its argument. It performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2522"><a href="#assert">Assert</a></emu-xref>: <var>realm</var>.[[Intrinsics]].[[<emu-xref href="#sec-%throwtypeerror%" id="_ref_2523"><a href="#sec-%throwtypeerror%">%ThrowTypeError%</a></emu-xref>]] exists and has been initialized.</li><li>Let <var>thrower</var> be <var>realm</var>.[[Intrinsics]].[[<emu-xref href="#sec-%throwtypeerror%" id="_ref_2524"><a href="#sec-%throwtypeerror%">%ThrowTypeError%</a></emu-xref>]].</li><li>Perform ! <emu-xref aoid="DefinePropertyOrThrow" id="_ref_2525"><a href="#sec-definepropertyorthrow">DefinePropertyOrThrow</a></emu-xref>(<var>F</var>, <code>"caller"</code>, PropertyDescriptor { [[Get]]: <var>thrower</var>, [[Set]]: <var>thrower</var>, [[Enumerable]]: <emu-val>false</emu-val>, [[Configurable]]: <emu-val>true</emu-val> }).</li><li>Return ! <emu-xref aoid="DefinePropertyOrThrow" id="_ref_2526"><a href="#sec-definepropertyorthrow">DefinePropertyOrThrow</a></emu-xref>(<var>F</var>, <code>"arguments"</code>, PropertyDescriptor { [[Get]]: <var>thrower</var>, [[Set]]: <var>thrower</var>, [[Enumerable]]: <emu-val>false</emu-val>, [[Configurable]]: <emu-val>true</emu-val> }).
|
||
</li></ol></emu-alg>
|
||
|
||
<emu-clause id="sec-%throwtypeerror%">
|
||
<h1><span class="secnum">9.2.9.1</span>%ThrowTypeError% ( )</h1>
|
||
<p>The <dfn>%ThrowTypeError%</dfn> intrinsic is an anonymous built-in <emu-xref href="#function-object" id="_ref_2527"><a href="#function-object">function object</a></emu-xref> that is defined once for each <emu-xref href="#realm" id="_ref_2528"><a href="#realm">realm</a></emu-xref>. When %ThrowTypeError% is called it performs the following steps:</p>
|
||
<emu-alg><ol><li>Throw a <emu-val>TypeError</emu-val> exception.
|
||
</li></ol></emu-alg>
|
||
<p>The value of the [[Extensible]] internal slot of a %ThrowTypeError% function is <emu-val>false</emu-val>.</p>
|
||
<p>The <code>"length"</code> property of a %ThrowTypeError% function has the attributes { [[Writable]]: <emu-val>false</emu-val>, [[Enumerable]]: <emu-val>false</emu-val>, [[Configurable]]: <emu-val>false</emu-val> }.</p>
|
||
</emu-clause>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-makeconstructor" aoid="MakeConstructor">
|
||
<h1><span class="secnum">9.2.10</span>MakeConstructor ( <var>F</var> [ , <var>writablePrototype</var> [ , <var>prototype</var> ] ] )</h1>
|
||
<p>The abstract operation MakeConstructor requires a Function argument <var>F</var> and optionally, a Boolean <var>writablePrototype</var> and an object <var>prototype</var>. If <var>prototype</var> is provided it is assumed to already contain, if needed, a <code>"constructor"</code> property whose value is <var>F</var>. This operation converts <var>F</var> into a <emu-xref href="#constructor" id="_ref_2529"><a href="#constructor">constructor</a></emu-xref> by performing the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2530"><a href="#assert">Assert</a></emu-xref>: <var>F</var> is an ECMAScript <emu-xref href="#function-object" id="_ref_2531"><a href="#function-object">function object</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_2532"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="IsConstructor" id="_ref_2533"><a href="#sec-isconstructor">IsConstructor</a></emu-xref>(<var>F</var>) is <emu-val>true</emu-val>.</li><li><emu-xref href="#assert" id="_ref_2534"><a href="#assert">Assert</a></emu-xref>: <var>F</var> is an extensible object that does not have a <code>prototype</code> own property.</li><li>If <var>writablePrototype</var> is not present, set <var>writablePrototype</var> to <emu-val>true</emu-val>.</li><li>If <var>prototype</var> is not present, then<ol><li>Set <var>prototype</var> to <emu-xref aoid="ObjectCreate" id="_ref_2535"><a href="#sec-objectcreate">ObjectCreate</a></emu-xref>(<emu-xref href="#sec-properties-of-the-object-prototype-object" id="_ref_2536"><a href="#sec-properties-of-the-object-prototype-object">%ObjectPrototype%</a></emu-xref>).</li><li>Perform ! <emu-xref aoid="DefinePropertyOrThrow" id="_ref_2537"><a href="#sec-definepropertyorthrow">DefinePropertyOrThrow</a></emu-xref>(<var>prototype</var>, <code>"constructor"</code>, PropertyDescriptor { [[Value]]: <var>F</var>, [[Writable]]: <var>writablePrototype</var>, [[Enumerable]]: <emu-val>false</emu-val>, [[Configurable]]: <emu-val>true</emu-val> }).</li></ol></li><li>Perform ! <emu-xref aoid="DefinePropertyOrThrow" id="_ref_2538"><a href="#sec-definepropertyorthrow">DefinePropertyOrThrow</a></emu-xref>(<var>F</var>, <code>"prototype"</code>, PropertyDescriptor { [[Value]]: <var>prototype</var>, [[Writable]]: <var>writablePrototype</var>, [[Enumerable]]: <emu-val>false</emu-val>, [[Configurable]]: <emu-val>false</emu-val> }).</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_2539"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-val>undefined</emu-val>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-makeclassconstructor" aoid="MakeClassConstructor">
|
||
<h1><span class="secnum">9.2.11</span>MakeClassConstructor ( <var>F</var> )</h1>
|
||
<p>The abstract operation MakeClassConstructor with argument <var>F</var> performs the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2540"><a href="#assert">Assert</a></emu-xref>: <var>F</var> is an ECMAScript <emu-xref href="#function-object" id="_ref_2541"><a href="#function-object">function object</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_2542"><a href="#assert">Assert</a></emu-xref>: <var>F</var>.[[FunctionKind]] is <code>"normal"</code>.</li><li>Set <var>F</var>.[[FunctionKind]] to <code>"classConstructor"</code>.</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_2543"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-val>undefined</emu-val>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-makemethod" aoid="MakeMethod">
|
||
<h1><span class="secnum">9.2.12</span>MakeMethod ( <var>F</var>, <var>homeObject</var> )</h1>
|
||
<p>The abstract operation MakeMethod with arguments <var>F</var> and <var>homeObject</var> configures <var>F</var> as a method by performing the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2544"><a href="#assert">Assert</a></emu-xref>: <var>F</var> is an ECMAScript <emu-xref href="#function-object" id="_ref_2545"><a href="#function-object">function object</a></emu-xref>.</li><li><emu-xref href="#assert" id="_ref_2546"><a href="#assert">Assert</a></emu-xref>: <emu-xref aoid="Type" id="_ref_2547"><a href="#sec-ecmascript-data-types-and-values">Type</a></emu-xref>(<var>homeObject</var>) is Object.</li><li>Set <var>F</var>.[[HomeObject]] to <var>homeObject</var>.</li><li>Return <emu-xref aoid="NormalCompletion" id="_ref_2548"><a href="#sec-normalcompletion">NormalCompletion</a></emu-xref>(<emu-val>undefined</emu-val>).
|
||
</li></ol></emu-alg>
|
||
</emu-clause>
|
||
|
||
<emu-clause id="sec-setfunctionname" aoid="SetFunctionName">
|
||
<h1><span class="secnum">9.2.13</span>SetFunctionName ( <var>F</var>, <var>name</var> [ , <var>prefix</var> ] )</h1>
|
||
<p>The abstract operation SetFunctionName requires a Function argument <var>F</var>, a String or Symbol argument <var>name</var> and optionally a String argument <var>prefix</var>. This operation adds a <code>name</code> property to <var>F</var> by performing the following steps:</p>
|
||
<emu-alg><ol><li><emu-xref href="#assert" id="_ref_2549"><a href="#assert">Assert</a></emu-xref>: <var>F</var> is an extensible object that does not have a <code>name</code> |