Start · Sprachen · JavaScript · Referenz · Kleiner als (<)

Kleiner als (<)

Operator

Der <code>&lt;</code>-Operator (Kleiner-als) gibt <code>true</code> zurück, wenn der linke Operand kleiner als der rechte Operand ist.

seit JavaScript ES1 Kategorie: syntax

Signatur

a < b

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 < 2true
  • "apple" < "banana"true (lexikografisch)
  • "10" < 9false (Zeichenkette wird zu Zahl 10)
  • NaN < 1false (jeder Vergleich mit NaN ist false)

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

Typ
boolean
Beschreibung
Gibt 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");
}
Minderjä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);
[42, 17, 23]

Lexikografischer Zeichenketten-Vergleich

const woerter = ["Banane", "Apfel", "Kirsche"];
const sortiert = woerter.sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
console.log(sortiert);
["Apfel", "Banane", "Kirsche"]

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
true true true false 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.