Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Ausdrücke und Operatoren
  5. Kleiner als (<)

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

Kleiner als (<)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Juli 2015⁩.

DerKleiner-als (<)-Operator gibttrue zurück, wenn der linke Operand kleiner als der rechte Operand ist, undfalse andernfalls.

Probieren Sie es aus

console.log(5 < 3);// Expected output: falseconsole.log(3 < 3);// Expected output: false// Compare bigint to numberconsole.log(3n < 5);// Expected output: trueconsole.log("aa" < "ab");// Expected output: true

Syntax

js
x < y

Beschreibung

Die Operanden werden mit mehreren Runden der Typumwandlung verglichen, die wie folgt zusammengefasst werden können:

  • Zuerst werden Objektein Primitives umgewandelt, indem ihre Methoden[Symbol.toPrimitive]() (mit dem Hinweis"number"),valueOf() undtoString() in dieser Reihenfolge aufgerufen werden. Der linke Operand wird immer vor dem rechten umgewandelt. Beachten Sie, dass obwohl[Symbol.toPrimitive]() mit dem Hinweis"number" aufgerufen wird (was bedeutet, dass eine leichte Präferenz besteht, dass das Objekt zu einer Zahl wird), der Rückgabewert nicht in eine Zahlumgewandelt wird, da Zeichenketten weiterhin speziell behandelt werden.
  • Wenn beide Werte Zeichenketten sind, werden sie als Zeichenketten verglichen, basierend auf den Werten der von ihnen enthaltenen UTF-16-Codeeinheiten (nicht Unicode-Codepunkten).
  • Andernfalls versucht JavaScript, nicht-numerische Typen in numerische Werte umzuwandeln:
    • Die booleschen Wertetrue undfalse werden in 1 bzw. 0 umgewandelt.
    • null wird in 0 umgewandelt.
    • undefined wird inNaN umgewandelt.
    • Zeichenketten werden basierend auf den von ihnen enthaltenen Werten umgewandelt und inNaN umgewandelt, wenn sie keine numerischen Werte enthalten.
  • Wenn einer der WerteNaN ist, gibt der Operatorfalse zurück.
  • Andernfalls werden die Werte als numerische Werte verglichen. BigInt- und Zahlenwerte können miteinander verglichen werden.

Andere Operatoren, darunter>,>= und<=, verwenden denselben Algorithmus wie<. Es gibt zwei Fälle, in denen alle vier Operatorenfalse zurückgeben:

  • Wenn einer der Operanden in einen BigInt umgewandelt wird, während der andere in eine Zeichenkette umgewandelt wird, die nicht in einen BigInt-Wert konvertiert werden kann (es wird einSyntaxfehler ausgelöst, wenn er anBigInt() übergeben wird).
  • Wenn einer der Operanden inNaN umgewandelt wird. (Zum Beispiel Zeichenketten, die nicht in Zahlen umgewandelt werden können, oderundefined.)

Für alle anderen Fälle haben die vier Operatoren die folgenden Beziehungen:

js
x < y === !(x >= y);x <= y === !(x > y);x > y === y < x;x >= y === y <= x;

Hinweis:Ein beobachtbarer Unterschied zwischen< und> ist die Reihenfolge der Umwandlung, insbesondere wenn die Umwandlung in ein Primitive Nebeneffekte hat. Alle Vergleichsoperatoren wandeln den linken Operand vor dem rechten um.

Beispiele

Vergleich von Zeichenkette zu Zeichenkette

js
"a" < "b"; // true"a" < "a"; // false"a" < "3"; // false"\uD855\uDE51" < "\uFF3A"; // true

Vergleich von Zeichenkette zu Zahl

js
"5" < 3; // false"3" < 3; // false"3" < 5; // true"hello" < 5; // false5 < "hello"; // false"5" < 3n; // false"3" < 5n; // true

Vergleich von Zahl zu Zahl

js
5 < 3; // false3 < 3; // false3 < 5; // true

Vergleich von Zahl zu BigInt

js
5n < 3; // false3 < 5n; // true

Vergleich von Boolean, null, undefined, NaN

js
true < false; // falsefalse < true; // true0 < true; // truetrue < 1; // falsenull < 0; // falsenull < 1; // trueundefined < 3; // false3 < undefined; // false3 < NaN; // falseNaN < 3; // false

Vergleich mit Nebeneffekten

Vergleiche zwingen always ihre Operanden in Primitives um. Dies bedeutet, dass dasselbe Objekt innerhalb eines Vergleichsausdrucks unterschiedliche Werte haben kann. Zum Beispiel können Sie zwei Werte haben, die beide größer und kleiner als der andere sind.

js
class Mystery {  static #coercionCount = -1;  valueOf() {    Mystery.#coercionCount++;    // The left operand is coerced first, so this will return 0    // Then it returns 1 for the right operand    return Mystery.#coercionCount % 2;  }}const l = new Mystery();const r = new Mystery();console.log(l < r && r < l);// true

Warnung:Dies kann eine Quelle der Verwirrung sein. Wenn Ihre Objekte eine benutzerdefinierte Logik für die Umwandlung in Primitives bereitstellen, stellen Sie sicher, dass sieidempotent ist: Mehrere Umwandlungen sollten denselben Wert zurückgeben.

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-relational-operators

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp