@@ -26389,7 +26395,7 @@ Link ( ): either a normal completion containing ~unused~ or a throw completi
- 1. Assert: _module_.[[Status]] is not ~linking~ or ~evaluating~.
+ 1. Assert: _module_.[[Status]] is neither ~linking~ nor ~evaluating~.
1. Let _stack_ be a new empty List.
1. Let _result_ be Completion(InnerModuleLinking(_module_, _stack_, 0)).
1. If _result_ is an abrupt completion, then
@@ -26398,7 +26404,7 @@ Link ( ): either a normal completion containing ~unused~ or a throw completi
1. Set _m_.[[Status]] to ~unlinked~.
1. Assert: _module_.[[Status]] is ~unlinked~.
1. Return ? _result_.
- 1. Assert: _module_.[[Status]] is ~linked~, ~evaluating-async~, or ~evaluated~.
+ 1. Assert: _module_.[[Status]] is one of ~linked~, ~evaluating-async~, or ~evaluated~.
1. Assert: _stack_ is empty.
1. Return ~unused~.
@@ -26420,7 +26426,7 @@
1. If _module_ is not a Cyclic Module Record, then
1. Perform ? _module_.Link().
1. Return _index_.
- 1. If _module_.[[Status]] is ~linking~, ~linked~, ~evaluating-async~, or ~evaluated~, then
+ 1. If _module_.[[Status]] is any of ~linking~, ~linked~, ~evaluating-async~, or ~evaluated~, then
1. Return _index_.
1. Assert: _module_.[[Status]] is ~unlinked~.
1. Set _module_.[[Status]] to ~linking~.
@@ -26432,7 +26438,7 @@
1. Let _requiredModule_ be ? HostResolveImportedModule(_module_, _required_).
1. Set _index_ to ? InnerModuleLinking(_requiredModule_, _stack_, _index_).
1. If _requiredModule_ is a Cyclic Module Record, then
- 1. Assert: _requiredModule_.[[Status]] is either ~linking~, ~linked~, ~evaluating-async~, or ~evaluated~.
+ 1. Assert: _requiredModule_.[[Status]] is one of ~linking~, ~linked~, ~evaluating-async~, or ~evaluated~.
1. Assert: _requiredModule_.[[Status]] is ~linking~ if and only if _requiredModule_ is in _stack_.
1. If _requiredModule_.[[Status]] is ~linking~, then
1. Set _module_.[[DFSAncestorIndex]] to min(_module_.[[DFSAncestorIndex]], _requiredModule_.[[DFSAncestorIndex]]).
@@ -26464,8 +26470,8 @@ Evaluate ( ): a Promise
1. Assert: This call to Evaluate is not happening at the same time as another call to Evaluate within the surrounding agent.
- 1. Assert: _module_.[[Status]] is ~linked~, ~evaluating-async~, or ~evaluated~.
- 1. If _module_.[[Status]] is ~evaluating-async~ or ~evaluated~, set _module_ to _module_.[[CycleRoot]].
+ 1. Assert: _module_.[[Status]] is one of ~linked~, ~evaluating-async~, or ~evaluated~.
+ 1. If _module_.[[Status]] is either ~evaluating-async~ or ~evaluated~, set _module_ to _module_.[[CycleRoot]].
1. If _module_.[[TopLevelCapability]] is not ~empty~, then
1. Return _module_.[[TopLevelCapability]].[[Promise]].
1. Let _stack_ be a new empty List.
@@ -26481,7 +26487,7 @@ Evaluate ( ): a Promise
1. Assert: _module_.[[EvaluationError]] is _result_.
1. Perform ! Call(_capability_.[[Reject]], *undefined*, « _result_.[[Value]] »).
1. Else,
- 1. Assert: _module_.[[Status]] is ~evaluating-async~ or ~evaluated~.
+ 1. Assert: _module_.[[Status]] is either ~evaluating-async~ or ~evaluated~.
1. Assert: _module_.[[EvaluationError]] is ~empty~.
1. If _module_.[[AsyncEvaluation]] is *false*, then
1. Assert: _module_.[[Status]] is ~evaluated~.
@@ -26510,7 +26516,7 @@
1. If _promise_.[[PromiseState]] is ~rejected~, then
1. Return ThrowCompletion(_promise_.[[PromiseResult]]).
1. Return _index_.
- 1. If _module_.[[Status]] is ~evaluating-async~ or ~evaluated~, then
+ 1. If _module_.[[Status]] is either ~evaluating-async~ or ~evaluated~, then
1. If _module_.[[EvaluationError]] is ~empty~, return _index_.
1. Otherwise, return ? _module_.[[EvaluationError]].
1. If _module_.[[Status]] is ~evaluating~, return _index_.
@@ -26526,13 +26532,13 @@
1. NOTE: Link must be completed successfully prior to invoking this method, so every requested module is guaranteed to resolve successfully.
1. Set _index_ to ? InnerModuleEvaluation(_requiredModule_, _stack_, _index_).
1. If _requiredModule_ is a Cyclic Module Record, then
- 1. Assert: _requiredModule_.[[Status]] is either ~evaluating~, ~evaluating-async~, or ~evaluated~.
+ 1. Assert: _requiredModule_.[[Status]] is one of ~evaluating~, ~evaluating-async~, or ~evaluated~.
1. Assert: _requiredModule_.[[Status]] is ~evaluating~ if and only if _requiredModule_ is in _stack_.
1. If _requiredModule_.[[Status]] is ~evaluating~, then
1. Set _module_.[[DFSAncestorIndex]] to min(_module_.[[DFSAncestorIndex]], _requiredModule_.[[DFSAncestorIndex]]).
1. Else,
1. Set _requiredModule_ to _requiredModule_.[[CycleRoot]].
- 1. Assert: _requiredModule_.[[Status]] is ~evaluating-async~ or ~evaluated~.
+ 1. Assert: _requiredModule_.[[Status]] is either ~evaluating-async~ or ~evaluated~.
1. If _requiredModule_.[[EvaluationError]] is not ~empty~, return ? _requiredModule_.[[EvaluationError]].
1. If _requiredModule_.[[AsyncEvaluation]] is *true*, then
1. Set _module_.[[PendingAsyncDependencies]] to _module_.[[PendingAsyncDependencies]] + 1.
@@ -26541,7 +26547,7 @@
1. Assert: _module_.[[AsyncEvaluation]] is *false* and was never previously set to *true*.
1. Set _module_.[[AsyncEvaluation]] to *true*.
1. NOTE: The order in which module records have their [[AsyncEvaluation]] fields transition to *true* is significant. (See .)
- 1. If _module_.[[PendingAsyncDependencies]] is 0, perform ExecuteAsyncModule(_module_).
+ 1. If _module_.[[PendingAsyncDependencies]] = 0, perform ExecuteAsyncModule(_module_).
1. Otherwise, perform ? _module_.ExecuteModule().
1. Assert: _module_ occurs exactly once in _stack_.
1. Assert: _module_.[[DFSAncestorIndex]] ≤ _module_.[[DFSIndex]].
@@ -26575,7 +26581,7 @@
- 1. Assert: _module_.[[Status]] is ~evaluating~ or ~evaluating-async~.
+ 1. Assert: _module_.[[Status]] is either ~evaluating~ or ~evaluating-async~.
1. Assert: _module_.[[HasTLA]] is *true*.
1. Let _capability_ be ! NewPromiseCapability(%Promise%).
1. Let _fulfilledClosure_ be a new Abstract Closure with no parameters that captures _module_ and performs the following steps when called:
@@ -27601,10 +27607,10 @@
1. Let _exportEntries_ be ExportEntries of _body_.
1. For each ExportEntry Record _ee_ of _exportEntries_, do
1. If _ee_.[[ModuleRequest]] is *null*, then
- 1. If _ee_.[[LocalName]] is not an element of _importedBoundNames_, then
+ 1. If _importedBoundNames_ does not contain _ee_.[[LocalName]], then
1. Append _ee_ to _localExportEntries_.
1. Else,
- 1. Let _ie_ be the element of _importEntries_ whose [[LocalName]] is the same as _ee_.[[LocalName]].
+ 1. Let _ie_ be the element of _importEntries_ whose [[LocalName]] is _ee_.[[LocalName]].
1. If _ie_.[[ImportName]] is ~namespace-object~, then
1. NOTE: This is a re-export of an imported module namespace object.
1. Append _ee_ to _localExportEntries_.
@@ -27652,7 +27658,7 @@
1. Let _starNames_ be ? _requestedModule_.GetExportedNames(_exportStarSet_).
1. For each element _n_ of _starNames_, do
1. If SameValue(_n_, *"default"*) is *false*, then
- 1. If _n_ is not an element of _exportedNames_, then
+ 1. If _exportedNames_ does not contain _n_, then
1. Append _n_ to _exportedNames_.
1. Return _exportedNames_.
@@ -27714,7 +27720,7 @@
1. Else,
1. Assert: There is more than one `*` import that includes the requested name.
1. If _resolution_.[[Module]] and _starResolution_.[[Module]] are not the same Module Record, return ~ambiguous~.
- 1. If _resolution_.[[BindingName]] is ~namespace~ and _starResolution_.[[BindingName]] is not ~namespace~, or if _resolution_.[[BindingName]] is not ~namespace~ and _starResolution_.[[BindingName]] is ~namespace~, return ~ambiguous~.
+ 1. If _resolution_.[[BindingName]] is ~namespace~ and _starResolution_.[[BindingName]] is not ~namespace~, or _resolution_.[[BindingName]] is not ~namespace~ and _starResolution_.[[BindingName]] is ~namespace~, return ~ambiguous~.
1. If _resolution_.[[BindingName]] is a String, _starResolution_.[[BindingName]] is a String, and SameValue(_resolution_.[[BindingName]], _starResolution_.[[BindingName]]) is *false*, return ~ambiguous~.
1. Return _starResolution_.
@@ -27730,7 +27736,7 @@ InitializeEnvironment ( ): either a normal completion containing ~unused~ or
1. For each ExportEntry Record _e_ of _module_.[[IndirectExportEntries]], do
1. Let _resolution_ be ? _module_.ResolveExport(_e_.[[ExportName]]).
- 1. If _resolution_ is *null* or ~ambiguous~, throw a *SyntaxError* exception.
+ 1. If _resolution_ is either *null* or ~ambiguous~, throw a *SyntaxError* exception.
1. Assert: _resolution_ is a ResolvedBinding Record.
1. Assert: All named exports from _module_ are resolvable.
1. Let _realm_ be _module_.[[Realm]].
@@ -27746,7 +27752,7 @@ InitializeEnvironment ( ): either a normal completion containing ~unused~ or
1. Perform ! _env_.InitializeBinding(_in_.[[LocalName]], _namespace_).
1. Else,
1. Let _resolution_ be ? _importedModule_.ResolveExport(_in_.[[ImportName]]).
- 1. If _resolution_ is *null* or ~ambiguous~, throw a *SyntaxError* exception.
+ 1. If _resolution_ is either *null* or ~ambiguous~, throw a *SyntaxError* exception.
1. If _resolution_.[[BindingName]] is ~namespace~, then
1. Let _namespace_ be ? GetModuleNamespace(_resolution_.[[Module]]).
1. Perform ! _env_.CreateImmutableBinding(_in_.[[LocalName]], *true*).
@@ -27768,7 +27774,7 @@ InitializeEnvironment ( ): either a normal completion containing ~unused~ or
1. Let _declaredVarNames_ be a new empty List.
1. For each element _d_ of _varDeclarations_, do
1. For each element _dn_ of the BoundNames of _d_, do
- 1. If _dn_ is not an element of _declaredVarNames_, then
+ 1. If _declaredVarNames_ does not contain _dn_, then
1. Perform ! _env_.CreateMutableBinding(_dn_, *false*).
1. Perform ! _env_.InitializeBinding(_dn_, *undefined*).
1. Append _dn_ to _declaredVarNames_.
@@ -27780,7 +27786,7 @@ InitializeEnvironment ( ): either a normal completion containing ~unused~ or
1. Perform ! _env_.CreateImmutableBinding(_dn_, *true*).
1. Else,
1. Perform ! _env_.CreateMutableBinding(_dn_, *false*).
- 1. If _d_ is a |FunctionDeclaration|, a |GeneratorDeclaration|, an |AsyncFunctionDeclaration|, or an |AsyncGeneratorDeclaration|, then
+ 1. If _d_ is any of a |FunctionDeclaration|, a |GeneratorDeclaration|, an |AsyncFunctionDeclaration|, or an |AsyncGeneratorDeclaration|, then
1. Let _fo_ be InstantiateFunctionObject of _d_ with arguments _env_ and _privateEnv_.
1. Perform ! _env_.InitializeBinding(_dn_, _fo_).
1. Remove _moduleContext_ from the execution context stack.
@@ -28186,7 +28192,7 @@ Static Semantics: Early Errors
It is a Syntax Error if ReferencedBindings of |NamedExports| contains any |StringLiteral|s.
- For each |IdentifierName| _n_ in ReferencedBindings of |NamedExports|: It is a Syntax Error if StringValue of _n_ is a |ReservedWord| or if the StringValue of _n_ is one of: *"implements"*, *"interface"*, *"let"*, *"package"*, *"private"*, *"protected"*, *"public"*, or *"static"*.
+ For each |IdentifierName| _n_ in ReferencedBindings of |NamedExports|: It is a Syntax Error if StringValue of _n_ is a |ReservedWord| or if the StringValue of _n_ is any of *"implements"*, *"interface"*, *"let"*, *"package"*, *"private"*, *"protected"*, *"public"*, or *"static"*.
@@ -28392,13 +28398,13 @@ Static Semantics: ExportEntries ( ): a List of ExportEntry Records
1. Let _names_ be BoundNames of |HoistableDeclaration|.
1. Let _localName_ be the sole element of _names_.
- 1. Return a List whose sole element is the ExportEntry Record { [[ModuleRequest]]: *null*, [[ImportName]]: *null*, [[LocalName]]: _localName_, [[ExportName]]: *"default"* }.
+ 1. Return a List whose sole element is an ExportEntry Record { [[ModuleRequest]]: *null*, [[ImportName]]: *null*, [[LocalName]]: _localName_, [[ExportName]]: *"default"* }.
ExportDeclaration : `export` `default` ClassDeclaration
1. Let _names_ be BoundNames of |ClassDeclaration|.
1. Let _localName_ be the sole element of _names_.
- 1. Return a List whose sole element is the ExportEntry Record { [[ModuleRequest]]: *null*, [[ImportName]]: *null*, [[LocalName]]: _localName_, [[ExportName]]: *"default"* }.
+ 1. Return a List whose sole element is an ExportEntry Record { [[ModuleRequest]]: *null*, [[ImportName]]: *null*, [[LocalName]]: _localName_, [[ExportName]]: *"default"* }.
ExportDeclaration : `export` `default` AssignmentExpression `;`
@@ -28448,7 +28454,7 @@
1. Else,
1. Let _localName_ be *null*.
1. Let _importName_ be _sourceName_.
- 1. Return a List whose sole element is the ExportEntry Record { [[ModuleRequest]]: _module_, [[ImportName]]: _importName_, [[LocalName]]: _localName_, [[ExportName]]: _sourceName_ }.
+ 1. Return a List whose sole element is an ExportEntry Record { [[ModuleRequest]]: _module_, [[ImportName]]: _importName_, [[LocalName]]: _localName_, [[ExportName]]: _sourceName_ }.
ExportSpecifier : ModuleExportName `as` ModuleExportName
@@ -28460,7 +28466,7 @@
1. Else,
1. Let _localName_ be *null*.
1. Let _importName_ be _sourceName_.
- 1. Return a List whose sole element is the ExportEntry Record { [[ModuleRequest]]: _module_, [[ImportName]]: _importName_, [[LocalName]]: _localName_, [[ExportName]]: _exportName_ }.
+ 1. Return a List whose sole element is an ExportEntry Record { [[ModuleRequest]]: _module_, [[ImportName]]: _importName_, [[LocalName]]: _localName_, [[ExportName]]: _exportName_ }.
@@ -28610,7 +28616,7 @@ ECMAScript Standard Built-in Objects
Unless otherwise specified every built-in prototype object has the Object prototype object, which is the initial value of the expression `Object.prototype` (), as the value of its [[Prototype]] internal slot, except the Object prototype object itself.
Built-in function objects that are not identified as constructors do not implement the [[Construct]] internal method unless otherwise specified in the description of a particular function.
Each built-in function defined in this specification is created by calling the CreateBuiltinFunction abstract operation (). The values of the _length_ and _name_ parameters are the initial values of the *"length"* and *"name"* properties as discussed below. The values of the _prefix_ parameter are similarly discussed below.
- Every built-in function object, including constructors, has a *"length"* property whose value is a non-negative integral Number. Unless otherwise specified, this value is equal to the number of required parameters shown in the subclause heading for the function description. Optional parameters and rest parameters are not included in the parameter count.
+ Every built-in function object, including constructors, has a *"length"* property whose value is a non-negative integral Number. Unless otherwise specified, this value is the number of required parameters shown in the subclause heading for the function description. Optional parameters and rest parameters are not included in the parameter count.
For example, the function object that is the initial value of the *"map"* property of the Array prototype object is described under the subclause heading «Array.prototype.map (callbackFn [ , thisArg])» which shows the two named arguments callbackFn and thisArg, the latter being optional; therefore the value of the *"length"* property of that function object is *1*𝔽.
@@ -28706,7 +28712,7 @@
1. If _inFunction_ is *false*, and _body_ Contains |NewTarget|, throw a *SyntaxError* exception.
1. If _inMethod_ is *false*, and _body_ Contains |SuperProperty|, throw a *SyntaxError* exception.
1. If _inDerivedConstructor_ is *false*, and _body_ Contains |SuperCall|, throw a *SyntaxError* exception.
- 1. If _inClassFieldInitializer_ is *true*, and ContainsArguments of _body_ is *true*, throw a *SyntaxError* exception.
+ 1. If _inClassFieldInitializer_ is *true* and ContainsArguments of _body_ is *true*, throw a *SyntaxError* exception.
1. If _strictCaller_ is *true*, let _strictEval_ be *true*.
1. Else, let _strictEval_ be IsStrict of _script_.
1. Let _runningContext_ be the running execution context.
@@ -28788,7 +28794,7 @@
1. NOTE: `eval` will not create a global var declaration that would be shadowed by a global lexical declaration.
1. Let _thisEnv_ be _lexEnv_.
1. Assert: The following loop will terminate.
- 1. Repeat, while _thisEnv_ is not the same as _varEnv_,
+ 1. Repeat, while _thisEnv_ is not _varEnv_,
1. If _thisEnv_ is not an Object Environment Record, then
1. NOTE: The environment of with statements cannot contain any lexical declaration so it doesn't need to be checked for var/let hoisting conflicts.
1. For each element _name_ of _varNames_, do
@@ -28807,11 +28813,11 @@
1. Let _functionsToInitialize_ be a new empty List.
1. Let _declaredFunctionNames_ be a new empty List.
1. For each element _d_ of _varDeclarations_, in reverse List order, do
- 1. If _d_ is neither a |VariableDeclaration| nor a |ForBinding| nor a |BindingIdentifier|, then
- 1. Assert: _d_ is either a |FunctionDeclaration|, a |GeneratorDeclaration|, an |AsyncFunctionDeclaration|, or an |AsyncGeneratorDeclaration|.
+ 1. If _d_ is not a |VariableDeclaration|, a |ForBinding|, or a |BindingIdentifier|, then
+ 1. Assert: _d_ is a |FunctionDeclaration|, a |GeneratorDeclaration|, an |AsyncFunctionDeclaration|, or an |AsyncGeneratorDeclaration|.
1. NOTE: If there are multiple function declarations for the same name, the last declaration is used.
1. Let _fn_ be the sole element of the BoundNames of _d_.
- 1. If _fn_ is not an element of _declaredFunctionNames_, then
+ 1. If _declaredFunctionNames_ does not contain _fn_, then
1. If _varEnv_ is a Global Environment Record, then
1. Let _fnDefinable_ be ? _varEnv_.CanDeclareGlobalFunction(_fn_).
1. If _fnDefinable_ is *false*, throw a *TypeError* exception.
@@ -28820,13 +28826,13 @@
1. [id="step-evaldeclarationinstantiation-web-compat-insertion-point"] NOTE: Annex adds additional steps at this point.
1. Let _declaredVarNames_ be a new empty List.
1. For each element _d_ of _varDeclarations_, do
- 1. If _d_ is a |VariableDeclaration|, a |ForBinding|, or a |BindingIdentifier|, then
+ 1. If _d_ is any of a |VariableDeclaration|, a |ForBinding|, or a |BindingIdentifier|, then
1. For each String _vn_ of the BoundNames of _d_, do
- 1. If _vn_ is not an element of _declaredFunctionNames_, then
+ 1. If _declaredFunctionNames_ does not contain _vn_, then
1. If _varEnv_ is a Global Environment Record, then
1. Let _vnDefinable_ be ? _varEnv_.CanDeclareGlobalVar(_vn_).
1. If _vnDefinable_ is *false*, throw a *TypeError* exception.
- 1. If _vn_ is not an element of _declaredVarNames_, then
+ 1. If _declaredVarNames_ does not contain _vn_, then
1. Append _vn_ to _declaredVarNames_.
1. [id="step-evaldeclarationinstantiation-post-validation"] NOTE: No abnormal terminations occur after this algorithm step unless _varEnv_ is a Global Environment Record and the global object is a Proxy exotic object.
1. Let _lexDeclarations_ be the LexicallyScopedDeclarations of _body_.
@@ -28873,7 +28879,7 @@ isFinite ( _number_ )
It performs the following steps when called:
1. Let _num_ be ? ToNumber(_number_).
- 1. If _num_ is *NaN*, *+∞*𝔽, or *-∞*𝔽, return *false*.
+ 1. If _num_ is any of *NaN*, *+∞*𝔽, or *-∞*𝔽, return *false*.
1. Otherwise, return *true*.
@@ -28888,7 +28894,7 @@ isNaN ( _number_ )
1. Otherwise, return *false*.
- A reliable way for ECMAScript code to test if a value `X` is a *NaN* is an expression of the form `X !== X`. The result will be *true* if and only if `X` is a *NaN*.
+ A reliable way for ECMAScript code to test if a value `X` is *NaN* is an expression of the form `X !== X`. The result will be *true* if and only if `X` is *NaN*.
@@ -28913,7 +28919,7 @@ parseFloat ( _string_ )
parseInt ( _string_, _radix_ )
- This function produces an integral Number dictated by interpretation of the contents of the _string_ argument according to the specified _radix_. Leading white space in _string_ is ignored. If _radix_ is *undefined* or 0, it is assumed to be 10 except when the number begins with the code unit pairs `0x` or `0X`, in which case a radix of 16 is assumed. If _radix_ is 16, the number may also optionally begin with the code unit pairs `0x` or `0X`.
+ This function produces an integral Number dictated by interpretation of the contents of _string_ according to the specified _radix_. Leading white space in _string_ is ignored. If _radix_ coerces to 0 (such as when it is *undefined*), it is assumed to be 10 except when the number representation begins with *"0x"* or *"0X"*, in which case it is assumed to be 16. If _radix_ is 16, the number representation may optionally begin with *"0x"* or *"0X"*.
It is the %parseInt% intrinsic object.
It performs the following steps when called:
@@ -28921,7 +28927,7 @@ parseInt ( _string_, _radix_ )
1. Let _S_ be ! TrimString(_inputString_, ~start~).
1. Let _sign_ be 1.
1. If _S_ is not empty and the first code unit of _S_ is the code unit 0x002D (HYPHEN-MINUS), set _sign_ to -1.
- 1. If _S_ is not empty and the first code unit of _S_ is the code unit 0x002B (PLUS SIGN) or the code unit 0x002D (HYPHEN-MINUS), remove the first code unit from _S_.
+ 1. If _S_ is not empty and the first code unit of _S_ is either the code unit 0x002B (PLUS SIGN) or the code unit 0x002D (HYPHEN-MINUS), remove the first code unit from _S_.
1. Let _R_ be ℝ(? ToInt32(_radix_)).
1. Let _stripPrefix_ be *true*.
1. If _R_ ≠ 0, then
@@ -28936,7 +28942,7 @@ parseInt ( _string_, _radix_ )
1. If _S_ contains a code unit that is not a radix-_R_ digit, let _end_ be the index within _S_ of the first such code unit; otherwise, let _end_ be the length of _S_.
1. Let _Z_ be the substring of _S_ from 0 to _end_.
1. If _Z_ is empty, return *NaN*.
- 1. Let _mathInt_ be the integer value that is represented by _Z_ in radix-_R_ notation, using the letters A-Z and a-z for digits with values 10 through 35. (However, if _R_ is 10 and _Z_ contains more than 20 significant digits, every significant digit after the 20th may be replaced by a 0 digit, at the option of the implementation; and if _R_ is not 2, 4, 8, 10, 16, or 32, then _mathInt_ may be an implementation-approximated integer representing the integer value denoted by _Z_ in radix-_R_ notation.)
+ 1. Let _mathInt_ be the integer value that is represented by _Z_ in radix-_R_ notation, using the letters A-Z and a-z for digits with values 10 through 35. (However, if _R_ = 10 and _Z_ contains more than 20 significant digits, every significant digit after the 20th may be replaced by a 0 digit, at the option of the implementation; and if _R_ is not 2, 4, 8, 10, 16, or 32, then _mathInt_ may be an implementation-approximated integer representing the integer value denoted by _Z_ in radix-_R_ notation.)
1. If _mathInt_ = 0, then
1. If _sign_ = -1, return *-0*𝔽.
1. Return *+0*𝔽.
@@ -29019,7 +29025,7 @@
1. Repeat,
1. If _k_ = _strLen_, return _R_.
1. Let _C_ be the code unit at index _k_ within _string_.
- 1. If _C_ is in _unescapedSet_, then
+ 1. If _unescapedSet_ contains _C_, then
1. Set _k_ to _k_ + 1.
1. Set _R_ to the string-concatenation of _R_ and _C_.
1. Else,
@@ -29064,7 +29070,7 @@
1. Let _n_ be the number of leading 1 bits in _B_.
1. If _n_ = 0, then
1. Let _C_ be the code unit whose value is _B_.
- 1. If _C_ is not in _reservedSet_, then
+ 1. If _reservedSet_ does not contain _C_, then
1. Let _S_ be the String value containing only the code unit _C_.
1. Else,
1. Let _S_ be the substring of _string_ from _start_ to _k_ + 1.
@@ -29403,7 +29409,7 @@ Object ( [ _value_ ] )
1. If NewTarget is neither *undefined* nor the active function object, then
1. Return ? OrdinaryCreateFromConstructor(NewTarget, *"%Object.prototype%"*).
- 1. If _value_ is *undefined* or *null*, return OrdinaryObjectCreate(%Object.prototype%).
+ 1. If _value_ is either *undefined* or *null*, return OrdinaryObjectCreate(%Object.prototype%).
1. Return ! ToObject(_value_).
The *"length"* property of this function is *1*𝔽.
@@ -30096,7 +30102,7 @@ Function.prototype.apply ( _thisArg_, _argArray_ )
1. Let _func_ be the *this* value.
1. If IsCallable(_func_) is *false*, throw a *TypeError* exception.
- 1. If _argArray_ is *undefined* or *null*, then
+ 1. If _argArray_ is either *undefined* or *null*, then
1. Perform PrepareForTailCall().
1. Return ? Call(_func_, _thisArg_).
1. Let _argList_ be ? CreateListFromArrayLike(_argArray_).
@@ -30107,7 +30113,7 @@ Function.prototype.apply ( _thisArg_, _argArray_ )
The _thisArg_ value is passed without modification as the *this* value. This is a change from Edition 3, where an *undefined* or *null* _thisArg_ is replaced with the global object and ToObject is applied to all other values and that result is passed as the *this* value. Even though the _thisArg_ is passed without modification, non-strict functions still perform these transformations upon entry to the function.
- If _func_ is an arrow function or a bound function exotic object then the _thisArg_ will be ignored by the function [[Call]] in step .
+ If _func_ is either an arrow function or a bound function exotic object, then the _thisArg_ will be ignored by the function [[Call]] in step .
@@ -30140,7 +30146,7 @@ Function.prototype.bind ( _thisArg_, ..._args_ )
Function objects created using `Function.prototype.bind` are exotic objects. They also do not have a *"prototype"* property.
- If _Target_ is an arrow function or a bound function exotic object then the _thisArg_ passed to this method will not be used by subsequent calls to _F_.
+ If _Target_ is either an arrow function or a bound function exotic object, then the _thisArg_ passed to this method will not be used by subsequent calls to _F_.
@@ -30157,7 +30163,7 @@ Function.prototype.call ( _thisArg_, ..._args_ )
The _thisArg_ value is passed without modification as the *this* value. This is a change from Edition 3, where an *undefined* or *null* _thisArg_ is replaced with the global object and ToObject is applied to all other values and that result is passed as the *this* value. Even though the _thisArg_ is passed without modification, non-strict functions still perform these transformations upon entry to the function.
- If _func_ is an arrow function or a bound function exotic object then the _thisArg_ will be ignored by the function [[Call]] in step .
+ If _func_ is either an arrow function or a bound function exotic object, then the _thisArg_ will be ignored by the function [[Call]] in step .
@@ -30171,7 +30177,7 @@ Function.prototype.toString ( )
This method performs the following steps when called:
1. Let _func_ be the *this* value.
- 1. If Type(_func_) is Object and _func_ has a [[SourceText]] internal slot and _func_.[[SourceText]] is a sequence of Unicode code points and HostHasSourceTextAvailable(_func_) is *true*, then
+ 1. If Type(_func_) is Object, _func_ has a [[SourceText]] internal slot, _func_.[[SourceText]] is a sequence of Unicode code points, and HostHasSourceTextAvailable(_func_) is *true*, then
1. Return CodePointsToString(_func_.[[SourceText]]).
1. If _func_ is a built-in function object, return an implementation-defined String source code representation of _func_. The representation must have the syntax of a |NativeFunction|. Additionally, if _func_ has an [[InitialName]] internal slot and _func_.[[InitialName]] is a String, the portion of the returned String that would be matched by |NativeFunctionAccessor?| |PropertyName| must be the value of _func_.[[InitialName]].
1. If Type(_func_) is Object and IsCallable(_func_) is *true*, return an implementation-defined String source code representation of _func_. The representation must have the syntax of a |NativeFunction|.
@@ -30368,7 +30374,7 @@ Symbol ( [ _description_ ] )
1. If NewTarget is not *undefined*, throw a *TypeError* exception.
1. If _description_ is *undefined*, let _descString_ be *undefined*.
1. Else, let _descString_ be ? ToString(_description_).
- 1. Return a new unique Symbol value whose [[Description]] value is _descString_.
+ 1. Return a new Symbol whose [[Description]] is _descString_.
@@ -30613,7 +30619,7 @@ Symbol.prototype [ @@toPrimitive ] ( _hint_ )
Symbol.prototype [ @@toStringTag ]
- The initial value of the @@toStringTag property is the String value *"Symbol"*.
+ The initial value of the @@toStringTag property is *"Symbol"*.
This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.
@@ -30989,7 +30995,7 @@ Number.isFinite ( _number_ )
This function performs the following steps when called:
1. If Type(_number_) is not Number, return *false*.
- 1. If _number_ is *NaN*, *+∞*𝔽, or *-∞*𝔽, return *false*.
+ 1. If _number_ is any of *NaN*, *+∞*𝔽, or *-∞*𝔽, return *false*.
1. Otherwise, return *true*.
@@ -31551,7 +31557,7 @@ Math.acosh ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN* or _n_ is *+∞*𝔽, return _n_.
+ 1. If _n_ is either *NaN* or *+∞*𝔽, return _n_.
1. If _n_ is *1*𝔽, return *+0*𝔽.
1. If _n_ < *1*𝔽, return *NaN*.
1. Return an implementation-approximated Number value representing the result of the inverse hyperbolic cosine of ℝ(_n_).
@@ -31564,7 +31570,7 @@ Math.asin ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, or _n_ is *-0*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, or *-0*𝔽, return _n_.
1. If _n_ > *1*𝔽 or _n_ < *-1*𝔽, return *NaN*.
1. Return an implementation-approximated Number value representing the result of the inverse sine of ℝ(_n_).
@@ -31576,7 +31582,7 @@ Math.asinh ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, _n_ is *-0*𝔽, _n_ is *+∞*𝔽, or _n_ is *-∞*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, *-0*𝔽, *+∞*𝔽, or *-∞*𝔽, return _n_.
1. Return an implementation-approximated Number value representing the result of the inverse hyperbolic sine of ℝ(_n_).
@@ -31587,7 +31593,7 @@ Math.atan ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, or _n_ is *-0*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, or *-0*𝔽, return _n_.
1. If _n_ is *+∞*𝔽, return an implementation-approximated Number value representing π / 2.
1. If _n_ is *-∞*𝔽, return an implementation-approximated Number value representing -π / 2.
1. Return an implementation-approximated Number value representing the result of the inverse tangent of ℝ(_n_).
@@ -31600,7 +31606,7 @@ Math.atanh ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, or _n_ is *-0*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, or *-0*𝔽, return _n_.
1. If _n_ > *1*𝔽 or _n_ < *-1*𝔽, return *NaN*.
1. If _n_ is *1*𝔽, return *+∞*𝔽.
1. If _n_ is *-1*𝔽, return *-∞*𝔽.
@@ -31634,11 +31640,11 @@ Math.atan2 ( _y_, _x_ )
1. If _ny_ > *+0*𝔽, then
1. If _nx_ is *+∞*𝔽, return *+0*𝔽.
1. If _nx_ is *-∞*𝔽, return an implementation-approximated Number value representing π.
- 1. If _nx_ is *+0*𝔽 or _nx_ is *-0*𝔽, return an implementation-approximated Number value representing π / 2.
+ 1. If _nx_ is either *+0*𝔽 or *-0*𝔽, return an implementation-approximated Number value representing π / 2.
1. If _ny_ < *-0*𝔽, then
1. If _nx_ is *+∞*𝔽, return *-0*𝔽.
1. If _nx_ is *-∞*𝔽, return an implementation-approximated Number value representing -π.
- 1. If _nx_ is *+0*𝔽 or _nx_ is *-0*𝔽, return an implementation-approximated Number value representing -π / 2.
+ 1. If _nx_ is either *+0*𝔽 or *-0*𝔽, return an implementation-approximated Number value representing -π / 2.
1. Assert: _nx_ is finite and is neither *+0*𝔽 nor *-0*𝔽.
1. Return an implementation-approximated Number value representing the result of the inverse tangent of the quotient ℝ(_ny_) / ℝ(_nx_).
@@ -31650,7 +31656,7 @@ Math.cbrt ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, _n_ is *-0*𝔽, _n_ is *+∞*𝔽, or _n_ is *-∞*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, *-0*𝔽, *+∞*𝔽, or *-∞*𝔽, return _n_.
1. Return an implementation-approximated Number value representing the result of the cube root of ℝ(_n_).
@@ -31661,7 +31667,7 @@ Math.ceil ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, _n_ is *-0*𝔽, _n_ is *+∞*𝔽, or _n_ is *-∞*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, *-0*𝔽, *+∞*𝔽, or *-∞*𝔽, return _n_.
1. If _n_ < *-0*𝔽 and _n_ > *-1*𝔽, return *-0*𝔽.
1. If _n_ is an integral Number, return _n_.
1. Return the smallest (closest to -∞) integral Number value that is not less than _n_.
@@ -31680,7 +31686,7 @@ Math.clz32 ( _x_ )
1. Return 𝔽(_p_).
- If _n_ is *+0*𝔽 or _n_ is *-0*𝔽, this method returns *32*𝔽. If the most significant bit of the 32-bit binary encoding of _n_ is 1, this method returns *+0*𝔽.
+ If _n_ is either *+0*𝔽 or *-0*𝔽, this method returns *32*𝔽. If the most significant bit of the 32-bit binary encoding of _n_ is 1, this method returns *+0*𝔽.
@@ -31690,8 +31696,8 @@ Math.cos ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+∞*𝔽, or _n_ is *-∞*𝔽, return *NaN*.
- 1. If _n_ is *+0*𝔽 or _n_ is *-0*𝔽, return *1*𝔽.
+ 1. If _n_ is any of *NaN*, *+∞*𝔽, or *-∞*𝔽, return *NaN*.
+ 1. If _n_ is either *+0*𝔽 or *-0*𝔽, return *1*𝔽.
1. Return an implementation-approximated Number value representing the result of the cosine of ℝ(_n_).
@@ -31703,8 +31709,8 @@ Math.cosh ( _x_ )
1. Let _n_ be ? ToNumber(_x_).
1. If _n_ is *NaN*, return *NaN*.
- 1. If _n_ is *+∞*𝔽 or _n_ is *-∞*𝔽, return *+∞*𝔽.
- 1. If _n_ is *+0*𝔽 or _n_ is *-0*𝔽, return *1*𝔽.
+ 1. If _n_ is either *+∞*𝔽 or *-∞*𝔽, return *+∞*𝔽.
+ 1. If _n_ is either *+0*𝔽 or *-0*𝔽, return *1*𝔽.
1. Return an implementation-approximated Number value representing the result of the hyperbolic cosine of ℝ(_n_).
@@ -31718,8 +31724,8 @@ Math.exp ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN* or _n_ is *+∞*𝔽, return _n_.
- 1. If _n_ is *+0*𝔽 or _n_ is *-0*𝔽, return *1*𝔽.
+ 1. If _n_ is either *NaN* or *+∞*𝔽, return _n_.
+ 1. If _n_ is either *+0*𝔽 or *-0*𝔽, return *1*𝔽.
1. If _n_ is *-∞*𝔽, return *+0*𝔽.
1. Return an implementation-approximated Number value representing the result of the exponential function of ℝ(_n_).
@@ -31731,7 +31737,7 @@ Math.expm1 ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, _n_ is *-0*𝔽, or _n_ is *+∞*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, *-0*𝔽, or *+∞*𝔽, return _n_.
1. If _n_ is *-∞*𝔽, return *-1*𝔽.
1. Return an implementation-approximated Number value representing the result of subtracting 1 from the exponential function of ℝ(_n_).
@@ -31743,7 +31749,7 @@ Math.floor ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, _n_ is *-0*𝔽, _n_ is *+∞*𝔽, or _n_ is *-∞*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, *-0*𝔽, *+∞*𝔽, or *-∞*𝔽, return _n_.
1. If _n_ < *1*𝔽 and _n_ > *+0*𝔽, return *+0*𝔽.
1. If _n_ is an integral Number, return _n_.
1. Return the greatest (closest to +∞) integral Number value that is not greater than _n_.
@@ -31759,7 +31765,7 @@ Math.fround ( _x_ )
1. Let _n_ be ? ToNumber(_x_).
1. If _n_ is *NaN*, return *NaN*.
- 1. If _n_ is one of *+0*𝔽, *-0*𝔽, *+∞*𝔽, or *-∞*𝔽, return _n_.
+ 1. If _n_ is any of *+0*𝔽, *-0*𝔽, *+∞*𝔽, or *-∞*𝔽, return _n_.
1. Let _n32_ be the result of converting _n_ to a value in IEEE 754-2019 binary32 format using roundTiesToEven mode.
1. Let _n64_ be the result of converting _n32_ to a value in IEEE 754-2019 binary64 format.
1. Return the ECMAScript Number value corresponding to _n64_.
@@ -31776,7 +31782,7 @@ Math.hypot ( ..._args_ )
1. Let _n_ be ? ToNumber(_arg_).
1. Append _n_ to _coerced_.
1. For each element _number_ of _coerced_, do
- 1. If _number_ is *+∞*𝔽 or _number_ is *-∞*𝔽, return *+∞*𝔽.
+ 1. If _number_ is either *+∞*𝔽 or *-∞*𝔽, return *+∞*𝔽.
1. Let _onlyZero_ be *true*.
1. For each element _number_ of _coerced_, do
1. If _number_ is *NaN*, return *NaN*.
@@ -31807,9 +31813,9 @@ Math.log ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN* or _n_ is *+∞*𝔽, return _n_.
+ 1. If _n_ is either *NaN* or *+∞*𝔽, return _n_.
1. If _n_ is *1*𝔽, return *+0*𝔽.
- 1. If _n_ is *+0*𝔽 or _n_ is *-0*𝔽, return *-∞*𝔽.
+ 1. If _n_ is either *+0*𝔽 or *-0*𝔽, return *-∞*𝔽.
1. If _n_ < *-0*𝔽, return *NaN*.
1. Return an implementation-approximated Number value representing the result of the natural logarithm of ℝ(_n_).
@@ -31821,7 +31827,7 @@ Math.log1p ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, _n_ is *-0*𝔽, or _n_ is *+∞*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, *-0*𝔽, or *+∞*𝔽, return _n_.
1. If _n_ is *-1*𝔽, return *-∞*𝔽.
1. If _n_ < *-1*𝔽, return *NaN*.
1. Return an implementation-approximated Number value representing the result of the natural logarithm of 1 + ℝ(_n_).
@@ -31834,9 +31840,9 @@ Math.log10 ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN* or _n_ is *+∞*𝔽, return _n_.
+ 1. If _n_ is either *NaN* or *+∞*𝔽, return _n_.
1. If _n_ is *1*𝔽, return *+0*𝔽.
- 1. If _n_ is *+0*𝔽 or _n_ is *-0*𝔽, return *-∞*𝔽.
+ 1. If _n_ is either *+0*𝔽 or *-0*𝔽, return *-∞*𝔽.
1. If _n_ < *-0*𝔽, return *NaN*.
1. Return an implementation-approximated Number value representing the result of the base 10 logarithm of ℝ(_n_).
@@ -31848,9 +31854,9 @@ Math.log2 ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN* or _n_ is *+∞*𝔽, return _n_.
+ 1. If _n_ is either *NaN* or *+∞*𝔽, return _n_.
1. If _n_ is *1*𝔽, return *+0*𝔽.
- 1. If _n_ is *+0*𝔽 or _n_ is *-0*𝔽, return *-∞*𝔽.
+ 1. If _n_ is either *+0*𝔽 or *-0*𝔽, return *-∞*𝔽.
1. If _n_ < *-0*𝔽, return *NaN*.
1. Return an implementation-approximated Number value representing the result of the base 2 logarithm of ℝ(_n_).
@@ -31922,7 +31928,7 @@ Math.round ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, *+∞*𝔽, *-∞*𝔽, or an integral Number, return _n_.
+ 1. If _n_ is any of *NaN*, *+∞*𝔽, or *-∞*𝔽, or _n_ is an integral Number, return _n_.
1. If _n_ < *0.5*𝔽 and _n_ > *+0*𝔽, return *+0*𝔽.
1. If _n_ < *-0*𝔽 and _n_ ≥ *-0.5*𝔽, return *-0*𝔽.
1. Return the integral Number closest to _n_, preferring the Number closer to +∞ in the case of a tie.
@@ -31941,7 +31947,7 @@ Math.sign ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, or _n_ is *-0*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, or *-0*𝔽, return _n_.
1. If _n_ < *-0*𝔽, return *-1*𝔽.
1. Return *1*𝔽.
@@ -31953,8 +31959,8 @@ Math.sin ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, or _n_ is *-0*𝔽, return _n_.
- 1. If _n_ is *+∞*𝔽 or _n_ is *-∞*𝔽, return *NaN*.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, or *-0*𝔽, return _n_.
+ 1. If _n_ is either *+∞*𝔽 or *-∞*𝔽, return *NaN*.
1. Return an implementation-approximated Number value representing the result of the sine of ℝ(_n_).
@@ -31965,7 +31971,7 @@ Math.sinh ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, _n_ is *-0*𝔽, _n_ is *+∞*𝔽, or _n_ is *-∞*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, *-0*𝔽, *+∞*𝔽, or *-∞*𝔽, return _n_.
1. Return an implementation-approximated Number value representing the result of the hyperbolic sine of ℝ(_n_).
@@ -31979,7 +31985,7 @@ Math.sqrt ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, _n_ is *-0*𝔽, or _n_ is *+∞*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, *-0*𝔽, or *+∞*𝔽, return _n_.
1. If _n_ < *-0*𝔽, return *NaN*.
1. Return an implementation-approximated Number value representing the result of the square root of ℝ(_n_).
@@ -31991,8 +31997,8 @@ Math.tan ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, or _n_ is *-0*𝔽, return _n_.
- 1. If _n_ is *+∞*𝔽, or _n_ is *-∞*𝔽, return *NaN*.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, or *-0*𝔽, return _n_.
+ 1. If _n_ is either *+∞*𝔽 or *-∞*𝔽, return *NaN*.
1. Return an implementation-approximated Number value representing the result of the tangent of ℝ(_n_).
@@ -32003,7 +32009,7 @@ Math.tanh ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, or _n_ is *-0*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, or *-0*𝔽, return _n_.
1. If _n_ is *+∞*𝔽, return *1*𝔽.
1. If _n_ is *-∞*𝔽, return *-1*𝔽.
1. Return an implementation-approximated Number value representing the result of the hyperbolic tangent of ℝ(_n_).
@@ -32019,7 +32025,7 @@ Math.trunc ( _x_ )
It performs the following steps when called:
1. Let _n_ be ? ToNumber(_x_).
- 1. If _n_ is *NaN*, _n_ is *+0*𝔽, _n_ is *-0*𝔽, _n_ is *+∞*𝔽, or _n_ is *-∞*𝔽, return _n_.
+ 1. If _n_ is any of *NaN*, *+0*𝔽, *-0*𝔽, *+∞*𝔽, or *-∞*𝔽, return _n_.
1. If _n_ < *1*𝔽 and _n_ > *+0*𝔽, return *+0*𝔽.
1. If _n_ < *-0*𝔽 and _n_ > *-1*𝔽, return *-0*𝔽.
1. Return the integral Number nearest _n_ in the direction of *+0*𝔽.
@@ -33429,7 +33435,7 @@ Date.prototype [ @@toPrimitive ] ( _hint_ )
1. Let _O_ be the *this* value.
1. If Type(_O_) is not Object, throw a *TypeError* exception.
- 1. If _hint_ is *"string"* or *"default"*, then
+ 1. If _hint_ is either *"string"* or *"default"*, then
1. Let _tryFirst_ be ~string~.
1. Else if _hint_ is *"number"*, then
1. Let _tryFirst_ be ~number~.
@@ -33774,7 +33780,7 @@ String.prototype.lastIndexOf ( _searchString_ [ , _position_ ] )
1. Let _searchLen_ be the length of _searchStr_.
1. For each non-negative integer _i_ starting with _start_ such that _i_ ≤ _len_ - _searchLen_, in descending order, do
1. Let _candidate_ be the substring of _S_ from _i_ to _i_ + _searchLen_.
- 1. If _candidate_ is the same sequence of code units as _searchStr_, return 𝔽(_i_).
+ 1. If _candidate_ is _searchStr_, return 𝔽(_i_).
1. Return *-1*𝔽.
@@ -33878,7 +33884,7 @@ String.prototype.normalize ( [ _form_ ] )
1. Let _S_ be ? ToString(_O_).
1. If _form_ is *undefined*, let _f_ be *"NFC"*.
1. Else, let _f_ be ? ToString(_form_).
- 1. If _f_ is not one of *"NFC"*, *"NFD"*, *"NFKC"*, or *"NFKD"*, throw a *RangeError* exception.
+ 1. If _f_ is not any of *"NFC"*, *"NFD"*, *"NFKC"*, or *"NFKD"*, throw a *RangeError* exception.
1. Let _ns_ be the String value that is the result of normalizing _S_ into the normalization form named by _f_ as specified in https://unicode.org/reports/tr15/.
1. Return _ns_.
@@ -35436,7 +35442,7 @@
1. Assert: _c_ is a Continuation.
1. Let _Input_ be _x_'s _input_.
1. Let _e_ be _x_'s _endIndex_.
- 1. If _e_ = 0, or if _rer_.[[Multiline]] is *true* and the character _Input_[_e_ - 1] is one of |LineTerminator|, then
+ 1. If _e_ = 0 or _rer_.[[Multiline]] is *true* and the character _Input_[_e_ - 1] is matched by |LineTerminator|, then
1. Return _c_(_x_).
1. Return ~failure~.
@@ -35451,7 +35457,7 @@
1. Let _Input_ be _x_'s _input_.
1. Let _e_ be _x_'s _endIndex_.
1. Let _InputLength_ be the number of elements in _Input_.
- 1. If _e_ = _InputLength_, or if _rer_.[[Multiline]] is *true* and the character _Input_[_e_] is one of |LineTerminator|, then
+ 1. If _e_ = _InputLength_ or _rer_.[[Multiline]] is *true* and the character _Input_[_e_] is matched by |LineTerminator|, then
1. Return _c_(_x_).
1. Return ~failure~.
@@ -35464,7 +35470,7 @@
1. Let _e_ be _x_'s _endIndex_.
1. Let _a_ be IsWordChar(_rer_, _Input_, _e_ - 1).
1. Let _b_ be IsWordChar(_rer_, _Input_, _e_).
- 1. If _a_ is *true* and _b_ is *false*, or if _a_ is *false* and _b_ is *true*, return _c_(_x_).
+ 1. If _a_ is *true* and _b_ is *false*, or _a_ is *false* and _b_ is *true*, return _c_(_x_).
1. Return ~failure~.
Assertion :: `\` `B`
@@ -35476,7 +35482,7 @@
1. Let _e_ be _x_'s _endIndex_.
1. Let _a_ be IsWordChar(_rer_, _Input_, _e_ - 1).
1. Let _b_ be IsWordChar(_rer_, _Input_, _e_).
- 1. If _a_ is *true* and _b_ is *true*, or if _a_ is *false* and _b_ is *false*, return _c_(_x_).
+ 1. If _a_ is *true* and _b_ is *true*, or _a_ is *false* and _b_ is *false*, return _c_(_x_).
1. Return ~failure~.
Assertion :: `(` `?` `=` Disjunction `)`
@@ -36131,7 +36137,7 @@
1. Else, let _P_ be ? ToString(_pattern_).
1. If _flags_ is *undefined*, let _F_ be the empty String.
1. Else, let _F_ be ? ToString(_flags_).
- 1. If _F_ contains any code unit other than *"d"*, *"g"*, *"i"*, *"m"*, *"s"*, *"u"*, or *"y"* or if it contains the same code unit more than once, throw a *SyntaxError* exception.
+ 1. If _F_ contains any code unit other than *"d"*, *"g"*, *"i"*, *"m"*, *"s"*, *"u"*, or *"y"*, or _F_ contains the same code unit more than once, throw a *SyntaxError* exception.
1. If _F_ contains *"i"*, let _i_ be *true*; else let _i_ be *false*.
1. If _F_ contains *"m"*, let _m_ be *true*; else let _m_ be *false*.
1. If _F_ contains *"s"*, let _s_ be *true*; else let _s_ be *false*.
@@ -36426,7 +36432,7 @@
1. If _S_ is the empty String, return 0.
1. Let _codepoints_ be StringToCodePoints(_S_).
- 1. Let _eUTF_ be the smallest index into _S_ that corresponds to the character at element _e_ of _codepoints_. If _e_ is greater than or equal to the number of elements in _codepoints_, then _eUTF_ is the length of _S_.
+ 1. Let _eUTF_ be the smallest index into _S_ that corresponds to the character at element _e_ of _codepoints_. If _e_ ≥ the number of elements in _codepoints_, then _eUTF_ is the length of _S_.
1. Return _eUTF_.
@@ -37666,8 +37672,7 @@ Array.prototype.indexOf ( _searchElement_ [ , _fromIndex_ ] )
1. Let _kPresent_ be ? HasProperty(_O_, ! ToString(𝔽(_k_))).
1. If _kPresent_ is *true*, then
1. Let _elementK_ be ? Get(_O_, ! ToString(𝔽(_k_))).
- 1. Let _same_ be IsStrictlyEqual(_searchElement_, _elementK_).
- 1. If _same_ is *true*, return 𝔽(_k_).
+ 1. If IsStrictlyEqual(_searchElement_, _elementK_) is *true*, return 𝔽(_k_).
1. Set _k_ to _k_ + 1.
1. Return *-1*𝔽.
@@ -37690,7 +37695,7 @@ Array.prototype.join ( _separator_ )
1. Repeat, while _k_ < _len_,
1. If _k_ > 0, set _R_ to the string-concatenation of _R_ and _sep_.
1. Let _element_ be ? Get(_O_, ! ToString(𝔽(_k_))).
- 1. If _element_ is *undefined* or *null*, let _next_ be the empty String; otherwise, let _next_ be ? ToString(_element_).
+ 1. If _element_ is either *undefined* or *null*, let _next_ be the empty String; otherwise, let _next_ be ? ToString(_element_).
1. Set _R_ to the string-concatenation of _R_ and _next_.
1. Set _k_ to _k_ + 1.
1. Return _R_.
@@ -37730,8 +37735,7 @@ Array.prototype.lastIndexOf ( _searchElement_ [ , _fromIndex_ ] )
1. Let _kPresent_ be ? HasProperty(_O_, ! ToString(𝔽(_k_))).
1. If _kPresent_ is *true*, then
1. Let _elementK_ be ? Get(_O_, ! ToString(𝔽(_k_))).
- 1. Let _same_ be IsStrictlyEqual(_searchElement_, _elementK_).
- 1. If _same_ is *true*, return 𝔽(_k_).
+ 1. If IsStrictlyEqual(_searchElement_, _elementK_) is *true*, return 𝔽(_k_).
1. Set _k_ to _k_ - 1.
1. Return *-1*𝔽.
@@ -38239,7 +38243,7 @@ Array.prototype.toLocaleString ( [ _reserved1_ [ , _reserved2_ ] ] )
1. If _k_ > 0, then
1. Set _R_ to the string-concatenation of _R_ and _separator_.
1. Let _nextElement_ be ? Get(_array_, ! ToString(𝔽(_k_))).
- 1. If _nextElement_ is not *undefined* or *null*, then
+ 1. If _nextElement_ is not either *undefined* or *null*, then
1. Let _S_ be ? ToString(? Invoke(_nextElement_, *"toLocaleString"*)).
1. Set _R_ to the string-concatenation of _R_ and _S_.
1. Set _k_ to _k_ + 1.
@@ -39113,8 +39117,7 @@ %TypedArray%.prototype.indexOf ( _searchElement_ [ , _fromIndex_ ] )
1. Let _kPresent_ be ! HasProperty(_O_, ! ToString(𝔽(_k_))).
1. If _kPresent_ is *true*, then
1. Let _elementK_ be ! Get(_O_, ! ToString(𝔽(_k_))).
- 1. Let _same_ be IsStrictlyEqual(_searchElement_, _elementK_).
- 1. If _same_ is *true*, return 𝔽(_k_).
+ 1. If IsStrictlyEqual(_searchElement_, _elementK_) is *true*, return 𝔽(_k_).
1. Set _k_ to _k_ + 1.
1. Return *-1*𝔽.
@@ -39173,8 +39176,7 @@ %TypedArray%.prototype.lastIndexOf ( _searchElement_ [ , _fromIndex_ ] )
𝔽.
@@ -39344,18 +39346,16 @@
1. If _targetOffset_ is +∞, throw a *RangeError* exception.
1. If _srcLength_ + _targetOffset_ > _targetLength_, throw a *RangeError* exception.
1. If _target_.[[ContentType]] ≠ _source_.[[ContentType]], throw a *TypeError* exception.
- 1. If both IsSharedArrayBuffer(_srcBuffer_) and IsSharedArrayBuffer(_targetBuffer_) are *true*, then
- 1. If _srcBuffer_.[[ArrayBufferData]] and _targetBuffer_.[[ArrayBufferData]] are the same Shared Data Block values, let _same_ be *true*; else let _same_ be *false*.
- 1. Else, let _same_ be SameValue(_srcBuffer_, _targetBuffer_).
- 1. If _same_ is *true*, then
+ 1. If IsSharedArrayBuffer(_srcBuffer_) is *true*, IsSharedArrayBuffer(_targetBuffer_) is *true*, and _srcBuffer_.[[ArrayBufferData]] is _targetBuffer_.[[ArrayBufferData]], let _sameSharedArrayBuffer_ be *true*; otherwise, let _sameSharedArrayBuffer_ be *false*.
+ 1. If SameValue(_srcBuffer_, _targetBuffer_) is *true* or _sameSharedArrayBuffer is *true*, then
1. Let _srcByteLength_ be _source_.[[ByteLength]].
1. Set _srcBuffer_ to ? CloneArrayBuffer(_srcBuffer_, _srcByteOffset_, _srcByteLength_).
1. Let _srcByteIndex_ be 0.
1. Else, let _srcByteIndex_ be _srcByteOffset_.
1. Let _targetByteIndex_ be _targetOffset_ × _targetElementSize_ + _targetByteOffset_.
1. Let _limit_ be _targetByteIndex_ + _targetElementSize_ × _srcLength_.
- 1. If _srcType_ is the same as _targetType_, then
- 1. NOTE: If _srcType_ and _targetType_ are the same, the transfer must be performed in a manner that preserves the bit-level encoding of the source data.
+ 1. If _srcType_ is _targetType_, then
+ 1. NOTE: If _srcType_ is _targetType_, the transfer must be performed in a manner that preserves the bit-level encoding of the source data.
1. Repeat, while _targetByteIndex_ < _limit_,
1. Let _value_ be GetValueFromBuffer(_srcBuffer_, _srcByteIndex_, ~Uint8~, *true*, ~Unordered~).
1. Perform SetValueInBuffer(_targetBuffer_, _targetByteIndex_, ~Uint8~, _value_, *true*, ~Unordered~).
@@ -39425,7 +39425,7 @@ %TypedArray%.prototype.slice ( _start_, _end_ )
1. If IsDetachedBuffer(_O_.[[ViewedArrayBuffer]]) is *true*, throw a *TypeError* exception.
1. Let _srcType_ be TypedArrayElementType(_O_).
1. Let _targetType_ be TypedArrayElementType(_A_).
- 1. If _srcType_ is different from _targetType_, then
+ 1. If _srcType_ is not _targetType_, then
1. Let _n_ be 0.
1. Repeat, while _k_ < _final_,
1. Let _Pk_ be ! ToString(𝔽(_k_)).
@@ -39437,7 +39437,7 @@ %TypedArray%.prototype.slice ( _start_, _end_ )
1. Let _srcBuffer_ be _O_.[[ViewedArrayBuffer]].
1. Let _targetBuffer_ be _A_.[[ViewedArrayBuffer]].
1. Let _elementSize_ be TypedArrayElementSize(_O_).
- 1. NOTE: If _srcType_ and _targetType_ are the same, the transfer must be performed in a manner that preserves the bit-level encoding of the source data.
+ 1. NOTE: If _srcType_ is _targetType_, the transfer must be performed in a manner that preserves the bit-level encoding of the source data.
1. Let _srcByteOffset_ be _O_.[[ByteOffset]].
1. Let _srcByteIndex_ be (_k_ × _elementSize_) + _srcByteOffset_.
1. Let _targetByteIndex_ be _A_.[[ByteOffset]].
@@ -39507,7 +39507,7 @@ %TypedArray%.prototype.sort ( _comparefn_ )
%TypedArray%.prototype.subarray ( _begin_, _end_ )
- This method returns a new _TypedArray_ whose element type is the same as this _TypedArray_ and whose ArrayBuffer is the same as the ArrayBuffer of this _TypedArray_, referencing the elements at _begin_, inclusive, up to _end_, exclusive. If either _begin_ or _end_ is negative, it refers to an index from the end of the array, as opposed to from the beginning.
+ This method returns a new _TypedArray_ whose element type is the same as the element type of this _TypedArray_ and whose ArrayBuffer is the same as the ArrayBuffer of this _TypedArray_, referencing the elements at _begin_, inclusive, up to _end_, exclusive. If either _begin_ or _end_ is negative, it refers to an index from the end of the array, as opposed to from the beginning.
It performs the following steps when called:
1. Let _O_ be the *this* value.
@@ -39731,7 +39731,7 @@
1. Let _obj_ be IntegerIndexedObjectCreate(_proto_).
1. Assert: _obj_.[[ViewedArrayBuffer]] is *undefined*.
1. Set _obj_.[[TypedArrayName]] to _constructorName_.
- 1. If _constructorName_ is *"BigInt64Array"* or *"BigUint64Array"*, set _obj_.[[ContentType]] to ~BigInt~.
+ 1. If _constructorName_ is either *"BigInt64Array"* or *"BigUint64Array"*, set _obj_.[[ContentType]] to ~BigInt~.
1. Otherwise, set _obj_.[[ContentType]] to ~Number~.
1. If _length_ is not present, then
1. Set _obj_.[[ByteLength]] to 0.
@@ -39762,7 +39762,7 @@
1. Let _srcByteOffset_ be _srcArray_.[[ByteOffset]].
1. Let _elementLength_ be _srcArray_.[[ArrayLength]].
1. Let _byteLength_ be _elementSize_ × _elementLength_.
- 1. If _elementType_ is the same as _srcType_, then
+ 1. If _elementType_ is _srcType_, then
1. Let _data_ be ? CloneArrayBuffer(_srcData_, _srcByteOffset_, _byteLength_).
1. Else,
1. Let _data_ be ? AllocateArrayBuffer(%ArrayBuffer%, _byteLength_).
@@ -40107,7 +40107,7 @@ Map.prototype.forEach ( _callbackfn_ [ , _thisArg_ ] )
1. Let _numEntries_ be the number of elements of _entries_.
1. Let _index_ be 0.
1. Repeat, while _index_ < _numEntries_,
- 1. Let _e_ be the Record { [[Key]], [[Value]] } that is the value of _entries_[_index_].
+ 1. Let _e_ be the Record { [[Key]], [[Value]] } that is _entries_[_index_].
1. Set _index_ to _index_ + 1.
1. If _e_.[[Key]] is not ~empty~, then
1. Perform ? Call(_callbackfn_, _thisArg_, « _e_.[[Value]], _e_.[[Key]], _M_ »).
@@ -40238,7 +40238,7 @@
1. Let _index_ be 0.
1. Let _numEntries_ be the number of elements of _entries_.
1. Repeat, while _index_ < _numEntries_,
- 1. Let _e_ be the Record { [[Key]], [[Value]] } that is the value of _entries_[_index_].
+ 1. Let _e_ be the Record { [[Key]], [[Value]] } that is _entries_[_index_].
1. Set _index_ to _index_ + 1.
1. If _e_.[[Key]] is not ~empty~, then
1. If _kind_ is ~key~, let _result_ be _e_.[[Key]].
@@ -40972,7 +40972,7 @@
It verifies if the argument _type_ is an unsigned TypedArray element type.
- 1. If _type_ is ~Uint8~, ~Uint8C~, ~Uint16~, ~Uint32~, or ~BigUint64~, return *true*.
+ 1. If _type_ is any of ~Uint8~, ~Uint8C~, ~Uint16~, ~Uint32~, or ~BigUint64~, return *true*.
1. Return *false*.
@@ -40988,7 +40988,7 @@
It verifies if the argument _type_ is an Integer TypedArray element type not including ~Uint8C~.
- 1. If _type_ is ~Int8~, ~Uint8~, ~Int16~, ~Uint16~, ~Int32~, or ~Uint32~, return *true*.
+ 1. If _type_ is any of ~Int8~, ~Uint8~, ~Int16~, ~Uint16~, ~Int32~, or ~Uint32~, return *true*.
1. Return *false*.
@@ -41004,7 +41004,7 @@
It verifies if the argument _type_ is a BigInt TypedArray element type.
- 1. If _type_ is ~BigUint64~ or ~BigInt64~, return *true*.
+ 1. If _type_ is either ~BigUint64~ or ~BigInt64~, return *true*.
1. Return *false*.
@@ -41020,7 +41020,7 @@
1. If IsUnclampedIntegerElementType(_type_) is *true*, return *true*.
- 1. If IsBigIntElementType(_type_) is *true* and _order_ is not ~Init~ or ~Unordered~, return *true*.
+ 1. If IsBigIntElementType(_type_) is *true* and _order_ is neither ~Init~ nor ~Unordered~, return *true*.
1. Return *false*.
@@ -42350,7 +42350,7 @@ Atomics.wait ( _typedArray_, _index_, _value_, _timeout_ )
1. If _typedArray_.[[TypedArrayName]] is *"BigInt64Array"*, let _v_ be ? ToBigInt64(_value_).
1. Otherwise, let _v_ be ? ToInt32(_value_).
1. Let _q_ be ? ToNumber(_timeout_).
- 1. If _q_ is *NaN* or *+∞*𝔽, let _t_ be +∞; else if _q_ is *-∞*𝔽, let _t_ be 0; else let _t_ be max(ℝ(_q_), 0).
+ 1. If _q_ is either *NaN* or *+∞*𝔽, let _t_ be +∞; else if _q_ is *-∞*𝔽, let _t_ be 0; else let _t_ be max(ℝ(_q_), 0).
1. Let _B_ be AgentCanSuspend().
1. If _B_ is *false*, throw a *TypeError* exception.
1. Let _block_ be _buffer_.[[ArrayBufferData]].
@@ -44840,7 +44840,7 @@ prototype
Whenever a GeneratorFunction instance is created another ordinary object is also created and is the initial value of the generator function's *"prototype"* property. The value of the prototype property is used to initialize the [[Prototype]] internal slot of a newly created Generator when the generator function object is invoked using [[Call]].
This property has the attributes { [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.
- Unlike Function instances, the object that is the value of the a GeneratorFunction's *"prototype"* property does not have a *"constructor"* property whose value is the GeneratorFunction instance.
+ Unlike Function instances, the object that is the value of a GeneratorFunction's *"prototype"* property does not have a *"constructor"* property whose value is the GeneratorFunction instance.
@@ -44947,7 +44947,7 @@ prototype
Whenever an AsyncGeneratorFunction instance is created another ordinary object is also created and is the initial value of the async generator function's *"prototype"* property. The value of the prototype property is used to initialize the [[Prototype]] internal slot of a newly created AsyncGenerator when the generator function object is invoked using [[Call]].
This property has the attributes { [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.
- Unlike function instances, the object that is the value of the an AsyncGeneratorFunction's *"prototype"* property does not have a *"constructor"* property whose value is the AsyncGeneratorFunction instance.
+ Unlike function instances, the object that is the value of an AsyncGeneratorFunction's *"prototype"* property does not have a *"constructor"* property whose value is the AsyncGeneratorFunction instance.
@@ -45112,7 +45112,7 @@
1. Perform ? RequireInternalSlot(_generator_, [[GeneratorState]]).
1. Perform ? RequireInternalSlot(_generator_, [[GeneratorBrand]]).
- 1. If _generator_.[[GeneratorBrand]] is not the same value as _generatorBrand_, throw a *TypeError* exception.
+ 1. If _generator_.[[GeneratorBrand]] is not _generatorBrand_, throw a *TypeError* exception.
1. Assert: _generator_ also has a [[GeneratorContext]] internal slot.
1. Let _state_ be _generator_.[[GeneratorState]].
1. If _state_ is ~executing~, throw a *TypeError* exception.
@@ -45465,7 +45465,7 @@
1. Perform ? RequireInternalSlot(_generator_, [[AsyncGeneratorContext]]).
1. Perform ? RequireInternalSlot(_generator_, [[AsyncGeneratorState]]).
1. Perform ? RequireInternalSlot(_generator_, [[AsyncGeneratorQueue]]).
- 1. If _generator_.[[GeneratorBrand]] is not the same value as _generatorBrand_, throw a *TypeError* exception.
+ 1. If _generator_.[[GeneratorBrand]] is not _generatorBrand_, throw a *TypeError* exception.
1. Return ~unused~.
@@ -46364,7 +46364,7 @@
1. Let _events_ be an empty Set.
1. For each event _E_ of EventSet(_execution_), do
- 1. If _E_ is a ReadSharedMemory, WriteSharedMemory, or ReadModifyWriteSharedMemory event, add _E_ to _events_.
+ 1. If _E_ is any of a ReadSharedMemory, WriteSharedMemory, or ReadModifyWriteSharedMemory event, add _E_ to _events_.
1. Return _events_.
@@ -47534,7 +47534,7 @@ escape ( _string_ )
1. Let _k_ be 0.
1. Repeat, while _k_ < _length_,
1. Let _char_ be the code unit (represented as a 16-bit unsigned integer) at index _k_ within _string_.
- 1. If _char_ is one of the code units in *"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@\*_+-./"*, then
+ 1. If _char_ is any of the code units in *"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@\*_+-./"*, then
1. Let _S_ be the String value containing the single code unit _char_.
1. Else if _char_ ≥ 256, then
1. Let _n_ be the numeric value of _char_.
@@ -47992,7 +47992,7 @@ Changes to EvalDeclarationInstantiation
1. Let _bindingExists_ be *false*.
1. Let _thisEnv_ be _lexEnv_.
1. Assert: The following loop will terminate.
- 1. Repeat, while _thisEnv_ is not the same as _varEnv_,
+ 1. Repeat, while _thisEnv_ is not _varEnv_,
1. If _thisEnv_ is not an Object Environment Record, then
1. If ! _thisEnv_.HasBinding(_F_) is *true*, then
1. [id="step-evaldeclarationinstantiation-web-compat-bindingexists"] Let _bindingExists_ be *true*.
@@ -48197,7 +48197,7 @@ Changes to IsLooselyEqual
1. Perform the following steps:
1. If Type(_x_) is Object and _x_ has an [[IsHTMLDDA]] internal slot and _y_ is either *null* or *undefined*, return *true*.
- 1. If _x_ is either *null* or *undefined* and Type(_y_) is Object and _y_ has an [[IsHTMLDDA]] internal slot, return *true*.
+ 1. If _x_ is either *null* or *undefined*, Type(_y_) is Object, and _y_ has an [[IsHTMLDDA]] internal slot, return *true*.