Signatur
Beschreibung
Der Kleiner-als-Operator (<) ist ein binärer Vergleichsoperator, der zwei Werte miteinander vergleicht und einen booleschen Wert zurückgibt. Das Ergebnis ist true, wenn der linke Operand kleiner als der rechte ist, andernfalls false.
Der Vergleich folgt dem Abstract Relational Comparison-Algorithmus der ECMAScript-Spezifikation. Sind beide Operanden Zeichenketten, werden sie lexikografisch (Zeichen für Zeichen anhand ihrer Unicode-Codepunkte) verglichen. In allen anderen Fällen werden die Operanden zunächst in Zahlen umgewandelt (via ToNumeric). Sonderwerte wie NaN, undefined oder nicht-numerische Zeichenketten können dabei zu unerwarteten Ergebnissen führen.
Typische Einsatzgebiete sind Bedingungsprüfungen in if-Anweisungen, Schleifenbedingungen (for, while) sowie beim Sortieren und Filtern von Daten. Im Gegensatz zu den Gleichheitsoperatoren (==, ===) nimmt < keine strenge Typ-Überprüfung vor, sondern konvertiert die Operanden implizit.
1 < 2→true"apple" < "banana"→true(lexikografisch)"10" < 9→false(Zeichenkette wird zu Zahl 10)NaN < 1→false(jeder Vergleich mitNaNistfalse)
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $a Pflicht | number | string | bigint | boolean | null | undefined | object | — | Der linke Operand. Wird bei nicht-string-Vergleichen via ToNumeric in einen numerischen Wert umgewandelt. |
| $b Pflicht | number | string | bigint | boolean | null | undefined | object | — | Der rechte Operand. Wird bei nicht-string-Vergleichen via ToNumeric in einen numerischen Wert umgewandelt. |
Rückgabewert
true zurück, wenn a kleiner als b ist. Gibt false zurück, wenn a größer oder gleich b ist, oder wenn einer der Operanden NaN ist.Beispiele
Zahlenvergleich in einer if-Bedingung
const alter = 17;
if (alter < 18) {
console.log("Minderjährig");
} else {
console.log("Volljährig");
}
Schleife mit Kleiner-als
const punkte = [42, 17, 99, 56, 23];
const schwellwert = 50;
const niedrigePunkte = punkte.filter(p => p < schwellwert);
console.log(niedrigePunkte);
Lexikografischer Zeichenketten-Vergleich
const woerter = ["Banane", "Apfel", "Kirsche"];
const sortiert = woerter.sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
console.log(sortiert);
Fallstrick: Implizite Typkonvertierung
console.log("5" < 10); // String "5" → Zahl 5
console.log(null < 1); // null → 0
console.log(false < 1); // false → 0
console.log(NaN < 100); // immer false!
console.log(undefined < 1); // undefined → NaN → false
// Wichtig · Fallstricke
Zeichenketten-Vergleich: Sind beide Operanden Zeichenketten, wird zeichenweise anhand der Unicode-Codepunkte verglichen. Das kann bei gemischter Groß-/Kleinschreibung überraschend sein: "Z" < "a" ergibt true, da Z (U+005A) einen kleineren Codepunkt als a (U+0061) hat. Für eine sprachkorrekte Sortierung sollte stattdessen String.prototype.localeCompare() verwendet werden.
NaN-Besonderheit: Jeder Vergleich, bei dem einer der Operanden zu NaN wird (z. B. undefined, "abc"), gibt immer false zurück — auch NaN < NaN und NaN > NaN sind beide false.
BigInt und Number mischen: BigInt-Werte können mit dem <-Operator direkt mit gewöhnlichen Zahlen (number) verglichen werden: 2n < 3 ergibt true. Das Mischen von BigInt und string hingegen führt zu false, da die Zeichenkette in NaN konvertiert wird.