Javascript Looselyequal-Algorithmus
Posted: 05 Jan 2025, 08:30
Da NaN ungleich zu jedem anderen Wert ist, auch zu einem anderen NaN, warum prüft der Looselyequal-Algorithmus in der Javascript-Spezifikation nicht zuerst, ob einer der Operanden NaN ist? Wenn einer der Operanden NaN ist, ist das Ergebnis falsch und es ist keine weitere Verarbeitung erforderlich.
Das Folgende ist der ==-Algorithmus in der Javascript-Spezifikation:
Wenn der erste Schritt ist:
1.if x or y ist NaN, gibt false zurück.
Der Algorithmus kann dieses Ergebnis sofort abrufen und zurückgeben.
Das Folgende ist der ==-Algorithmus in der Javascript-Spezifikation:
- Wenn SameType(x, y) wahr ist, dann
a. Gibt IsStrictlyEqual(x, y) zurück. - Wenn x null und y undefiniert ist, wird true zurückgegeben.
- Wenn x undefiniert und y null ist , true zurückgeben.
- HINWEIS: Dieser Schritt wird in Abschnitt B.3.6.2 ersetzt.
- Wenn x eine Zahl und y ein String ist , zurückkehren ! IsLooselyEqual(x, ! ToNumber(y)).
- Wenn x ein String und y eine Zahl ist, return ! IsLooselyEqual(! ToNumber(x), y).
- Wenn x ein BigInt und y ein String ist, dann
a. Sei n StringToBigInt(y).
b. Wenn n undefiniert ist, geben Sie false zurück.
c. Zurückkehren ! IsLooselyEqual(x, n). - Wenn x ein String und y ein BigInt ist, return ! IsLooselyEqual(y, x).
- Wenn x ein Boolescher Wert ist, gebe zurück! IsLooselyEqual(! ToNumber(x), y).
- Wenn y ein Boolescher Wert ist, return ! IsLooselyEqual(x, ! ToNumber(y)).
- Wenn x entweder ein String, eine Zahl, ein BigInt oder ein Symbol und y ein Objekt ist, return ! IsLooselyEqual(x, ? ToPrimitive(y)).
- Wenn x ein Objekt und y entweder ein String, eine Zahl, ein BigInt oder ein Symbol ist, gebe zurück! IsLooselyEqual(? ToPrimitive(x), y).
- Wenn x ein BigInt und y eine Zahl ist, oder wenn x eine Zahl und y ein BigInt ist, dann
A. Wenn x nicht endlich ist oder y nicht endlich ist, geben Sie false zurück.
b. Wenn ℝ(x) = ℝ(y), gib true zurück; andernfalls false zurückgeben. - False zurückgeben.
Wenn der erste Schritt ist:
1.if x or y ist NaN, gibt false zurück.
Der Algorithmus kann dieses Ergebnis sofort abrufen und zurückgeben.