
Conversion failure would result in NaN, which will guarantee the equality to be false.
Number to String: convert the string to a Number using the same algorithm as the Number() constructor. Then compare the two operands loosely again.
If one of the operands is a Boolean but the other is not, convert the boolean to a number: true is converted to 1, and false is converted to 0. If one of the operands is a Symbol but the other is not, return false. If they are of the same type, compare them using step 1. The rest of the conversion is done case-by-case. At this step, both operands are converted to primitives (one of String, Number, Boolean, Symbol, and BigInt). (This primitive conversion is the same as the one used in addition.) If one of the operands is an object and the other is a primitive, convert the object to a primitive using the object's (with "default" as hint), valueOf(), and toString() methods, in that order. If one of the operands is null or undefined, the other must also be null or undefined to return true. Symbol: return true only if both operands reference the same symbol. BigInt: return true only if both operands have the same value. Boolean: return true only if operands are both true or both false. If either operand is NaN, return false so, NaN is never equal to NaN. Number: return true only if both operands have the same value. String: return true only if both operands have the same characters in the same order. Object: return true only if both operands reference the same object.
If the operands have the same type, they are compared as follows:. This can be roughly summarized as follows: The equality operators ( = and !=) provide the IsLooselyEqual semantic. Enumerability and ownership of properties. Synta圎rror: unterminated string literal. Synta圎rror: unparenthesized unary expression can't appear on the left-hand side of '**'. Synta圎rror: function statement requires a name. ReferenceError: reference to undefined property "x". ReferenceError: assignment to undeclared variable "x". Synta圎rror: "use strict" not allowed in function with non-simple parameters. Does not equal sign script code#
Warning: unreachable code after return statement. RangeError: repeat count must be less than infinity. Synta圎rror: "x" is a reserved identifier. TypeError: Reduce of empty array with no initial value. Synta圎rror: redeclaration of formal parameter "x". Error: Permission denied to access property "x". RangeError: argument is not a valid code point. TypeError: can't delete non-configurable array element. TypeError: "x" is not a non-null object. RangeError: repeat count must be non-negative. Synta圎rror: missing ) after argument list. Synta圎rror: missing = in const declaration. Synta圎rror: missing } after property list. Synta圎rror: missing } after function body. Synta圎rror: missing : after property id. Synta圎rror: missing ] after element list. Synta圎rror: Malformed formal parameter. TypeError: invalid 'instanceof' operand 'x'. Synta圎rror: a declaration in the head of a for-of loop can't have an initializer. Synta圎rror: for-in loop head declarations may not have initializers. TypeError: invalid assignment to const "x". Synta圎rror: invalid assignment left-hand side. TypeError: cannot use 'in' operator to search for 'x' in 'y'. Synta圎rror: identifier starts immediately after numeric literal. Synta圎rror: Unexpected '#' used outside of class body. TypeError: setting getter-only property "x". Synta圎rror: test for equality (=) mistyped as assignment (=)?. Warning: String.x is deprecated use instead. Synta圎rror: Using to indicate sourceURL pragmas is deprecated. Synta圎rror: "0"-prefixed octal literals and octal escape seq. Warning: expression closures are deprecated. ReferenceError: deprecated caller or arguments usage. Synta圎rror: applying the 'delete' operator to an unqualified name is deprecated. Synta圎rror: cannot use `?` unparenthesized within `||` and `&` expressions. TypeError: can't redefine non-configurable property "x". TypeError: property "x" is non-configurable and can't be deleted. TypeError: can't define property "x": "obj" is not extensible. TypeError: can't convert BigInt to number. RangeError: x can't be converted to BigInt because it isn't an integer. TypeError: can't assign to property "x" on "y": not an object. ReferenceError: can't access lexical declaration 'X' before initialization. TypeError: X.prototype.y called on incompatible type. Synta圎rror: invalid regular expression flag "x". Warning: 08/09 is not a legal ECMA-262 octal constant. Warning: -file- is being assigned a //# sourceMappingURL, but already has one.