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.
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: [list] [*]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. [/list] 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.
Ich würde gerne wissen, ob es eine Möglichkeit gibt, den Latex -Wortabstandalgorithmus in eine Website zu integrieren? Ich spreche nicht über Gleichungen.
Um besser zu veranschaulichen, was ich...
Ich möchte den C++-Boost-Algorithmus verwenden, um beliebige Trennzeichen mit mehreren Zeichen aufzuteilen.
Ich habe derzeit Folgendes:
boost::split(tokens, input,...
Ich interessiere mich für einen iterativen Algorithmus für Fibonacci-Zahlen, deshalb habe ich die Formel im Wiki gefunden ... sie sieht einfach aus, also habe ich sie in Python ausprobiert ... es...