Javascript Looselyequal-Algorithmus

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Javascript Looselyequal-Algorithmus

by Guest » 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 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.
Gemäß diesem Algorithmus, wenn entweder x oder y NaN ist, Schritt 5, 6, 9, 10, 11, 12 kosten Laufzeit und das Ergebnis muss falsch sein.
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.

Top